私は Ansible を初めて使用し、ファイルをリモート サーバーにコピーするロールを作成しようとしています。Playbook を実行するたびに、ローカル ファイルに異なる名前を付けることができますが、次のようにリモートで同じ名前にコピーする必要があります。
- name: copy file
copy:
src=*.txt
dest=/path/to/fixedname.txt
Ansible ではワイルドカードを使用できないため、メインの Playbook のタスクを使用して簡単な Playbook を作成すると、次のことができます。
- name: find the filename
connection: local
shell: "ls -1 files/*.txt"
register: myfile
- name: copy file
copy:
src="files/{{ item }}"
dest=/path/to/fixedname.txt
with_items:
- myfile.stdout_lines
ただし、タスクをロールに移動すると、最初のアクションが機能しなくなりました。これは、Playbook が「ロール」ディレクトリのルート ディレクトリで実行されている間、相対パスがロールに対して相対的であるためです。ロールのファイル ディレクトリへのパスを追加できますが、もっと洗練された方法はありますか?