Qual é a hierarquia de variáveis em diferentes funções de DevOps?
sobes.tech IA
Resposta da IA
A hierarquia de variáveis no DevOps geralmente refere-se aos sistemas de gestão de configuração, como Ansible, Puppet ou Chef, onde diferentes níveis de definição de variáveis têm prioridades diferentes. No contexto do Ansible, isto é assim:
- Extra Vars (a partir da linha de comando com
-e) - Lookup Variables (por exemplo, usando
{{ lookup(...) }}) - Variáveis Reservadas (variáveis predefinidas do Ansible, como
hostvars,group_names,inventory_hostname) - Variáveis de Inventário
- Variáveis de Grupo (
group_vars/) - Variáveis de Host (
host_vars/)
- Variáveis de Grupo (
- Variáveis de Role (
roles/<role_name>/vars/) - Variáveis de Play (
vars:no playbook) - Valores Padrão do Role (
roles/<role_name>/defaults) - Variáveis de Inventário (do ficheiro de inventário)
- Variáveis de grupo no inventário
- Variáveis de host no inventário
Exemplo de definição de variáveis no Ansible para uma role:
---
# roles/my_role/vars/main.yml
my_variable: "valor definido em vars da role"
Exemplo de definição de valores padrão para uma role:
---
# roles/my_role/defaults/main.yml
my_variable: "valor padrão"
another_variable: "valor padrão específico para a role"
Exemplo de uso num playbook:
---
- name: Aplicar my_role
hosts: meus_servidores
vars:
my_variable: "valor definido no playbook"
roles:
- my_role
Exemplo de variável de host no inventário:
[meus_servidores]
servidor1 my_variable="valor do host no inventário"
servidor2
Variáveis definidas em níveis superiores nesta hierarquia (por exemplo, Extra Vars) sobrescrevem variáveis definidas em níveis inferiores (por exemplo, Valores Padrão do Role).
Em outras ferramentas, a hierarquia pode variar, mas o princípio geral de prioridade das variáveis, definidas mais próximas do local de uso ou com indicação explícita (como na linha de comando), mantém-se semelhante.