역할에 상대적으로 ansible로 파일을 복사하는 방법은 무엇입니까?


78

역할 내부에 복사 작업이 있으며 src위치가 역할을 호출하는 플레이 북이 아니라 역할 자체에 상대적 일 것이라고 예상했습니다 .

이 작업을 수행하고 myfrole/files내부 작업 의 파일을 사용하는 방법은 myrole/tasks별로 의미가 없으므로 역할 이름을 경로의 일부로 포함하고 싶지 않습니다. 내가 할 경우 역할을 복제하면 중단됩니다.

답변:


160

경로를 전혀 제공하지 않고 파일 이름 만 제공하면 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

역할을 사용하지 않는 경우 어떻게합니까? (당신은 항상 역할을 사용할 수 있습니까?)
알렉스

1
@alex 사용할 수 있습니다 {{ playbook_dir }}. 역할을 사용해야하는 경우 프로젝트의 크기와 플레이 북이 작은 일 하나 이상 만 수행해야하는지 여부에 따라 다릅니다. 개인적으로 나는 무언가를 빠르게 테스트하는 것 외에 역할을 사용하지 않는 유효한 사례를 보지 못했습니다.
udondan

29

files디렉토리에 저장되어있는 한 복사 할 파일의 경로를 지정할 필요가 없습니다 .

역할은 다음과 같습니다.

my-awesome-role
├───files
│       my-awesome-file
└───tasks
        main.yml

다음은에서 copy를 호출하는 방법입니다 tasks/main.yml.

- copy:
    src: my-awesome-file
    dest: '{{ some_destination }}'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.