ログってなんぼ

日々のメモです

ansibleでディレクトリの存在チェックをする

ディレクトリを作成するタスクに、ディレクトリの存在チェックを導入するメモ

失敗例

普通にディレクトリを作成

  - name: ディレクトリを作る
    become: True
    file: path={{ file_mountpoint }} state=directory owner=root group=root mode=0755

2回目以降の実行

TASK [app : ディレクトリを作る] *******************************************************
fatal: [app01]: FAILED! => {"changed": false, "failed": true, "gid": 99, "group": "nobody", "mode": "0755", "msg": "chown failed", "owner": "nobody", "path": "/hoge_mountpoint", "size": 4096, "state": "directory", "uid": 99}

既に存在するためエラーになる

存在チェック導入例

statを使ってチェックする

  - name: ディレクトリの存在チェック
    stat: path={{ file_mountpoint }}
    register: fm
  - name: ディレクトリを作る
    become: True
    file: path={{ file_mountpoint }} state=directory owner=root group=root mode=0755
    when: not fm.stat.exists

実行

TASK [app : ディレクトリのチェック] *****************************************************
ok: [app01]

TASK [app : ディレクトリを作る] *******************************************************
skipping: [app01]

存在したためスキップされた

statモジュールについての詳細

stat - retrieve file or file system status — Ansible Documentation

こちら熟読

初めてのAnsible

初めてのAnsible

ansibleはドキュメントが読みやすくて( ・∀・)イイ!!