Ansible Documentation
template – Templates a file out to a remote server機能
- 管理サーバーから対象ホストへファイル(テンプレートファイル)をコピーする
- テンプレートファイルは jinja2 形式で記述し、ファイル拡張子は .j2 にする
- テンプレートファイルに変数を埋め込むことができ、埋め込んだ変数はコピー時に展開される
パラメータ
| パラメータ | 選択肢/ Default | 説明 |
|---|---|---|
| backup | ・ no ・ yes | コピー先に dest: で指定したファイルが存在するとき、コピー前にそのファイルのバックアップを作成するかどうか指定する ・ no : 作成しない ・ yes : 作成する |
| dest ※必須※ | - | コピー先のファイル名 |
| force | ・ no ・ yes | コピー先に dest: で指定したファイルが存在する場合、上書きするかどうか指定する ・ no : 上書きしない(コピーしない) ・ yes : 内容が異なる場合に上書きする |
| group | - | コピー後のファイルのグループを指定 |
| mode | - | コピー後のファイルのパーミッションを指定する。パーミッションは先頭に 0 を付けた 8 進数で 0644 や 01777 のように指定する。先頭に 0 を付けない場合 '644' や '1777' のようにシングルクォートでくくる。 u+rwx や u=rw,g=r,o=r のようなシンボリックモードで指定することもできる |
| owner | - | コピー後のファイルのオーナーを指定 |
| src ※必須※ | - | 絶対パスまたは相対パスで指定したコピー元のファイル名 |
| validate | - | コピーする前にファイルの内容を検証するコマンド。ファイル名は引数 %s に設定されてコマンドに渡される |
例
playbook- name: ユーザーごとの sudoers ファイルを作成する。作成前にファイルの内容が正しいかチェックする
template:
src: ./sample.j2
dest: /etc/sudoers.d/{{ item }}
mode: 0440
owner: root
group: root
validate: '/usr/sbin/visudo -cf %s'
loop:
- maeda
- hattori
- sanada
テンプレートファイル : sample.j2
{{ item }} ALL=(ALL:ALL) NOPASSWD: ALL
実行結果
[root@node1 sudoers.d]# ls -al
total 24
drwxr-x---. 2 root root 48 Mar 18 21:00 .
drwxr-xr-x. 74 root root 8192 Mar 18 20:30 ..
-r--r-----. 1 root root 36 Mar 18 21:00 hattori
-r--r-----. 1 root root 34 Mar 18 21:00 maeda
-r--r-----. 1 root root 35 Mar 18 21:00 sanada
[root@node1 sudoers.d]# cat hattori
hattori ALL=(ALL:ALL) NOPASSWD: ALL
[root@node1 sudoers.d]# cat maeda
maeda ALL=(ALL:ALL) NOPASSWD: ALL
[root@node1 sudoers.d]# cat sanada
sanada ALL=(ALL:ALL) NOPASSWD: ALL
[root@node1 sudoers.d]#