ansible - 为什么 ansible ad hoc 调试模块不打印变量?
问题描述
我正在尝试通过运行来调试我的 ansible 设置
ansible -m debug -a 'var=ansible_distribution' all
但我得到
my_ansible_host0 | SUCCESS => {
"ansible_distribution": "VARIABLE IS NOT DEFINED!"
}
不过,似乎我可以{{ansible_distribution}}
在我的 jinja 模板中使用。为什么是这样?(例如,这是否与我还无法弄清楚的事实和变量之间的区别有关?)我怎样才能改变我的命令来让它打印出 的值ansible_distribution
?(我需要做些什么lookup(...)
吗?)
解决方案
当你运行一个游戏时,这个ansible_distribution
事实是由模块隐式创建的。setup
在运行 playbook 时,您可能已经注意到这一点:
TASK [Gathering Facts] ****************************************************************
这是 Ansible 运行setup
模块以获取有关远程主机的信息。当您运行临时命令时,没有“收集事实”步骤,因此这些变量不可用。
如果要查看变量的值ansible_distribution
和其他变量,可以手动运行setup
模块:
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
}
推荐阅读
- r - 是否在每次调整评估中重新运行重新采样?
- html - 通过 fetch 将对象中的数据从 html 发送到电子表格
- sorting - 如何对一段字符串进行排序
- php - 周一早上通过 CRON 为所有具有不同时区的用户执行 PHP
- javascript - 如何从 preload.js 接收数据到 renderer.js
- python-3.x - 使用 xpath 抓取网站不会返回任何内容
- go - 安装所有 Go Mod 依赖二进制文件
- javascript - 如何动态获取类名
- c# - 如何为自定义 XML 格式定义类结构
- python - 使用python比较elasticsearch中的created_time和updated_time