Мне нужно поддерживать разные версии одной и той же программы, устанавливаемой для наших пользователей, и мне интересно, как лучше всего сделать это масштабируемым образом без массового дублирования. На данный момент мы создаем новую роль для каждой версии программы, поэтому минимальный пример нашей текущей настройки выглядит следующим образом:
-roles/
-program1.0/
-files/
license1.0.lic
-applications/
program1.0.desktop
-tasks/
main.yml
-program1.1/
-files/
license1.1.lic
-applications/
program1.1.desktop
-tasks/
main.yml
Однако разница между ролями минимальна, а задачи 99% дублирование усилий, за исключением нескольких незначительных отличий: имена файлов и расположение исполняемого файла (/opt/program1.X/bin/program1) в файле .desktop. Явно минимальный пример main.yml
выглядит так:
- name: Install program1.X from self-built rpm
yum:
name: program1.X
- name: Copy across license file
copy:
src: license1.X.lic
dest: /foo/bar/
- name: Copy across desktop shortcut
copy:
src: applications/program1.X.desktop
dest: /etc/xdg/applications/
Затем я устанавливаю одну или несколько из этих программ через
- include_role: name=roles/program1.X
Итак, вот мой вопрос: есть ли лучший и более общий способ сделать это? Например, передав переменные в include_role?
Я сейчас использую ansible 2.9.1.