Ansible 将多个异步任务注册到同一变量

2023-12-06

有没有办法将多个异步任务注册到同一个变量?例如,如果我有两个任务,每个任务都调用异步 shell 命令:

  - name: Run async task 1
    shell: echo "task 1"
    async: 30
    poll: 0
    register: db_wait

  - name: Run async task 2
    shell: echo "task 2"
    async: 30
    poll: 0
    register: db_wait

  - debug: msg="task vars {{db_wait}}"

当我打印 db_wait 变量时,它仅包含一个任务的引用。

 "msg": "task vars {u'started': 1, u'results_file': u'/home/vagrant/.ansible_async/202582702042.7326', u'ansible_job_id': u'202582702042.7326', u'changed': False}"

有没有办法为异步任务注册相同的变量或我可以添加到并可以在以后迭代的某种列表?


最后我想出了以下解决方案,希望对其他人有帮助。问题的核心是我需要在不同的主机上以不同的方式运行一些长时间运行的任务,但只想在剧本的最后收集结果。

为了让戏剧运行我的工作:

---
- name: Long Running tasks 1
  hosts: remote_host_1
  tasks:
    - name: Tasks 1
      shell: "{{item}}"
      with_items:
        - sleep 10
        - echo "Another Task"
      async: 3600
      poll: 0
      register: wait_task1


- name: Long Running tasks 2
  hosts: remote_host_2
  tasks:
    - name: Tasks 2
      shell: "{{item}}"
      with_items:
        - sleep 20
      async: 3600
      poll: 0
      register: wait_task2

然后最后的比赛就是检查结果:

- name: Verify Async Tasks 1
  hosts: remote_host_1
  tasks:
    - include: "/ansible/plays/check_results.yml wait={{wait_task1}}"


- name: Verify Async Tasks 2
  hosts: remote_host_2
  tasks:
    - include: "/ansible/plays/check_results.yml wait={{wait_task2}}"

对于使用过这种机制的人来说,检查结果看起来很熟悉:

---
- name: Check Results
  async_status: jid={{ item.ansible_job_id }}
  register: task_result
  until: task_result.finished
  retries: 120
  delay: 30
  failed_when: task_result.rc != 0
  with_items: wait.results  

这会异步启动所有任务,然后我们可以在每次播放结束时收集结果。

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

Ansible 将多个异步任务注册到同一变量 的相关文章

随机推荐

  • JS设置Cookie然后加载页面的方法

    我经常访问一个网站 其中有 点击更改为深色主题 按钮 黑暗主题更容易阅读 所以我每次访问都必须单击链接 关闭时清除历史记录 我在本地 Linux 机器上运行 Firefox 因此 Javascript HTML Python 和 Bash
  • 设置默认文件浏览位置VBA

    我有以下 VBA 代码 用于浏览 MS ACCESS 表单中的文件名 Private Sub Command64 Click Dim dialog As FileDialog Dim filePath As String Dim fileN
  • 使用 Jsoup 删除元素不起作用

    我想删除 html 文件头部的一些元素 CSS 标签 我尝试过这样的 Document doc Jsoup parse htmlString Element head doc head Elements headChildren head
  • 插入文本并将其添加到命名范围以供以后检索

    我正在尝试编写一个用于文档的 Google Apps 脚本 该脚本将插入一些文本 然后将插入的文本添加到命名范围 为了确保插入的文本保存到命名范围 我只想选择插入的文本 这是代码 function insertText var doc Do
  • 实体框架 IDENTITY_INSERT ON 不起作用

    我有这段代码 应该插入带有身份插入的记录 using MCT DB ArchiveEntities ent new MCT DB ArchiveEntities ent ExecuteStoreCommand SET IDENTITY IN
  • 为什么Java中的类是“class”? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 为什么 Java 的创建者对 Java 中的类使用 class 这个名称 这个词从何而来
  • UIKeyboardWillHide 未触发

    我在这里读了很多关于这个主题的帖子 但我无法找到我的问题的答案 所以 希望你不会对另一篇 UIKeyboard 帖子感到无聊 在我的视图控制器的实现中我添加了self作为两个通知的观察员UIKeyboardWillShowNotificat
  • 如何使用RecyclerView构建水平ListView

    我需要在我的 Android 应用程序中实现水平列表视图 我做了一些研究并发现如何在Android中制作水平ListView and Android 中的水平 ListView 然而 这些问题在 Recyclerview 发布之前就被提出了
  • Swift - 将 JSON 日期转换为 Swift 兼容日期

    我正在尝试转换一个日期 其中 javascript 代码使用 Date 函数生成当前日期 但当我打印出来时 我得到的是零 my code let date2 data 0 as String println date2 var str 20
  • 防火墙应允许哪些端口使用 TURN 服务器?

    我想在我们公司的服务器上设置一个turn服务器 coturn 而且我不确定外部访问应该允许哪些端口 8443是必须的 使用WebRTC 3478 是凭证使用的必备条件 但是 TURN 服务器使用的端口有无数个 是否需要在防火墙中允许它们 或
  • SASS:循环内部属性

    我想为单个属性生成多个值 background image radial gradient circle primary 10 transparent 10 radial gradient circle primary 10 transpa
  • Python连续TCP连接

    我是套接字编程新手 并试图重新回到Python 我想编写一个简单的 TCP 程序 它将持续维护连接 直到达到某个结束状态 在这种情况下 客户端发送 关闭 这对于第一次迭代来说效果很好 但是在我发送的第二件事上它冻结了 我不确定为什么 有人可
  • 二进制到 Base64 (Delphi)

    我怎样才能获得内容exe文件并将其转换为Base64编码 Edit I use D2010我想知道这到底是怎么可能的 open an exe file convert its content into base64 在Delphi 2009
  • 无法将“User”分配给 FutureBuilder 中的参数类型“Future

    我试图确定用户是否使用 FirebaseAuth instance currentUser 登录 Flutter Firebase 然后返回 LoginScreen 或 Dashboard 但出现错误 我尝试根据 FirebaseFlutt
  • 在运行时更改 IconTintColorBehavior 的 TintColor 不起作用

    你好 我正在测试新的IconTintColorBehavior在 CommunityToolkit Maui 1 1 0 中 它可以查找 但仅在启动应用程序时有效 如果我改变AppTheme在运行时 它不起作用 还有其他人观察过这种行为吗
  • 滑动功能无法使用 jquerymobile 和 android 的phonegap 工作

    我是phonegap的新手 我正在使用phonegap for android在eclipse中创建应用程序 我在xml文件夹中添加了phonegap jar和插件 我还添加了jquery库和phonegap1 1 0 js 我正在尝试实现
  • 在python中生成正弦波声音

    我一直在尝试使用以下代码生成正弦波并在我的扬声器中播放它 但这听起来很糟糕 有人知道为什么吗 听起来不像正弦波 dur int FS float duration 1000 for i in range dur a frequency i
  • 连接到服务器上运行的 virtualenv/django 时如何解决 ERR_CONNECTION_REFUSED

    我已经在 ubuntu 服务器上的用户部分安装了 virtualenv 和 Django 一切似乎都安装正确 当我启动服务器时python manage py runserver我收到以下消息 这似乎是正确的 Performing syst
  • 以绘图单位指定 matplotlib 散点大小

    我想不使用点或像素而是使用绘图单位来指定散点大小 以下面为例 import matplotlib pyplot as plt x 0 y 0 plt scatter x y plt show 这会产生如下图 比如说 如果我希望标记的半径恰好
  • Ansible 将多个异步任务注册到同一变量

    有没有办法将多个异步任务注册到同一个变量 例如 如果我有两个任务 每个任务都调用异步 shell 命令 name Run async task 1 shell echo task 1 async 30 poll 0 register db