Ansible файл передачи тем временем автоматически создает папку, если она не существует - PullRequest
0 голосов
/ 11 июля 2020

Есть ли способ скопировать файл, тем временем создать папку, если она не существует?

Ниже мой код для копирования, однако он не работает, поскольку он создает source_code_management как файл, а не как каталог.

- name: Transfer file
  copy:
    src: "{{ playbook_dir }}/roles/source_code_management/logger.xml"
    dest: "{{ configuration_path }}"

Причина, по которой я хочу sh создавать и копировать одновременно, заключается в том, что Jenkins передаст путь / имя_файла .

Ответы [ 2 ]

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

К сожалению, вы не можете сделать это за один шаг с помощью Ansible.

Это говорит о том, что если у вас есть /path/to/file, сохраненный в переменной, все же есть дополнительный фильтр Jinja, который подходит для задание: фильтр dirname, который получает каталог по пути вроде / путь / к / файлу .

С ними вы можете сначала создать свой каталог, затем скопируйте файл:

- name: First, create the directory
  file:
    path: "{{ configuration_path | dirname }}"
    state: directory
    recurse: yes
- name: Then, transfer the file
  copy:
    src: "{{ playbook_dir }}/roles/source_code_management/logger.xml"
    dest: "{{ configuration_path }}"
0 голосов
/ 11 июля 2020

вам необходимо добавить задачу перед этим, чтобы убедиться, что каталог существует:

- name: Directory source code exists
  file:
    src: "{{ playbook_dir }}/roles/source_code_management"
    state: directory

Так работает до сих пор (ansible 2.9 и ранее)

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