Loops 可分解任务中的多个循环
我试图使用vars在ansible中执行循环,但我很难让它们工作。文档中讨论了Loops 可分解任务中的多个循环,loops,ansible,Loops,Ansible,我试图使用vars在ansible中执行循环,但我很难让它们工作。文档中讨论了循环属性,但据我所知,这仅在任务中有一个循环时有效 是否可以在任务中使用不同的循环,或者必须将其拆分为不同的任务 - name: "Configure ufw" ufw: policy: "{{ defaults.policy }}" direction: "{{ defaults.direction }}" rule: allow src:
循环
属性,但据我所知,这仅在任务中有一个循环时有效
是否可以在任务中使用不同的循环,或者必须将其拆分为不同的任务
- name: "Configure ufw"
ufw:
policy: "{{ defaults.policy }}"
direction: "{{ defaults.direction }}"
rule: allow
src: "{{ rules }}"
logging: on
state: enabled
vars:
defaults:
- { direction: incoming, policy: deny }
- { direction: outgoing, policy: allow }
rules:
- 80/tcp
- 443/tcp
当我运行代码时,我得到了错误
“msg”:“该任务包含一个带有未定义变量的选项。错误为:'列表对象'没有“方向”属性”
您需要的是嵌套的
。这:
---
- hosts: localhost
become: no
connection: local
vars:
defaults:
- { direction: incoming, policy: deny }
- { direction: outgoing, policy: allow }
rules:
- 80/tcp
- 443/tcp
tasks:
- name: Change connect file to bulk mode
debug:
msg: "{{ item.0.direction }}: {{ item.1 }}"
with_nested:
- "{{ defaults }}"
- "{{ rules }}"
给出此输出:
TASK [Change connect file to bulk mode] *********************************************************************************************
ok: [localhost] => (item=None) => {
"msg": "incoming: 80/tcp"
}
ok: [localhost] => (item=None) => {
"msg": "incoming: 443/tcp"
}
ok: [localhost] => (item=None) => {
"msg": "outgoing: 80/tcp"
}
ok: [localhost] => (item=None) => {
"msg": "outgoing: 443/tcp"
}
…尽管注意到最近的ansible(我认为是2.7及更高版本)中,with.*
结构被弃用,取而代之的是循环
结构。