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

インフラサーバ

file モジュールについて

file モジュールを使用することで管理対象機器について以下のような操作ができます。

  • 指定したファイル/ディレクトリのパーミッションの変更
  • 空ファイルの作成
  • ディレクトリの新規作成
  • ハードリンク/シンボリックリンクの作成/変更

◆ 公式ドキュメント

ansible.builtin.file – Manage files and file properties — Ansible Documentation

主なパラメータ

パラメータ必須選択肢/デフォルト説明
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

※中間のディレクトリが存在しない場合は中間のディレクトリも作成されます

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

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