反向运行 Ansible 循环

2024-03-27

我正在编写一本 ansible playbook,在一次 play 中,我尝试使用我自己的模块(NodeModule)使用 UUID 删除一些节点。所有节点是一个包含节点 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 文档中找不到任何解决反向循环的内容。


Q: “如何以相反的顺序运行循环?”

答:使用过滤器reverse https://jinja.palletsprojects.com/en/latest/templates/#jinja-filters.reverse。例如,

- hosts: localhost
  vars:
    all_nodes: [eth0, eth1, eth2]
  tasks:
    - debug:
        var: item
      loop: "{{ all_nodes|reverse }}"

给出(删节)

  item: eth2
  item: eth1
  item: eth0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

反向运行 Ansible 循环 的相关文章

随机推荐