L oop несколько раз для создания нескольких каталогов - PullRequest
0 голосов
/ 12 июля 2020

Я бы хотел oop много раз создавать несколько каталогов. Я пробовал ниже, не сработало.

Не могли бы вы посоветовать?

Это моя переменная

main_dir:
  - "/exec/db/dir1"
  - "/exec/db/dir1/v1"

sub_dir:
  - { directory: "subdir/database/connection", directory: "db_connection.xml" }
  - { directory: "subdir/database/properties", directory: "application.properties" }
  - { directory: "subdir/application", directory: "index.html" }
  - { directory: "subdir/application/pom", directory: "pom.xml" }

Это моя роль в пьесе

- name: Create multiple sub directory
  file:
    path: "{{ item[0] }}/{{ item[1].directory }}"
    state: directory
  with_nested:
    - "{{ main_dir }}"
    - "{{ sub_dir }}"

Ожидаемый результат

/exec/db/dir1/subdir/database/connection
/exec/db/dir1/subdir/database/properties
/exec/db/dir1/subdir/application
/exec/db/dir1/subdir/application/pom
/exec/db/dir1/v1/subdir/database/connection
/exec/db/dir1/v1/subdir/database/properties
/exec/db/dir1/v1/subdir/application
/exec/db/dir1/v1/subdir/application/pom

1 Ответ

0 голосов
/ 12 июля 2020

Похоже, словари в вашем списке sub-dir поддельные.

Действительно, у вас есть как directory ключ как для того, что кажется каталогом, так и для файла.

Ваша переменная будет более правильной:

sub_dir:
  - { directory: "subdir/database/connection", file: "db_connection.xml" }
  - { directory: "subdir/database/properties", file: "application.properties" }
  - { directory: "subdir/application", file: "index.html" }
  - { directory: "subdir/application/pom", file: "pom.xml" }

И с этим словарем ваши playbooks работают правильно, потому что file больше не отменяет directory.

Учитывая playbook:

- hosts: all
  gather_facts: no
  
  tasks:
    - file:
        path: "{{ item[0] }}/{{ item[1].directory }}"
        state: directory
      with_nested:
        - "{{ main_dir }}"
        - "{{ sub_dir }}"
      vars:
        main_dir:
          - "/exec/db/dir1"
          - "/exec/db/dir1/v1"
        sub_dir:
          - { directory: "subdir/database/connection", file: "db_connection.xml" }
          - { directory: "subdir/database/properties", file: "application.properties" }
          - { directory: "subdir/application", file: "index.html" }
          - { directory: "subdir/application/pom", file: "pom.xml" }

Это дает резюме:

PLAY [all] ************************************************************************************************************************

TASK [file] ***********************************************************************************************************************
changed: [localhost] => (item=['/exec/db/dir1', {'directory': 'subdir/database/connection', 'file': 'db_connection.xml'}])
changed: [localhost] => (item=['/exec/db/dir1', {'directory': 'subdir/database/properties', 'file': 'application.properties'}])
changed: [localhost] => (item=['/exec/db/dir1', {'directory': 'subdir/application', 'file': 'index.html'}])
changed: [localhost] => (item=['/exec/db/dir1', {'directory': 'subdir/application/pom', 'file': 'pom.xml'}])
changed: [localhost] => (item=['/exec/db/dir1/v1', {'directory': 'subdir/database/connection', 'file': 'db_connection.xml'}])
changed: [localhost] => (item=['/exec/db/dir1/v1', {'directory': 'subdir/database/properties', 'file': 'application.properties'}])
changed: [localhost] => (item=['/exec/db/dir1/v1', {'directory': 'subdir/application', 'file': 'index.html'}])
changed: [localhost] => (item=['/exec/db/dir1/v1', {'directory': 'subdir/application/pom', 'file': 'pom.xml'}])

PLAY RECAP ************************************************************************************************************************
localhost                  : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Что создает дерево каталогов:

tree /exec/db/dir1/
/exec/db/dir1/
├── subdir
│   ├── application
│   │   └── pom
│   └── database
│       ├── connection
│       └── properties
└── v1
    └── subdir
        ├── application
        │   └── pom
        └── database
            ├── connection
            └── properties

13 directories, 0 files
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...