概要
ansible-plyabookの条件分岐の方法がわからず調べていて、実際に実行して成功したのでアウトプットしました。
ansible-playbookを使用して、対象のコマンドの実行結果が成功であれば「成功」のメッセージを出すようにしています。
インベントリファイル
今回はテスト用で自端末を対象にします。
[localhost]
127.0.0.1 ansible_connection=local
playbook
記載内容はuptime
コマンドを実行する項目と、レジスタ内に入っている値の表示、そして実行結果が成功だったら「成功」を実行する項目の3つで構成しています。
- hosts: localhost
tasks:
- shell: uptime
register: result
- debug:
msg: "{{ result }}"
- debug:
msg: "成功"
when: result.rc == 0
実行結果
「inventory」にインベントリファイル、「conditionsTest.yml」にplaybookの内容を記述しています。
$ ansible-playbook -i inventory conditionsTest.yml
PLAY [localhost] *******************************************************************************************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************************************************************************************************
ok: [127.0.0.1]
TASK [shell] ***********************************************************************************************************************************************************************************************
changed: [127.0.0.1]
TASK [debug] ***********************************************************************************************************************************************************************************************
ok: [127.0.0.1] => {
"msg": {
"changed": true,
"cmd": "uptime",
"delta": "0:00:00.009835",
"end": "2019-07-07 16:39:13.762565",
"failed": false,
"rc": 0,
"start": "2019-07-07 16:39:13.752730",
"stderr": "",
"stderr_lines": [],
"stdout": "16:39 up 9 days, 17:47, 7 users, load averages: 1.62 2.08 2.11",
"stdout_lines": [
"16:39 up 9 days, 17:47, 7 users, load averages: 1.62 2.08 2.11"
]
}
}
TASK [debug] ***********************************************************************************************************************************************************************************************
ok: [127.0.0.1] => {
"msg": "成功"
}
PLAY RECAP *************************************************************************************************************************************************************************************************
127.0.0.1 : ok=4 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
コマンドの実行が成功しているので「"msg": "成功"」が出力されています。
補足
shell
の実行結果をregisterで取得し、変数resultに格納しています。
「rc」に実行結果が格納されており、成功であれば0が格納されています。
そこでwhenを使用し、「uptime
の実行結果をregisterを使用してresult変数に格納、rcに0が格納されていれば成功を出力する」という条件にしています。