在ansible中使用循环时,如何将输出存储在变量中?
我想检查json文件中ip列表所在服务器上的ip,如下所示, cat/tmp/iplist.json在ansible中使用循环时,如何将输出存储在变量中?,ansible,Ansible,我想检查json文件中ip列表所在服务器上的ip,如下所示, cat/tmp/iplist.json [ "10.10.10.182", "182.10.10.2", "192.168.200.2" ] 现在,条件是系统上只存在一个ip,所以我执行循环来存储变量中的唯一成功输出,但我不能这样做,有人知道我怎么做吗 这是我的剧本 --- - name: Load values from json file hosts: localhost gather_facts: false
[
"10.10.10.182",
"182.10.10.2",
"192.168.200.2"
]
现在,条件是系统上只存在一个ip,所以我执行循环来存储变量中的唯一成功输出,但我不能这样做,有人知道我怎么做吗
这是我的剧本
---
- name: Load values from json file
hosts: localhost
gather_facts: false
vars:
ip: "{{ lookup('file', '/tmp/iplist.json') | from_json }}"
tasks:
- name: Loop over imported iplist
shell: ip a | grep {{ item }}
loop: "{{ ip }}"
changed_when: true
register: echo
- debug:
msg: "{{ echo }}"
这就是为什么它会出错
PLAY [Load values from json file] *************************************************************************************************************************
TASK [Loop over imported iplist] *******************************************************************************************************************************
changed: [localhost] => (item=10.10.10.182)
failed: [localhost] (item=182.10.10.2) => {"ansible_loop_var": "item", "changed": true, "cmd": "ip a | grep 182.10.10.2", "delta": "0:00:00.012178", "end": "2020-05-09 11:30:06.919913", "item": "182.10.10.2", "msg": "non-zero return code", "rc": 1, "start": "2020-05-09 11:30:06.907735", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
failed: [localhost] (item=192.168.200.2) => {"ansible_loop_var": "item", "changed": true, "cmd": "ip a | grep 192.168.200.2", "delta": "0:00:00.029234", "end": "2020-05-09 11:30:07.178768", "item": "192.168.200.2", "msg": "non-zero return code", "rc": 1, "start": "2020-05-09 11:30:07.149534", "stderr": "", "stderr_lines": [], "stdout": "", "stdout_lines": []}
PLAY RECAP *****************************************************************************************************************************************************
localhost : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
启用“收集事实:true”时,变量ansible\u all\u ipv4\u addresses将保留主机的所有ipv4地址列表。用于查找常用项。比如说
-调试:
msg:{{ansible_all_ipv4_地址{124; intersectip}}
启用“收集事实:true”时,变量ansible\u all\u ipv4\u addresses将保留主机的所有ipv4地址列表。用于查找常用项。比如说
-调试:
msg:{{ansible_all_ipv4_地址{124; intersectip}}
嗨,这只是我用ip做的例子,因为这是我可以在现场测试的,实际上我用这种方法查询交换机上的mac地址,如果mac发现它应该存储在变量中。ansible_接口包含接口列表,ansible_包含接口的所有细节,包括macaddress。要获取可用事实的全局id,可以执行ansible-i yourvinventory.ini yourtargethost-m安装程序。这是收集事实时playbook在每个主机上执行的操作:true。我从不同系统的数据库中取下了Mac,ansible不具备可访问性,因此我无法从ansible获取事实。现在我想查询交换机上的Mac地址以找出Mac,但在运行playbook后,它将返回连接的端口我只想将输出存储在变量中,以自动化我的网络配置…我已使用此选项进行测试,因为我目前没有iOS交换机进行测试。嗨,这只是ip的示例,因为这是我可以在live中测试的,实际上,我采用这种方法来查询交换机上的mac地址,如果mac发现它应该存储在变量中。ansible_接口包含接口列表,ansible_包含接口的所有详细信息,包括macaddress。要获取可用事实的全局id,您可以执行ansible-i yourinventory.ini yourtargethost-m设置。这是收集事实时playbook在每个主机上执行的操作:true。我从不同系统的数据库中取下了Mac,ansible不具备可访问性,因此我无法从ansible获取事实。现在我想查询交换机上的Mac地址以找出Mac,但在运行playbook后,它将返回连接的端口我只想将输出存储在变量中,以自动化我的网络配置…我已使用此选项进行测试,因为我现在还没有iOS交换机进行测试。