역할 내부에 복사 작업이 있으며 src
위치가 역할을 호출하는 플레이 북이 아니라 역할 자체에 상대적 일 것이라고 예상했습니다 .
이 작업을 수행하고 myfrole/files
내부 작업 의 파일을 사용하는 방법은 myrole/tasks
별로 의미가 없으므로 역할 이름을 경로의 일부로 포함하고 싶지 않습니다. 내가 할 경우 역할을 복제하면 중단됩니다.
답변:
경로를 전혀 제공하지 않고 파일 이름 만 제공하면 Ansible은 files
역할 의 디렉토리 에서 자동으로 선택합니다 .
- copy:
src: foo.conf
dest: /etc/foo.conf
또한 Ansible 1.8부터 복사 작업에 role_path
사용할 수 있는 변수 가 있습니다 .
- copy:
src: "{{ role_path }}/files/foo.conf"
dest: /etc/foo.conf
{{ playbook_dir }}
. 역할을 사용해야하는 경우 프로젝트의 크기와 플레이 북이 작은 일 하나 이상 만 수행해야하는지 여부에 따라 다릅니다. 개인적으로 나는 무언가를 빠르게 테스트하는 것 외에 역할을 사용하지 않는 유효한 사례를 보지 못했습니다.
files
디렉토리에 저장되어있는 한 복사 할 파일의 경로를 지정할 필요가 없습니다 .
역할은 다음과 같습니다.
my-awesome-role
├───files
│ my-awesome-file
└───tasks
main.yml
다음은에서 copy를 호출하는 방법입니다 tasks/main.yml
.
- copy:
src: my-awesome-file
dest: '{{ some_destination }}'