为什么ansible特设调试模块不打印变量?

为什么ansible特设调试模块不打印变量?,ansible,Ansible,我正试图通过运行 ansible -m debug -a 'var=ansible_distribution' all 但是我越来越 my_ansible_host0 | SUCCESS => { "ansible_distribution": "VARIABLE IS NOT DEFINED!" } 不过,我似乎可以在我的jinja模板中使用{{ansible\u distribution}}。为什么会这样?(例如,这是否与我尚未弄清楚的事实和变量之间的区别有关?)如何更改命

我正试图通过运行

ansible -m debug -a 'var=ansible_distribution' all
但是我越来越

my_ansible_host0 | SUCCESS => {
    "ansible_distribution": "VARIABLE IS NOT DEFINED!"
}

不过,我似乎可以在我的jinja模板中使用
{{ansible\u distribution}}
。为什么会这样?(例如,这是否与我尚未弄清楚的事实和变量之间的区别有关?)如何更改命令以使其打印出
ansible\u分布的值?(我是否需要使用
查找(…)
?)

运行播放时,
设置
模块会隐式创建
ansible\u发行版
事实。在运行剧本时,您可能已经注意到这一点:

TASK [Gathering Facts] ****************************************************************
这可以通过运行
设置
模块来获取有关远程主机的信息。在运行特别命令时,没有“收集事实”步骤,因此这些变量不可用

如果要查看
ansible_分布
的值和其他变量,可以手动运行
设置
模块:

ansible -m setup all
您可以使用参数将收集的事实限制到模块。例如:

$ 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
}