マシンのプロビジョニングにAnsible 1.6.6
を使用しています。
Jinja2テンプレートから宛先ファイルを作成する テンプレートタスク が私のプレイブックにあります:
tasks:
- template: src=somefile.j2 dest=/etc/somefile.conf
somefile.conf
が既に存在する場合は、置き換えたくありません。 Ansibleで可能ですか?もしそうなら、どうですか?
Statを使用してファイルの存在を確認し、ファイルが存在しない場合にのみテンプレートを使用できます。
tasks:
- stat: path=/etc/somefile.conf
register: st
- template: src=somefile.j2 dest=/etc/somefile.conf
when: not st.stat.exists
テンプレートモジュールの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で、内容がソースと異なる場合にリモートファイルを置き換えます。いいえの場合、宛先が存在しない場合にのみファイルが転送されます。
forceパラメータが記述された後に追加されたため、他の回答はstat
を使用します。
最初に宛先ファイルが存在するかどうかを確認してから、その結果の出力に基づいて決定を行うことができます。
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