2022.01.29  

【Ansible】if文で条件分岐させる(if~elfi~else)

Ansible    

Ansibleでif文を使用する方法を記載します。
書き方は下記例のcommand:部分のようになります。
この処理はansible-playbookコマンドに指定する-eオプションでechoコマンドの出力結果を制御しています。

playbook.yml
- hosts: group1

  tasks:
  - name: echo実行
    command: >- 
      {%- if key == 'A' -%}   echo "Aです"
      {%- elif key == 'B' -%} echo "Bです"
      {%- else -%}            echo "引数が正しくありません"
      {%- endif -%}
    register: command_result

  - name: echo結果確認
    debug:
      msg: "{{ command_result.stdout }}"

動きとしては、ansible-playbook -i hosts playbook.yml -e "key=X"X部分に、
Aを設定すれば「Aです」が出力され、
Bを設定すれば「Bです」が出力され、
それ以外だと「引数が正しくありません」と出力されます。

command: >->-部分は改行をスペースに変換するyamlファイルの構文です。参考

{%- -%}はjinja2というpythonのWeb開発でよく使用されるテンプレートエンジンです。Ansibleではjinja2が使用できるため上記のような記述ができる訳です。参考

実行例

上記の例のplaybook.ymlを実行すると次のような結果となります。

インベントリファイル(hosts)の中身を知りたい方は次の記事をご参照ください。【参考】インベントリファイル(hosts)の内容

実行例
(base) mbp:ansible_work user$ ansible-playbook -i hosts playbook.yml -e "key=A"

PLAY [group1] *****************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************
ok: [55.66.123.178]

TASK [echo実行] ***************************************************************************************************************************************************************************
changed: [55.66.123.178]

TASK [echo結果確認] ***********************************************************************************************************************************************************************
ok: [55.66.123.178] => {
    "msg": "Aです"
}

PLAY RECAP ********************************************************************************************************************************************************************************
55.66.123.178              : ok=3    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

Udemy動画

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信