如何从 Ansible 中提取值收集事实并对其进行操作?
How to extract values from Ansible gather facts and manipulate it?
我想从收集的事实中提取一些值{{ ansible_default_ipv4 }}
为此,我 运行 ansible -i hosts all -m setup -a filter=ansible_default_ipv4
然后我得到输出为:
"ansible_facts": {
"ansible_default_ipv4": {
"address": "10.6.97.221",
"alias": "bond0",
"broadcast": "10.6.97.255",
"gateway": "10.6.97.1",
"interface": "bond0",
"macaddress": "e8:39:35:c0:38:a4",
"mtu": 1500,
"netmask": "255.255.255.0",
"network": "10.6.97.0",
"type": "ether"
},
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false
我想从地址 + 网络掩码 + 网关中提取值并将它们以该值的形式打印到文件中。
我怎样才能做到这一点?
我通过
实现了它
- name: echo
shell: echo "{{ ansible_hostname }} {{ ansible_default_ipv4.macaddress }} {{ ansible_default_ipv4.address }} {{ ansible_default_ipv4.netmask}} {{ ansible_default_ipv4.gateway}} {{ SERVER_ILO.stdout }}" >> /tmp/log.txt
我想从收集的事实中提取一些值{{ ansible_default_ipv4 }}
为此,我 运行 ansible -i hosts all -m setup -a filter=ansible_default_ipv4
然后我得到输出为:
"ansible_facts": {
"ansible_default_ipv4": {
"address": "10.6.97.221",
"alias": "bond0",
"broadcast": "10.6.97.255",
"gateway": "10.6.97.1",
"interface": "bond0",
"macaddress": "e8:39:35:c0:38:a4",
"mtu": 1500,
"netmask": "255.255.255.0",
"network": "10.6.97.0",
"type": "ether"
},
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false
我想从地址 + 网络掩码 + 网关中提取值并将它们以该值的形式打印到文件中。 我怎样才能做到这一点?
我通过
实现了它- name: echo
shell: echo "{{ ansible_hostname }} {{ ansible_default_ipv4.macaddress }} {{ ansible_default_ipv4.address }} {{ ansible_default_ipv4.netmask}} {{ ansible_default_ipv4.gateway}} {{ SERVER_ILO.stdout }}" >> /tmp/log.txt