Atribuindo Variáveis a Grupos
O Ansible permite que você atribua variáveis a grupos no arquivo de inventário. Essas variáveis podem ser usadas em playbooks e templates, tornando seu código Ansible mais flexível e reutilizável.
Edite o arquivo inventory:
nano /home/labex/project/inventory
Atualize o conteúdo para:
[webservers]
localhost ansible_connection=local
[production:children]
webservers
[webservers:vars]
http_port=80
Isso atribui a variável http_port com o valor 80 a todos os hosts no grupo webservers. O sufixo :vars é usado para definir variáveis para um grupo.
Salve e saia do editor.
Agora, vamos criar um playbook simples para exibir essa variável. Um playbook é um arquivo YAML que define um conjunto de tarefas a serem executadas em hosts. Crie um novo arquivo chamado show_http_port.yml:
nano /home/labex/project/show_http_port.yml
Adicione o seguinte conteúdo:
---
- name: Show HTTP Port
hosts: webservers
tasks:
- name: Display HTTP Port
debug:
msg: "The HTTP port is {{ http_port }}"
Este playbook:
- Direciona o grupo
webservers
- Possui uma única tarefa que usa o módulo
debug para exibir uma mensagem
- Usa a sintaxe
{{ http_port }} para referenciar a variável que definimos no inventário
Salve e saia do editor.
Execute o playbook:
ansible-playbook -i inventory show_http_port.yml
Você deve ver a saída exibindo o valor da porta HTTP:
PLAY [Show HTTP Port] ********************************************************
TASK [Gathering Facts] ********************************************************
ok: [localhost]
TASK [Display HTTP Port] ******************************************************
ok: [localhost] => {
"msg": "The HTTP port is 80"
}
PLAY RECAP ********************************************************************
localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Isso demonstra que a variável que definimos no inventário é acessível em nosso playbook.