如果不存在,有没有办法复制文件同时创建文件夹?
下面是我要复制的代码,但是,由于它将source_code_management
创建为文件而不是目录,因此无法正常工作。
- name: Transfer file
copy:
src: "{{ playbook_dir }}/roles/source_code_management/logger.xml"
dest: "{{ configuration_path }}"
我希望同时创建和复制的原因是,詹金斯将通过 path / file_name 。
答案 0 :(得分:0)
您需要在此之前添加任务以确保目录存在:
- name: Directory source code exists
file:
src: "{{ playbook_dir }}/roles/source_code_management"
state: directory
这是直到现在(2.9和之前的版本)的工作方式
答案 1 :(得分:0)
遗憾的是,您无法通过Ansible一步完成此操作。
这就是说,如果您将/path/to/file
存储在变量中,那么仍然有一个额外的Jinja过滤器适合该工作:过滤器dirname
从类似 / path / to / file 。
如果可以的话,请首先创建目录,然后复制文件:
- 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 }}"