ansible - 在 playbook with_items 中运行所有任务
问题描述
我希望剧本对列表中的每个项目而不是列表中的所有项目一次运行一次。
Ansible 版本:2.6.1
Tasks.yaml
:
---
- name: Task 1
debug:
msg: "Message 1: {{ item }}"
with_items: "{{ messages }}"
- name: Task 2
debug:
msg: "Message 2: {{ item }}"
with_items: "{{ messages }}"
剧本:
- hosts: localhost
gather_facts: no
tasks:
- import_tasks: Tasks.yml
vars:
messages:
- 1
- 2
这是我的预期结果:
Task 1 with Item 1
Task 2 with Item 1
Task 3 with Item 1
Task 1 with Item 2
Task 2 with Item 2
Task 3 with Item 2
Task 1 with Item 3
Task 2 with Item 3
Task 3 with Item 3
但是当我执行剧本时,它是这样的:
Task 1 with Item 1
Task 1 with Item 2
Task 2 with Item 1
Task 2 with Item 2
Task 3 with Item 1
Task 3 with Item 2
...
我尝试了 import 和 include - 两者都有相同的结果。
解决方案
你playbook.yml
应该实现一个循环(注意你不能用 循环import_tasks
;它会引发错误):
- hosts: localhost
connection: local
gather_facts: no
vars:
messages:
- 1
- 2
- 3
tasks:
- include_tasks: Tasks.yml
loop: "{{ messages }}"
Tasks.yml
应该看起来像这样(里面没有循环):
---
- name: Task 1
debug:
msg: "Message 1: {{ item }}"
- name: Task 2
debug:
msg: "Message 2: {{ item }}"
推荐阅读
- python - 为 Python 安装 LSSVR
- java - 我如何更改在 jhipster 中显示这些消息的顺序(最新消息在顶部)
- php - 如何将数据放入mysql数据库[错误]
- javascript - 窗口宽度小于 600px 时如何禁用 MUI Grid 项堆叠
- yaml - 在规则关键字之前覆盖 gitlab-ci 管道变量
- counter - PSoC 5,作为编码器的 Counter UpCnt 和 DwnCnt 模式
- kubernetes - 使用 Kuberentes 对象进行悲观锁定
- html - 相对于父容器的粘性位置
- c# - 如何使用 Select 2 从下拉列表中获取选定的值
- azure-cosmosdb - CosmosDB SQL API 插入或合并