Ansible: как использовать include_role с vars, чтобы управлять очень похожими ролями - PullRequest
0 голосов
/ 10 июля 2020

Мне нужно поддерживать разные версии одной и той же программы, устанавливаемой для наших пользователей, и мне интересно, как лучше всего сделать это масштабируемым образом без массового дублирования. На данный момент мы создаем новую роль для каждой версии программы, поэтому минимальный пример нашей текущей настройки выглядит следующим образом:

-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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...