【Ansible】whenで処理を分岐させてみた
【結論】
- Ansibleで、プログラムの
if
文に相当する処理を行いたい場合はwhen
を使う。 when
はif文と同じノリで条件式を記述することができる。
【目次】
はじめに
Pythonプログラム読めない私がAnsibleのYAMLの書き方を理解するための備忘録です。
よって、Pythonの基礎文法については解説しません。
Pythonで書いた場合
var_boolean = True var_num1 = 10 var_num2 = 20 var_string = "hoge" if var_boolean: print(f"check boolean -> {var_boolean}") if (var_num1 + var_num2) == 30: print(f"check num -> {var_num1 + var_num2}") if var_string == "hoge": print(f"check string -> {var_boolean}")
Ansibleで書いた場合
プレイブック(.yml形式)
--- - hosts: localhost # 自分自身に接続する tasks: # 以降がPythonソースに該当する部分 - set_fact: var_boolean: true var_num1: 10 var_num2: 20 var_string: "hoge" - debug: msg="check boolean -> {{ var_boolean }}" when: var_boolean == true - debug: msg="check num -> {{ var_num1 + var_num2 }}" when: (var_num1 + var_num2) == 30 - debug: msg="check string -> {{ var_string }}" when: var_string == "hoge"
set_fact
モジュールで変数を宣言して、debug
モジュールでログを出力するかの判定をwhen
で行なっています。
実行結果
ワーニングが出ている理由、hosts
でインベントリファイルのグループを指定せずにlocalhost(自分自身に接続するためのIPアドレスが格納された変数)を指定しているためです。
参考情報
さいごに
「Windows使いづらい😭」
などと開発言語や開発環境に対して嘆いている暇があるのなら、
- 日本語を使って正確な情報のやりとりしたり、
- 相手が何を求めているかを把握して求めているものを提供できるように行動したり、
- 情報を整理する能力だったり、
- …etc
といった社会人として生きていく上で基礎的なヒューマンスキルを磨くべきだなと、本日の設計担当との打ち合わせの内容を振り返って思いました。