template モジュールについて
template モジュールを使用することで、Ansible マシンのローカルに存在するテンプレートファイルを管理対象機器側へ転送することができます。
- テンプレートファイル内では変数を使用することができます
- テンプレートファイル内では jinja2 という python 用のテンプレートエンジンライブラリを使用することができます
※ jinja2 を使用すると複雑になるのであまり使わない方が良いかもしれません
主なパラメータ
パラメータ | 必須 | 選択肢/デフォルト | 説明 |
src | ● | Ansible マシン側のテンプレートファイルのパス | |
dest | ● | 管理対象機器側の転送先のパス | |
owner | 転送後のファイルの所有ユーザ | ||
group | 転送後のファイルの所有グループ | ||
mode | 転送後のファイルの権限 例:“0664”、”u=rw,g=r,o=r” | ||
force | ・no ・yes ← | ・yes ⇒ dest が存在する場合、内容が異なればファイルを置換 ・no ⇒ dest が存在しない場合のみファイルを転送する |
使用例
作業環境
- CentOS 8.0
- Python 3.7.7
- Ansible 2.9.6
使用例
- 転送元(Ansible側) → /root/test.tpl
- 転送先(管理対象側) → /root/sample.conf
- 所有ユーザ、所有グループ、権限 → root, root, 0664
■ /root/test.tpl
aaaa
bbbbb
ddddd
{{ sample_var }}
※ {{ sample_var }} の部分が変数
■ playbook.yml
- hosts: all
become: yes
vars:
- sample_var: eeeeee
tasks:
- name: template test
template:
src: /root/test.tpl
dest: /root/sample.conf
owner: root
group: root
mode: 0664
■ Ansible 実行後の管理対象機器側の /root/sample.conf ファイル内容
# cat sample.conf
aaaa
bbbbb
ddddd
eeeeee
テンプレートファイル test.tpl の {{ sample_var }} の部分が eeeeee に置換されたファイルになっていることが確認できます。
―――――――――――――