目的
- アンカーを利用し重複表現を減らす。
- 実装方法に若干癖があったので個人的にメモする。
具体的なコード
- 良くないケース
# hoge = 1
# fuga = 1
- name: hoge1
debug:
msg: "hoge1"
when: hoge == fuga
- name: hoge2
debug:
msg: "hoge2"
when: hoge == fuga
# ※ whenは変数展開に"{{}}"を使用しない、使用した場合は全部文字列になる。
- 改善版
# hoge = 1
# fuga = 1
# no_log: trueでアンカーを定義しつつplaybook実行時のlogを汚さない。
- debug:
vars:
- &anchor_hoge
when: hoge == fuga
no_log: true
- name: hoge1
debug:
msg: "hoge1"
<<: *anchor_hoge
- name: hoge2
debug:
msg: "hoge2"
<<: *anchor_hoge
おまけ
- モジュール: 値 (when: hoge)をアンカーに定義するのではなく値のみ(hoge)をアンカー定義し呼び出す方法。
-
<<
の記述がいらない。 - (こちら間違ってたらすいません)
- debug:
vars:
- &anchor_hoge
hoge: true
no_log: true
- name: hoge
debug:
msg: "hoge"
when: *anchor_hoge
補足
- 今回は概要程度なので大した重複ではなくメリットをそこまで感じにくいかもしれないが、
when
だけでなくwith_items
なども同時に利用されるケースではセットで
アンカーに処理を突っ込めるので良いと思った。