运行 Ansible 剧本中每次都有不同参数的命令
Run a command with different args everytime in Ansible playbook
我正在尝试 运行 Ansible 中的命令以便在我的网络中找到邻居:
- name: Get neighbors
junos_rpc:
rpc: "get-lldp-interface-neighbors"
output: 'xml'
args:
interface_device: A
register: net_topology
所以我的问题来了,在这个任务中我需要遍历一个列表并为 interface_device 提供另一个参数,并且每次都将结果也注册到另一个变量 'net_topology' 中。
- name: Get neighbors
junos_rpc:
rpc: "get-lldp-interface-neighbors"
output: 'xml'
args:
interface_device: "{{ item }}"
loop:
- A
- B
- C
register: net_topology
一旦您像这样修改您的任务,它将播放三次:我的示例循环中的每个元素一次。变量 item
将获取列表中当前元素的值。
您不需要更改 register
变量:它将按照 ansible documentation:
中的说明自动修改
When you use register
with a loop, the data structure placed in the variable will contain a results
attribute that is a list of all responses from the module. This differs from the data structure returned when using register
without a loop
因此,您可以通过遍历包含单个结果列表的 net_topology.results
来检查后续任务中的所有结果。
实际上我做了与上面类似的事情,但我只是用不同的方式传递了我的列表:
- name: building network topology
junos_rpc:
rpc: "get-lldp-interface-neighbors"
output: 'xml'
args:
interface_device: "{{item}}"
loop:
"{{my_list}}"
register: net_topology
这实际上和这样做是一样的:
- name: building network topology
junos_rpc:
rpc: "get-lldp-interface-neighbors"
output: 'xml'
args:
interface_device: "{{item}}"
with_items:
"{{my_list}}"
register: net_topology
我必须说我最初的错误是循环的标识,因为它被放置在 junos_rpc 中并且这样做我无法得到任何结果!
我正在尝试 运行 Ansible 中的命令以便在我的网络中找到邻居:
- name: Get neighbors
junos_rpc:
rpc: "get-lldp-interface-neighbors"
output: 'xml'
args:
interface_device: A
register: net_topology
所以我的问题来了,在这个任务中我需要遍历一个列表并为 interface_device 提供另一个参数,并且每次都将结果也注册到另一个变量 'net_topology' 中。
- name: Get neighbors
junos_rpc:
rpc: "get-lldp-interface-neighbors"
output: 'xml'
args:
interface_device: "{{ item }}"
loop:
- A
- B
- C
register: net_topology
一旦您像这样修改您的任务,它将播放三次:我的示例循环中的每个元素一次。变量 item
将获取列表中当前元素的值。
您不需要更改 register
变量:它将按照 ansible documentation:
When you use
register
with a loop, the data structure placed in the variable will contain aresults
attribute that is a list of all responses from the module. This differs from the data structure returned when usingregister
without a loop
因此,您可以通过遍历包含单个结果列表的 net_topology.results
来检查后续任务中的所有结果。
实际上我做了与上面类似的事情,但我只是用不同的方式传递了我的列表:
- name: building network topology
junos_rpc:
rpc: "get-lldp-interface-neighbors"
output: 'xml'
args:
interface_device: "{{item}}"
loop:
"{{my_list}}"
register: net_topology
这实际上和这样做是一样的:
- name: building network topology
junos_rpc:
rpc: "get-lldp-interface-neighbors"
output: 'xml'
args:
interface_device: "{{item}}"
with_items:
"{{my_list}}"
register: net_topology
我必须说我最初的错误是循环的标识,因为它被放置在 junos_rpc 中并且这样做我无法得到任何结果!