まくろぐ
更新: / 作成:

コマンドが既に存在するかどうかチェックする

次の例では、docker コマンドが存在しない場合のみ、get-docker.sh スクリプトを実行して Docker をインストールしています。

- name: Check if docker command exists
  ansible.builtin.shell:
    cmd: command -v docker
  register: docker_exists
  ignore_errors: yes

- name: Install Docker
  when: docker_exists is failed
  ansible.builtin.shell:
    cmd: sh ~/get-docker.sh

command -v <コマンド名> とすると、指定したコマンドがインストールされているときのみリターンコードが 0(成功)になることを利用しています。 この振る舞いは、次のように $?(リターンコード)の値を参照することで確かめられます。

$ command -v pwd
pwd
$ echo $?
0  (pwd コマンドは存在するのでリターンコードは 0)

$ command -v hoge
$ echo $?
1  (hoge コマンドは存在しないのでリターンコードは 1)

関連記事

まくろぐ
サイトマップまくへのメッセージ