Variáveis possíveis vêm de uma variedade de fontes. É possível, por exemplo, fornecer host_vars e group_vars criando arquivos YAML em uma subpasta denominada host_vars
e group_vars
respectivamente da pasta que contém o arquivo de inventário.
Como posso listar todas as variáveis Ansible iria saber sobre um grupo ou host dentro de uma cartilha? Nota: Eu tentei ansible -m debug -e 'var=hostvars' host
e ansible -m debug -e '- debug: var=hostvars'
sem sucesso.
Dica: nãoansible <group|host> -m setup
é a resposta correta, pois não inclui todas as variáveis provenientes de outras fontes (apenas contém . Na verdade, nem sequer inclui variáveis fornecidas por um script de inventário dinâmico (via e assim por diante).{ "ansible_facts" : { ... } }
_meta
Versão responsável: 1.9.1.
2.0.2
, isso parece não funcionar mais. A saída élocalhost | SUCCESS => { "hostvars": "<ansible.vars.hostvars.HostVars object at 0x7f320943da10>" }
"var=hostvars[inventory_hostname]"
em ansible> 2.0ansible my.hostname.example.com -m setup -i ../my/inventory/hosts.example -u root
ansible host-name -m debug -a "var=[var_name]" -i inventory/testing/hosts
FYI: Este projeto do github mostra como listar 90% das variáveis em todos os hosts. Acho mais útil globalmente do que comandos de host único. O README inclui instruções para criar um relatório de inventário simples. É ainda mais valioso executar isso no final de um manual para ver todos os fatos. Para depurar também o comportamento da tarefa, use register:
fonte
Adicionando uma pequena dica à resposta realmente boa acima, se você quiser bisbilhotar programaticamente, pode
Use a resposta existente para hostvars :
Mas ansible_facts está vazio porque
debug
não executa osetup
módulo. Então, você precisa tentar algo extra, comojq
depois de aparar a saída para torná-la json válida.Eu pensei que as pessoas acham isso útil ao investigar a parede gigante de texto que volta em fatos ansiosos quando você só quer algo como
jq .ansible_facts.ansible_devices.vda.size
fonte