Несколько циклов в задании - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь использовать переменные для выполнения циклов в ansible, но я изо всех сил пытаюсь заставить их работать. В документации говорится об атрибуте loop, но, насколько я могу судить, это работает, только если у вас есть один цикл в задаче.

Можно ли использовать в цикле разные циклы или его нужно разбить на разные задачи?

- 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": "Задача включает в себя параметр с неопределенной переменной. Ошибка была: 'объект списка' не имеет атрибута 'direction'

1 Ответ

0 голосов
/ 01 ноября 2018

Что вам нужно, это with_nested. Это:

---
- 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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...