tasks: - sHell: ifconfig -a | sed 's/[ \t].*//;/^\(lo\|\)$/d' register: var1 - debug: var=var1 - sHell: ethtool -i {{ item }} | grep bus-info | cut -b 16-22 with_items: var1.stdout_lines register: var2 - debug: var=var2
用于获取机器(linuX)中的接口列表,并获取每个接口的总线地址.在同一本书中,我还有一个以上的任务
- name: Binding thE interfaces sHell: echo {{ item.item }} with_flattened: var2.results register: var3
我期望从var2迭代值,然后打印总线编号.
var2.results如下
"var2": { "changed": true,"msg": "All items completed","results": [ { "changed": true,"cmd": "ethtool -i br0: | grep bus-info | cut -b 16-22","delta": "0:00:00.005778","end": "2015-04-14 20:29:47.122203","invocation": { "module_args": "ethtool -i br0: | grep bus-info | cut -b 16-22","module_name": "sHell" },"item": "br0:","rc": 0,"start": "2015-04-14 20:29:47.116425","stderr": "","stdout": "","warnings": [] },{ "changed": true,"cmd": "ethtool -i enp13s0: | grep bus-info | cut -b 16-22","delta": "0:00:00.005862","end": "2015-04-14 20:29:47.359749","invocation": { "module_args": "ethtool -i enp13s0: | grep bus-info | cut -b 16-22","item": "enp13s0:","start": "2015-04-14 20:29:47.353887","stdout": "0d:00.0","cmd": "ethtool -i enp14s0: | grep bus-info | cut -b 16-22","delta": "0:00:00.005805","end": "2015-04-14 20:29:47.576674","invocation": { "module_args": "ethtool -i enp14s0: | grep bus-info | cut -b 16-22","item": "enp14s0:","start": "2015-04-14 20:29:47.570869","stdout": "0e:00.0","cmd": "ethtool -i enp15s0: | grep bus-info | cut -b 16-22","delta": "0:00:00.005873","end": "2015-04-14 20:29:47.875058","invocation": { "module_args": "ethtool -i enp15s0: | grep bus-info | cut -b 16-22","item": "enp15s0:","start": "2015-04-14 20:29:47.869185","stdout": "0f:00.0","cmd": "ethtool -i enp5s0f1: | grep bus-info | cut -b 16-22","delta": "0:00:00.005870","end": "2015-04-14 20:29:48.112027","invocation": { "module_args": "ethtool -i enp5s0f1: | grep bus-info | cut -b 16-22","item": "enp5s0f1:","start": "2015-04-14 20:29:48.106157","stdout": "05:00.1","cmd": "ethtool -i enp5s0f2: | grep bus-info | cut -b 16-22","delta": "0:00:00.005863","end": "2015-04-14 20:29:48.355733","invocation": { "module_args": "ethtool -i enp5s0f2: | grep bus-info | cut -b 16-22","item": "enp5s0f2:","start": "2015-04-14 20:29:48.349870","stdout": "05:00.2","cmd": "ethtool -i enp5s0f3: | grep bus-info | cut -b 16-22","delta": "0:00:00.005829","end": "2015-04-14 20:29:48.591244","invocation": { "module_args": "ethtool -i enp5s0f3: | grep bus-info | cut -b 16-22","item": "enp5s0f3:","start": "2015-04-14 20:29:48.585415","stdout": "05:00.3","cmd": "ethtool -i enp9s0f0: | grep bus-info | cut -b 16-22","delta": "0:00:00.005943","end": "2015-04-14 20:29:48.910992","invocation": { "module_args": "ethtool -i enp9s0f0: | grep bus-info | cut -b 16-22","item": "enp9s0f0:","start": "2015-04-14 20:29:48.905049","stdout": "09:00.0","cmd": "ethtool -i enp9s0f1: | grep bus-info | cut -b 16-22","end": "2015-04-14 20:29:49.143706","invocation": { "module_args": "ethtool -i enp9s0f1: | grep bus-info | cut -b 16-22","item": "enp9s0f1:","start": "2015-04-14 20:29:49.137843","stdout": "09:00.1","cmd": "ethtool -i lo: | grep bus-info | cut -b 16-22","delta": "0:00:00.005856","end": "2015-04-14 20:29:49.386044","invocation": { "module_args": "ethtool -i lo: | grep bus-info | cut -b 16-22","item": "lo:","start": "2015-04-14 20:29:49.380188","stderr": "CAnnot get driver information: Operation not supported","cmd": "ethtool -i virbr0: | grep bus-info | cut -b 16-22","delta": "0:00:00.005859","end": "2015-04-14 20:29:49.632356","invocation": { "module_args": "ethtool -i virbr0: | grep bus-info | cut -b 16-22","item": "virbr0:","start": "2015-04-14 20:29:49.626497","cmd": "ethtool -i virbr0-nic: | grep bus-info | cut -b 16-22","delta": "0:00:00.024850","end": "2015-04-14 20:29:49.901539","invocation": { "module_args": "ethtool -i virbr0-nic: | grep bus-info | cut -b 16-22","item": "virbr0-nic:","start": "2015-04-14 20:29:49.876689","warnings": [] } ]
我的目标是获取上面每个项目中的stdout的值,例如(“stdout”:“09:00.0”).我试着给些东西
- name: Binding thE interfaces sHell: echo {{ item.item.stdout}} with_flattened: var2.results # with_indexed_items: var2.results register: var3
但这并不是正确地给出了stdout中的总线值.在第二个变量和索引列表中,给出下面给出的任务中列出变量值变量的帮助.我试图避免直接的索引编号,如项目[0],因为接口的数量是动态的,直接索引可能会导致意想不到的结果.
谢谢
- hosts: localhost tags: s21 gather_facts: no vars: images: - foo - bar tasks: - sHell: "echo result-{{item}}" register: "r" with_items: "{{images}}" - debug: var=r - debug: msg="item.item={{item.item}},item.stdout={{item.stdout}},item.changed={{item.changeD}}" with_items: "{{r.results}}" - debug: msg="Gets printed only if this item changed - {{item}}" when: "{{item.changed == truE}}" with_items: "{{r.results}}"
资料来源:Register variables in with_items loop in Ansible playbook
以上是大佬教程为你收集整理的linux – 在可循环播放器中注册循环中的变量全部内容,希望文章能够帮你解决linux – 在可循环播放器中注册循环中的变量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。