ロール内にコピータスクがあり、src
の場所は、ロールを呼び出すプレイブックではなく、ロール自体に相対的であることを期待していました。
これをどのように機能させ、myfrole/files
内のタスクからmyrole/tasks
のファイルを使用するのですか、あまり意味をなさないので、パスの一部としてロール名を含めたくありません。ロールを複製すると、それが壊れます。
パスをまったく指定せず、ファイル名のみを指定すると、Ansibleはロールのfiles
ディレクトリからそれを自動的に選択します。
さらに、Ansible 1.8以降では、 copy タスクで使用できる変数role_path
があります。
- copy:
src: "{{ role_path }}/files/foo.conf"
dest: /etc/foo.conf
files
ディレクトリに保存されている限り、コピーするファイルのパスを指定する必要はありません。
役割は次のようになります。
my-awesome-role
├───files
│ my-awesome-file
└───tasks
main.yml
そして、tasks/main.yml
でcopyを呼び出す方法は次のとおりです。
- copy:
src: my-awesome-file
dest: '{{ some_destination }}'