Pull to refresh

Comments 2

Основная проблема с переменными в ansible — что их можно много где описывать — и потом огрести проблемы с поддержкой. Поэтому необходимо с момента начала реальной эксплуатации вырабатывать некие правила работы с переменными.

Поделюсь своими наработками:
Максимум переменных выносим в роли, из них большинство должно находится в role/defaults/main.yml, то-есть быть переменными по-умолчанию.

Если у вас много переменных, завязанных на конкретный проект|сервис, а роль используется для многих проектов|сервисов, то пока лучшее решение, что я нашел — это напротив хоста или в группе хостов ставить переменную project=bla, а внутри роли импортировать в переменных массив такого вида:
role_foo_vars:
  - { project: 'bla', var1: '/var', var2: 'user', var3: 'group', var4: '42', var5: 'httpd' }
  - { project: 'bar', var1: '/var', var2: 'user2', var3: 'group2', var4: '42', var5: 'apache2' }

в плейбуке строить шаги следующим образом:
    file: path={{ item[0].var1 }} owner={{ item[0].var2 }} group={{ item[0].var3 }} state=directory
    with_nested:
      - role_foo_vars
      - project
    when: "item[0].project == item[1]"

этот шаг будет использовать переменные var1, var2 и var3 из массива, где в переменной project стоит необходимое значение (в нашем случае — bla).
UFO just landed and posted this here
Sign up to leave a comment.