web-dev-qa-db-ja.com

ロールに相対的にansibleでファイルをコピーする方法は?

ロール内にコピータスクがあり、srcの場所は、ロールを呼び出すプレイブックではなく、ロール自体に相対的であることを期待していました。

これをどのように機能させ、myfrole/files内のタスクからmyrole/tasksのファイルを使用するのですか、あまり意味をなさないので、パスの一部としてロール名を含めたくありません。ロールを複製すると、それが壊れます。

58
sorin

パスをまったく指定せず、ファイル名のみを指定すると、Ansibleはロールのfilesディレクトリからそれを自動的に選択します。

さらに、Ansible 1.8以降では、 copy タスクで使用できる変数role_pathがあります。

- copy:
    src: "{{ role_path }}/files/foo.conf"
    dest: /etc/foo.conf
116
udondan

filesディレクトリに保存されている限り、コピーするファイルのパスを指定する必要はありません。

役割は次のようになります。

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

そして、tasks/main.ymlでcopyを呼び出す方法は次のとおりです。

- copy:
    src: my-awesome-file
    dest: '{{ some_destination }}'
4
avi.elkharrat