Ansibleでファイルの存在に応じてコマンドの条件分岐

概要

特定のファイルがある場合は実行せず、なければ実行するような条件分岐を入れて、べき等性を担保する方法です。

ソース

最初にstatモジュールでファイルの有無をチェックして、変数sqlupdate_cmdに入れます。
そのsqlupdate_cmdの変数からstatモジュールのexistsを使うとファイルの存在チェックで判定できます。
statで変数に入れておくことで、他にも使えるモジュールがあるので ls -ltest -e でチェックうするより汎用性が高いです。

https://docs.ansible.com/ansible/devel/collections/ansible/builtin/stat_module.html

- name: clone sqlupdate repos
  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