Você pode criar variáveis a partir da saída de uma tarefa do Ansible com a palavra-chave register
.
Mês: setembro 2023
Fatos do Ansible
Fatos do Ansible
Os fatos do Ansible são dados relacionados aos seus sistemas remotos, incluindo sistemas operacionais, endereços IP, sistemas de arquivos anexados e muito mais. Você pode acessar esses dados na variável ansible_facts.
Fatos Customizados
O módulo de configuração no Ansible descobre automaticamente um conjunto padrão de fatos sobre cada host. Se você quiser adicionar valores personalizados aos seus fatos, poderá escrever um módulo de fatos personalizados, definir fatos temporários com uma tarefa ansible.builtin.set_fact ou fornecer fatos personalizados permanentes usando o diretório facts.d.
Exemplo:
Primeiro:
- Crie o diretório
/etc/ansible/facts.d
caso ele não exista na máquina gerenciada. - Crie um arquivo chamado
/etc/ansible/facts.d/meusfatos.fact
em sua máquina gerenciada. Inclua o conteúdo:
#/etc/ansible/facts.d/meusfatos.fact
[general]
minhavar=1
outravar="test 2"
Segundo:
Desta forma, na próxima coleta de fatos na máquina, teremos a variável com com minhavar e outravar como membros. Acesse estas variáveis com ansible_local:
ansible all -m setup -a "filter=ansible_local"
Resultado:
russell@control1 configdemo]$ ansible ans1 -m setup -a "filter=ansible_local"
ans1 | SUCCESS => {
"ansible_facts": {
"ansible_local": {
"meusfatos": {
"general": {
"minhavar": "1",
"outravar": "\"test 2\""
}
}
},
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false
}
Módulo do Ansible set_fact
:
Este módulo permite definir variáveis associadas ao host atual. Essas variáveis estarão disponíveis para as tarefas subsequentes durante uma execução do playbook ansible através do host em que foram definidas.
No exemplo abaixo, criamos 3 variáveis: one_fact, minha_outra_var, e aumentar_fluxo. Também criamos um dicionário e uma lista.
Exemplo:
- name: Criar variáveis com módulo set_fact:
set_fact:
one_fact: "Minha var 1"
minha_outra_var: "{{ local_var * 2 }}"
aumentar_fluxo: sim
meu_dict: {'meuteste': 'aqui', 'outroteste': 'ali'}
minha_lista: [1,2,3]