Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 可分解任务中的多个循环_Loops_Ansible - Fatal编程技术网

Loops 可分解任务中的多个循环

Loops 可分解任务中的多个循环,loops,ansible,Loops,Ansible,我试图使用vars在ansible中执行循环,但我很难让它们工作。文档中讨论了循环属性,但据我所知,这仅在任务中有一个循环时有效 是否可以在任务中使用不同的循环,或者必须将其拆分为不同的任务 - name: "Configure ufw" ufw: policy: "{{ defaults.policy }}" direction: "{{ defaults.direction }}" rule: allow src:

我试图使用vars在ansible中执行循环,但我很难让它们工作。文档中讨论了
循环
属性,但据我所知,这仅在任务中有一个循环时有效

是否可以在任务中使用不同的循环,或者必须将其拆分为不同的任务

- 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.*
结构被弃用,取而代之的是
循环
结构。