ansible - 反向运行 Ansible 循环
问题描述
我正在编写一个 ansible 剧本,在一个剧本中,我试图使用我自己的模块(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 文档中找不到任何解决反向循环的内容。
解决方案
问:“我怎样才能以相反的顺序运行我的循环? ”
A:使用反向过滤器。例如
- hosts: localhost
vars:
all_nodes: ['eth0', 'eth1', 'eth2']
tasks:
- debug:
var: item
loop: "{{ all_nodes|reverse|list }}"
给
"item": "eth2"
"item": "eth1"
"item": "eth0"
推荐阅读
- python - 成功 url 到当前 url
- ios - Swift SQLite 如何从表中获取 row.count?
- dygraphs - Dygraph x 轴不显示第一个日期
- git - Git Change Head to certain commit 不会更改文件中的数据
- javascript - 使用 javascript 显示图像的多个下拉菜单
- rest - REST API Google Drive 分段上传(C++ 生成器)
- oracle - 在 sqlplus 中执行脚本时出错,选项不是有效数字
- ios - 为什么有些图像使用 gpuimage 过滤会旋转 90 度?
- python - 访问文件中的第 n 个泡菜
- angular - Angular:急切加载使组件不被渲染