我是新来的可靠的,但我不能find这个问题的答案,我认为看起来相当简单..
在剧本中,你可以通过例子{{ ansible_eth0["ipv4"]["address"] }}或{{ ansible_eth0.ipv4.address }}得到事实。
我如何使用类似ansible all -m setup -a "filter=???"获取与信息相关的命令相同的信息
作为filter ,我已经尝试了两个你想在剧本中使用的语法,还有一些与*结合的更具异国情调的语法。
这甚至是正确的方式来收集这样的数据?
可悲的是,这不被支持。 从在线文档 :
filter选项仅过滤ansible_facts下面的第一级子项。
由于ansible_interface事实是JSON文档结构中的第一级子项,因此您可以访问的最小项如下所示:
# ansible localhost -m setup -a 'filter=ansible_p5p1' localhost | success >> { "ansible_facts": { "ansible_p5p1": { "active": true, "device": "p5p1", "ipv4": { "address": "10.0.0.2", "netmask": "255.255.255.0", "network": "10.0.0.0" }, "ipv6": [ { "address": "fd6c:xxxx:xxxx::2", "prefix": "64", "scope": "global" }, { "address": "fe80::xxxx:xxxx:xxxx:5a56", "prefix": "64", "scope": "link" } ], "macaddress": "xx:xx:xx:xx:xx:xx", "module": "foo", "mtu": 1500, "promisc": false, "type": "ether" } }, "changed": false }
如果您的系统安装了facter或ohai ,您可以从ansible访问相同的信息:
# ansible localhost -m setup -a 'filter=facter_ipaddress_p5p1' localhost | success >> { "ansible_facts": { "facter_ipaddress_p5p1": "10.0.0.2" }, "changed": false }