反向运行 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 循环 的相关文章

  • 使用嵌套 delegate_to 将文件从一台远程服务器复制到另一台远程服务器

    作为用户 我想将文件从节点1复制到节点2 是否可以使用复制模块 delegate to 以下是我试图做的事情 Playbook 从节点 3 运行 Playbook Sample name Gather Facts for all hosts
  • 从上一个任务获取更改/失败的主机列表 |安西布尔

    All 示例 如果我有 20 个主机用于剧本并使用 Serial 10 运行它们 则以下 shell 命令一次在 10 个主机上运行 完成后 将调用处理程序任务 其中创建 dict dict 的任务不会提供字典输出 因此第二个任务 失败的主
  • Ansible 手册:错误! “command”不是 Play 的有效属性[重复]

    这个问题在这里已经有答案了 我只是想写一个基本的剧本 并不断收到下面的错误 尝试了很多东西但仍然无法做到正确 我知道这一定是语法问题 但不知道在哪里 这是我的代码 This playbook runs a basic DF command
  • ansible安装node.js版本6

    要安装 Node 6 x 版本 请执行以下命令 curl sL https deb nodesource com setup 6 x sudo E bash sudo apt get install y nodejs 现在我到底该如何在an
  • 使用 ansible SSH 到远程服务器

    我正在使用 ansible 来自动化一些任务 其中之一要求我ssh到服务器A 然后从A到B 然后从B到C 我似乎找不到任何方法来做到这一点 有什么建议么 鉴于您不使用 Paramiko 进行 ssh transport ssh https
  • Ansible 循环直到条件匹配。

    我想进行一系列 API 调用 每次调用后检查结果中的特定参数 如果它大于特定值 则将其保存在寄存器中并继续进一步执行剧本 基本上 我正在对 RHEV 进行 API 调用来检查存储域 然后我想检查存储域是否有足够的空间 如果有 则将该存储域i
  • Ansible 和硬件检查

    我必须使用 ansible 检查 Linux 机器上的不同硬件和配置元素 我完全不确定如何做到这一点 RAM 磁盘空间 DNS CPU 我知道我几乎可以找到我想要的所有事实都在 ansible 中 但我不明白如何使用它 例如 我必须检查 R
  • 如何在 jinja2 中缩进嵌套的 if/for 语句

    我有一个很长的 Jinja2 模板 其中有很多嵌套if for声明 很难读 我想缩进 位 使其更清晰 但是 如果我这样做 这些块的内容也会进一步缩进 我怎样才能缩进just the bits 我正在使用安塞布尔 重现步骤 template
  • ansible 用户模块总是显示已更改

    我正在努力正确使用 ansible 的用户模块 问题是每次我运行我的剧本时 我创建的用户always显示为已更改 即使我已经创建了它们 我在这里发现其他人也有同样的问题 https github com ansible ansible is
  • Ansible 测试变量以什么开头

    我需要能够安装 MySQL 库 Python 有 1 个用于 v2 的包和另一个用于 v3 的包 我需要能够告诉 Ansible 要安装哪个包 name Ensure MySQL python is installed pip name M
  • ansible 重新启动 2.1.1.0 失败

    我一直在尝试创建一个非常简单的 Ansible 剧本 它将重新启动服务器并等待它回来 我过去在 Ansible 1 9 上有一个可以运行的 但我最近升级到 2 1 1 0 并且失败了 我正在重新启动的主机名为 idm IP 为 192 16
  • Ansible bitbucket 克隆存储库配置 ssh 错误

    我之前发布过这个问题 但那里的答案不再有效 总之 当使用 Ansible 配置我的 vagrant box 时 在尝试使用 ssh 克隆我的 bitbucket 私有存储库时 我遇到了一个神秘的错误 该错误指出 权限被拒绝 公钥 然而 如果
  • 包含 contains 的 json 格式查询

    我在 ansible 中有以下 json 输出 active transaction null cores 4 hostname alpha auth wb01 active transaction null cores 4 hostnam
  • 如何在 Ansible 中运行 MySQL 查询

    我需要编写一个 Ansible 脚本来在 MySQL 数据库中执行 SQL 查询 这是我尝试过的 你能指导一下吗 hosts localhost tasks name retrive data command mysql u root h
  • 使用 ansible 处理程序滚动重启

    我想运行一个 ansible playbook 它会安装一个服务 如果自上次运行以来发生任何更改 或多或少是 ansible 处理程序的规范用例 则重新启动它 但我想要一个不同的并行性用于安装而不是重新启动 我想一次在所有主机上安装 但是
  • Ansible:仅在存在时禁用服务

    有没有什么好的方法可以禁用和停止服务 但前提是它安装在服务器上 像这样的事情 service name item enabled no state stopped only if present yes with items avahi d
  • 如何从 Ansible 模块获取当前主机名?

    我正在开发自定义 Ansible 模块来控制 Vagrant 控制多个 VM 服务器上的多个 VM 节点 遵循指南https docs ansible com ansible latest dev guide developing modu
  • 如何在ansible清单文件中设置host_key_checking = false?

    我想用ansible playbook命令而不是 vagrant provision 然而设置host key checking false in the hosts文件似乎不起作用 hosts file vagrant ansible s
  • 如何在 Ansible 中制作幂等 shell

    我正在使用 Ansible 在尝试使 shell 执行幂等时遇到一些问题 我做的第一件事是安装python apt 包因为我需要它来使用 apt 模块来安装其他软件包 但每次我运行我的playbookshell 任务始终运行 我想使其幂等
  • 如何使用 Ansible 设置环境变量

    我需要设置变量 例如JAVA HOME并更新PATH 有多种方法可以做到这一点 一种方法是更新 etc environment变量并包含一行JAVA HOME使用文件行 http docs ansible com ansible linei

随机推荐