массив над массивом создать папку ansible - PullRequest
1 голос
/ 06 ноября 2019

Я пытался with_items с *, но похоже, что он не поддерживает.

vars/main.yml

---
Z:
  A1:
    - "a"
    - "b"
  A2: "c"
  A3:
    - "d"
    - "e"

tasks/main.yml

---
- name: Create folder
  file:
    path: "{{ item }}"
    state: directory
    mode: '0755'
    owner: tomcat
    group: tomcat
  with_items:
    - "/opt/Z/{{ Z.A1.* }}"
    - "/opt/Z/{{ Z.A1.* }}/in"
    - "/opt/Z/{{ Z.A1.* }}/in/output/"
    - "/opt/Z/{{ Z.A1.* }}/in/output/fail"
    - "/opt/Z/{{ Z.A1.* }}/in/output/success"

Я хотел бы получить следующий вывод, я не уверен, как использовать with_items с массивом над массивом.

  /opt/Z/a
  /opt/Z/a/in
  /opt/Z/a/in/output/
  /opt/Z/a/in/output/fail
  /opt/Z/a/in/output/success

  /opt/Z/b
  /opt/Z/b/in
  /opt/Z/b/in/output/
  /opt/Z/b/in/output/fail
  /opt/Z/b/in/output/success

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Фильтр product выполняет свою работу. Например, пьеса

  vars:
    Z:
      A1:
        - "a"
        - "b"
      A2:
        - "c"
      A3:
        - "d"
        - "e"
    list2:
      - ""
      - "/in"
      - "/in/output/"
      - "/in/output/fail"
      - "/in/output/success"

  tasks:
    - debug:
        msg: "/opt/Z/{{ item.0 }}{{ item.1 }}"
      loop: "{{ Z.A1|product(list2)|list }}"

дает

  msg: /opt/Z/a
  msg: /opt/Z/a/in
  msg: /opt/Z/a/in/output/
  msg: /opt/Z/a/in/output/fail
  msg: /opt/Z/a/in/output/success
  msg: /opt/Z/b
  msg: /opt/Z/b/in
  msg: /opt/Z/b/in/output/
  msg: /opt/Z/b/in/output/fail
  msg: /opt/Z/b/in/output/success
0 голосов
/ 06 ноября 2019

Это выглядит хорошо при использовании с debug, но когда я использую loop с file, вывод плохой: (* ​​1004 *

- name: Create folders
  file:
    path: "/opt/Z/{{ item.0 }}{{ item.1 }}"
    state: directory
    mode: '0755'
  loop:
    - "{{ Z.A1|product(list2)|list }}"

дает

# tree
.
└── Z
    └── ['a',\ '']['a',\ '
        └── in']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...