file モジュールについて
file モジュールを使用することで管理対象機器について以下のような操作ができます。
- 指定したファイル/ディレクトリのパーミッションの変更
- 空ファイルの作成
- ディレクトリの新規作成
- ハードリンク/シンボリックリンクの作成/変更
主なパラメータ
パラメータ | 必須 | 選択肢/デフォルト | 説明 |
path | ● | 操作対象ファイルのパスを指定 | |
state | ・absent ・directory ・file ← ・hard ・link ・touch | ・absent → 削除する場合 ・directory → ディレクトリを操作する場合 / 新規ディレクトリを作成する場合 ・file → 既存のファイルを操作する場合 ・hard → ハードリンクを操作する場合 ・link → シンボリックリンクを操作する場合 ・touch → 新規からファイル作成 / 既存ファイルのタイムスタンプ更新する場合 | |
owner | ファイル/ディレクトリの所有ユーザ | ||
group | ファイル/ディレクトリの所有グループ | ||
mode | ファイル/ディレクトリの権限 例:“0664”、”u=rw,g=r,o=r” | ||
recurse | ・no ← ・yes | state = directory の場合に使用するパラメータ 再帰的に属性を設定するかどうかを指定 |
使用例
作業環境
- CentOS 8.0
- Python 3.7.7
- Ansible 2.9.6
空ファイル作成
- /root/dir 配下に test.conf という空ファイルを作成する
■ Ansible 実行前の状態
# ls -l /root/dir
total 0
■ playbook.yml
- hosts: all
become: yes
tasks:
- name: file test
file:
path: /root/dir/test.conf
state: touch
owner: root
group: root
mode: 0644
■ Ansible 実行後の状態
# ls -l /root/dir
total 0
-rw-r--r-- 1 root root 0 Apr 21 08:55 test.conf
ファイルの権限変更
- /root/dir/test.conf ファイルの権限を 0664 に変更する
■ Ansible 実行前の状態
# ls -l /root/dir
total 0
-rw-r--r-- 1 root root 0 Apr 21 08:55 test.conf
■ playbook.yml
- hosts: all
become: yes
tasks:
- name: file test
file:
path: /root/dir/test.conf
state: file
owner: root
group: root
mode: 0664
■ Ansible 実行後の状態
# ls -l /root/dir
total 0
-rw-rw-r-- 1 root root 0 Apr 21 08:55 test.conf
ディレクトリの作成
- /root/dir/dir2/dir3/ というディレクトリを新規作成する
■ Ansible 実行前の状態
# tree /root/dir
/root/dir
■ playbook.yml
- hosts: all
become: yes
tasks:
- name: file test
file:
path: /root/dir/dir2/dir3/
state: directory
owner: root
group: root
mode: 0664
■ Ansible 実行後の状態
# tree /root/dir --charset=o
/root/dir
`-- dir2
`-- dir3
※中間のディレクトリが存在しない場合は中間のディレクトリも作成されます
―――――――――――――