Ansible:templateモジュールについて(Ansible 2.9.6)

インフラサーバ

template モジュールについて

template モジュールを使用することで、Ansible マシンのローカルに存在するテンプレートファイルを管理対象機器側へ転送することができます。

  • テンプレートファイル内では変数を使用することができます
  • テンプレートファイル内では jinja2 という python 用のテンプレートエンジンライブラリを使用することができます

※ jinja2 を使用すると複雑になるのであまり使わない方が良いかもしれません

◆公式ドキュメント

ansible.builtin.template – Template a file out to a remote server — Ansible Documentation

主なパラメータ

パラメータ必須選択肢/デフォルト説明
srcAnsible マシン側のテンプレートファイルのパス
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 に置換されたファイルになっていることが確認できます。

―――――――――――――

タイトルとURLをコピーしました