Eu li vários documentos, incluindo este, e verifiquei várias funções ansible no GitHub, mas não está claro para mim quando definir uma variável e quando definir onde colocá-la, ou seja, no diretório defaults
, tasks
ou vars
.
Gostaria de receber orientações para não ter que gastar muito tempo pensando se uma variável é necessária e se for o caso onde colocá-la.
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
ou os itens devem ser definidos em uma variável:
- 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
Existe uma determinada lista de verificação, por exemplo
Se a, b, c então a variável precisa ser declarada nos padrões
se d, e, f então o v
se g, h, eu então defino em tarefas
╔═══════════╦═════════════════╗
║ directory ║ characteristics ║
╠═══════════╬═════════════════╣
║ defaults ║ constants, e.g. ║
║ tasks ║ bla, e.g. ║
║ vars ║ variables ║
╚═══════════╩═════════════════╝
Não há políticas para definir variáveis e constantes no diretório vars e defaults.
As variáveis no
role/defaults
diretório têm a prioridade mais baixa. Portanto, faz sentido colocar todas as variáveis definidas no papelrole/defaults/main.yml
como referência. Se o valor padrão de uma variável depende da distribuição, eu o colocovars/{{ ansible_os_family }}.yml
e o incluo assim:Eu também coloquei variáveis que são constantes como URLs
vars
também.Mas, novamente, não há políticas reais. Cabe a você como fazer as coisas. Eu pessoalmente oriento minha estrutura de funções e estilo de manual por geerlingguy .