Ansibleでファイルの存在に応じてコマンドの条件分岐
概要
特定のファイルがある場合は実行せず、なければ実行するような条件分岐を入れて、べき等性を担保する方法です。
ソース
最初にstatモジュールでファイルの有無をチェックして、変数sqlupdate_cmdに入れます。
そのsqlupdate_cmdの変数からstatモジュールのexistsを使うとファイルの存在チェックで判定できます。
statで変数に入れておくことで、他にも使えるモジュールがあるので ls -l
や test -e
でチェックうするより汎用性が高いです。
https://docs.ansible.com/ansible/devel/collections/ansible/builtin/stat_module.html
tags: base
git:
repo: git://bisqwit.iki.fi/sqlupdate.git
dest: /usr/local/src/sqlupdate
remote: "origin/release"
accept_hostkey: yes
- name: check sqlupdate command
tags: base
stat:
path: /usr/local/bin/sqlupdate
register: sqlupdate_cmd
- name: configure sqlupdate
tags: base
command:
cmd: "./configure"
chdir: /usr/local/src/sqlupdate
ignore_errors: True
when: sqlupdate_cmd.stat.exists == false
- name: make sqlupdate
tags: base
make:
chdir: /usr/local/src/sqlupdate
when: sqlupdate_cmd.stat.exists == false
- name: make install sqlupdate
tags: base
make:
chdir: /usr/local/src/sqlupdate
target: install
when: sqlupdate_cmd.stat.exists == false