我正在尝试通过运行来调试我的ansible设置
ansible -m debug -a 'var=ansible_distribution' all
但是我得到了
my_ansible_host0 | SUCCESS => {
"ansible_distribution": "VARIABLE IS NOT DEFINED!"
}
不过,我似乎可以在Jinja模板中使用{{ansible_distribution}}
。为什么是这样? (例如,这与我尚无法弄清的事实和变量之间的区别有关吗?)如何更改命令以使其输出{{1}的值}? (我需要对ansible_distribution
做些什么吗?)
答案 0 :(得分:1)
运行播放时,ansible_distribution
模块会隐式创建setup
事实。在运行剧本时,您可能已经注意到了这一点:
TASK [Gathering Facts] ****************************************************************
这是Ansible,它运行setup
模块以获取有关远程主机的信息。在运行临时命令时,没有“收集事实”步骤,因此这些变量不可用。
如果要查看ansible_distribution
和其他变量的值,可以手动运行setup
模块:
ansible -m setup all
您可以使用setup模块的参数来限制收集的事实。例如:
$ ansible localhost -m setup -a 'filter=ansible_dist*'
localhost | SUCCESS => {
"ansible_facts": {
"ansible_distribution": "Fedora",
"ansible_distribution_file_parsed": true,
"ansible_distribution_file_path": "/etc/redhat-release",
"ansible_distribution_file_variety": "RedHat",
"ansible_distribution_major_version": "31",
"ansible_distribution_release": "",
"ansible_distribution_version": "31"
},
"changed": false
}