【モジュールの使い方】Template
機能
templateモジュールを使用することで、Ansibleマシンのローカルに存在する
テンプレートファイルをhostsで指定したサーバへ転送することが出来る。
- テンプレートファイル内では変数を使用可能
- テンプレートファイル内ではjinja2というpython用のテンプレートエンジンライブラリを使用可能 ※jinja2を使用すると複雑になるので使わないほうがいいかも
使用例
- 転送元(クライアントローカル側):/root/copyFile/index.tpl
- 転送先(指定したサーバ側):/root/sample.conf
- 所有ユーザ、所有グループ、権限:root,root,0664
/root/test.tpl
test01 test02 test03 {{ sample_add_var }}
※{{ sample_add_var }}の部分が変数
playbook.yml
- hosts: group1 become: yes vars: - sample_add_var: test04 tasks: - name: template test template: src: /root/copyFile/index.tpl dest: /root/sample.conf owner: root group: root mode: 0664
Ansible実行後の指定したサーバ側の'/home/centos/sample.conf'ファイル内容
test01 test02 test03 test04
テンプレートファイル'test.tpl'の{{ sample_add_var }}の部分がtest04
に置換されたファイルになる。
主なパラメータ
パラメータ | 必須 | デフォルト値 | 選択肢 | 説明 |
---|---|---|---|---|
src | ● | ローカル環境のファイル/ディレクトリパス(転送元パス) ディレクトリの場合 ・パスが"/"で終わる場合ディレクトリの中身のみ転送する ・パスの最後が"/"でない場合ディレクトリごと転送する。 |
||
dest | ● | hostsで指定したサーバのパス(転送先パス) srcがディレクトリの場合、destもディレクトにする必要がある |
||
owner | 転送後のファイル/ディレクトリの所有ユーザ | |||
group | 転送後のファイル/ディレクトリの所有グループ | |||
mode | 転送後のファイル/ディレクトリの権限 例:"0664"、"u=rw,g=r,o=r" |
|||
force | yes | yes no |
yes:destが存在する場合、内容が異なればsrcで置換 no:destが存在しない場合のみsrcを転送 |
全パラメータ
パラメータ | 必須 | デフォルト値 | 選択肢 | 説明 |
---|---|---|---|---|
attributes | 結果として得られるファイルやディレクトリが持つべき属性 サポートされているフラグを取得するには、ターゲットシステムのchattrのマニュアルページを参照 この文字列には、lsattrによって表示されるものと同じ順序で属性を含める必要があります。 「=」演算子がデフォルトで、それ以外の場合は「+」または「-」演算子を文字列に含める必要がある エイリアス:attr |
|||
backup | no | yes no |
タイムスタンプ情報を含むバックアップファイルを作成して、誤って上書きしてしまった場合に元のファイルを取り戻すことができるようにします。 | |
block_end_string | "%}" | ブロックの終わりを示す文字列 | ||
block_start_string | "%}" | ブロックの開始を示す文字列 | ||
comment_end_string | コメントステートメントの終わりを示す文字列 | |||
comment_start_string | コメントステートメントの開始を示す文字列 | |||
dest | ● | hostsで指定したサーバのパス(転送先パス) srcがディレクトリの場合、destもディレクトにする必要がある |
||
follow | no | yes no |
シンボリックリンクをたどるかどうかを決定します yesに設定すると、シンボリックリンクが存在する場合はそれから辿れる。 noに設定すると、シンボリックリンクは辿られません。 Ansible2.4より前では、これはyesとしてハードコーディングされていました。 |
|
force | yse | yes no |
yes:destが存在する場合、内容が異なればsrcで置換 no:destが存在しない場合のみsrcを転送 |
|
group | 転送後のファイル/ディレクトリの所有グループ | |||
lstrip_blocks | no | yes no |
先頭のスペースとタブを削除するタイミングを決定します。 yesに設定すると、先頭のスペースとタブが行頭からブロックまで取り除かれます。 |
|
mode | 転送後のファイル/ディレクトリの権限 例:"0664"、"u=rw,g=r,o=r" |
|||
newline_sequence | \n | \n \r \r\n |
テンプレートファイルに使用する改行シーケンスを指定します。 | |
output_encoding | utf-8 | destで定義されたテンプレートファイルの書き込みに使用されるエンコーディングをオーバライドします。 デフォルトではutf-8ですが、Pythonでサポートされている任意のエンコーディングを使用できます。 ソーステンプレートファイルは、均質性のために常に、utf-8を使用してエンコードする必要があります。 |
||
owner | 転送後のファイル/ディレクトリの所有ユーザ | |||
selevel | SELinuxファイルコンテキストのレベル部分 MLS/MCS属性であり、rangeとも呼ばれる _defaultに設定すると、ポリシーのlevel部分が使用可能な場合はそれが使用される |
|||
serole | SELinuxファイルコンテキストのレベル部分 _defaultに設定すると、ポリシーのrole部分が使用可能な場合はそれが使用される |
|||
settype | SELinuxファイルコンテキストのレベル部分 _defaultに設定すると、ポリシーのtype部分が使用可能な場合はそれが使用される |
|||
seuser | SELinuxファイルコンテキストのレベル部分 デフォルトでは、該当する場合はsystemポリシーを使用します _defaultに設定すると、ポリシーのuser部分が使用可能な場合はそれが使用される |
|||
src | ● | ローカル環境のファイル/ディレクトリパス(転送元パス) ディレクトリの場合 ・パスが"/"で終わる場合ディレクトリの中身のみ転送する ・パスの最後が"/"でない場合ディレクトリごと転送する。 |
||
trim_blocks | yes | yes no |
ブロックからいつ改行を削除するかを決定します。 yesに設定すると、ブロックの後の最初の改行が削除されます(変数タグではなくブロックです) |
|
unsafe_writes | no | yes no |
ターゲットファイルシステムオブジェクトからのデータの破損や一貫性のない読み取りを防ぐために、アトミック操作を使用するタイミングに影響を与えます。 デフォルトでは、このモジュールをアトミック操作を使用して、データの破損やターゲットファイルシステムオブジェクトからの一貫性のない読み取りを防ぎますが、これを防ぐ方法でシステムが構成されているか、単に壊れている場合があります。 1つの例は、Dockerによってマウントされたファイルシステムオブジェクトです。 これは、コンテナ内からアトミックに更新することは出来ず、安全でない方法のみで書き込むことが出来ます。 このオプションにより、Ansibleはアトミック操作が失敗した時にファイルシステムオブジェクトを更新する安全でない方法にフォールバックできます。(ただし、Ansibleに安全でない書き込みを強制することはありません) 重要!安全ではない書き込みは競合状態の影響を受けやすく、データの破損につながる可能性があります。 |
|
validate | 更新されたファイルを最終的に宛先にコピーする前に実行する検証コマンド 検証には一時ファイルパスが使用され、次の例のように存在する必要がある %s を介して渡されます。また、コマンドは安全に渡されるため、展開やパイプなどのシェル機能は機能しません。 このオプションが提供するものよりも複雑な検証を処理する方法の例については「複雑な構成の検証」を参照してください。 |
|||
variable_end_string | "}}" | printステートメントの終わりを示す文字列 | ||
variable_start_string | "{{}}" | printステートメントの開始を示す文字列 |
アトミック操作 他からの割り込みがない状態にすること
ドキュメント
【Ansible Documentation】Module Template