我正在编写一本 ansible playbook,在一次 play 中,我尝试使用 UUID 使用我自己的模块(NodeModule)删除一些节点。所有节点是一个包含节点 UUID 的列表。
- name: Remove OSNs
NodeModule:
connection:
ip: "{{ ansible_default_ipv4.address }}"
action: remove_node
id: "{{ all_nodes[(item)] }}"
loop: "{{ range(0, all_nodes|length, 1)|list }}"
如果我按正向顺序删除它,效果会非常好。我怎样才能以相反的顺序运行我的“循环”?我想开始反向删除节点。尝试过类似的方法,但它不起作用
loop: "{{ range(all_nodes|length, 0, -1)|list }}"
即使尝试过,但也失败了
Loop: "{{ range(0, all_nodes|length, 1)|reverse|list }}"
在 Ansible 文档中找不到任何解决反向循环的内容。
问:“如何以相反的顺序运行循环?”
A:使用过滤器reverse。例如,
- hosts: localhost
vars:
all_nodes: [eth0, eth1, eth2]
tasks:
- debug:
var: item
loop: "{{ all_nodes | reverse }}"
给出(删节)
item: eth2
item: eth1
item: eth0
我希望这个片段适合您:
- set_fact:
arr:
- a
- b
- c
- d
- e
ke: "{{ range(5, 0, -1) | list }}"
- name: reverse
debug: msg="{{arr[item-1]}}"
loop: "{{ke}}"