Какова политика Ansible для определения переменных и констант в каталоге vars, defaults или tasks?

Я прочитал несколько документов, включая этот, и проверил несколько доступных ролей на GitHub, но мне неясно, когда определять переменную и когда определено, где ее поместить, т.е. в defaults, tasks или же vars каталог.

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

по умолчанию

sensu_host: localhost
sensu_home: /etc/sensu
sensu_conf_d: "{{ sensu_home }}/conf.d"

задачи

- name: be sure {{ item }} is installed
  apt:
    name: "{{ item }}"
    state: latest
  with_items:
    - build-essential
    - ntp

или элементы должны быть определены в переменной:

- name: be sure {{ item }} is installed
  apt:
    name: "{{ item }}"
    state: latest
  with_items:
    {{ packages }}

вары

__sensu_repo_url: deb http://sensu.global.ssl.fastly.net/apt sensu main
__sensu_repo_key_url: http://sensu.global.ssl.fastly.net/apt/pubkey.gp

Есть ли определенный контрольный список, например

Если a, b, c, то переменная должна быть объявлена ​​по умолчанию

если d, e, f, то v

если г, ч, я тогда определить его в задачах

╔═══════════╦═════════════════╗
║ directory ║ characteristics ║
╠═══════════╬═════════════════╣
║ defaults  ║ constants, e.g. ║
║ tasks     ║ bla, e.g.       ║
║ vars      ║ variables       ║
╚═══════════╩═════════════════╝

1 ответ

В каталоге vars and defaults отсутствуют политики для определения переменных и констант.

Переменные в role/defaults каталог имеет самый низкий приоритет. Поэтому имеет смысл поместить все переменные, определенные в роли, в role/defaults/main.yml для справки. Если значение переменной по умолчанию зависит от дистрибутива, я помещаю его в vars/{{ ansible_os_family }}.yml и включите это так:

# Variable setup.
- name: Include OS-specific variables.
  include_vars: "{{ ansible_os_family }}.yml"

Я также поместил переменные, которые являются своего рода константы, такие как URL-адреса под vars также.

Но опять-таки нет реальной политики. Это зависит от вас, как делать вещи. Я лично ориентирую свою ролевую структуру и стиль игры на geerlingguy.

Другие вопросы по тегам