Variáveis¶
Uma variável consiste em:
- Informações do dispositivo, que são coletadas como um fato através do
gather_facts. - Nas variáveis, você pode escrever a saída do comando da CLI.
Definição de variáveis¶
Variáveis podem ser definidas nos seguintes locais:
- No arquivo de inventário;
- No manual;
- Em arquivos especiais baseados em um grupo de dispositivo;
- Em arquivos separados que são adicionados ao playbook via include (como no Jinja2);
- Chamando playbooks através de variáveis.
Variáveis no arquivo de inventário¶
No arquivo de inventário, você pode especificar variáveis para o grupo:
[ansible_core]
SW_CORE_1
SW_CORE_2
[ansible_access]
SW_ACCESS_1
SW_ACCESS_2
SW_ACCESS_3
SW_ACCESS_4
[ansible_core:vars]
ntp_server=192.168.70.200
log_server=10.5.100.1
As variáveis ntp_server e log_server pertencem ao grupo ansible_core e podem ser alocadas dentro da configuração de um módulo durante a escrita de um playbook.
Variáveis alocadas no manual¶
Alocar variáveis direto no manual, tem seu lado bom e seu lado ruim. É conveniente alocar variáveis dentro do mesmo arquivo onde estão definidas as tarefas por que as variáveis estão no mesmo local que todas as ações. Porém, ao crescer esse script, as variáveis poderão ficar desorganizadas.
Segue um exemplo de como definir variáveis no manual e chamá-las através de um parâmetro específico:
---
- name: Run command
hosts: SW_ACCESS_1
gather_facts: false
vars: # Variável de conexão
ansible_connection: network_cli
ansible_network_os: ios
ansible_user: teste
ansible_ssh_pass: teste
# Definindo variável
vlan: sh vlan br
tasks:
- name: sh clock
ios_command:
commands: sh clock
commands: "{{ vlan }}" # Chamando a variável
register: print_output
- debug: var=print_output.stdout_lines