回答:
テンプレートモジュールのforceパラメータを使用できます。
tasks:
- template: src=somefile.j2 dest=/etc/somefile.conf force=no
または、タスクに名前を付ける;-)
tasks:
- name: Create file from template if it doesn't exist already.
template:
src: somefile.j2
dest:/etc/somefile.conf
force: no
Ansibleテンプレートモジュールのドキュメント:
force:デフォルトはyesで、コンテンツがソースと異なる場合にリモートファイルを置き換えます。「いいえ」の場合、宛先が存在しない場合にのみファイルが転送されます。
他の回答はstat
、forceパラメーターが書き込まれた後に追加されたために使用されます。
最初に宛先ファイルが存在するかどうかを確認してから、その結果の出力に基づいて決定を下すことができます。
tasks:
- name: Check that the somefile.conf exists
stat:
path: /etc/somefile.conf
register: stat_result
- name: Copy the template, if it doesnt exist already
template:
src: somefile.j2
dest: /etc/somefile.conf
when: stat_result.stat.exists == False
私によると、最も簡単な解決策は、テンプレートモジュールの属性「force = no」を使用することです