前提・実現したいこと
ansibleにて、jinja2テンプレートとある変数を用い、
ある変数locationが空(もしくは jinja2側で偽と判定されるもの)である場合、
jinja2テンプレートに書き込まない
という処理をしたい。
発生している問題・エラーメッセージ
過去に使用した変数値が勝手に適応され、過去の変数値でテンプレートが作成されてしまう。
該当のソースコード
!roles/snmp_conf/template/switch_template.j2------------
{% if location %}
snmp-server location {{ location }}
{% endif %}
!-------------------------------------------------------
!roles/snmp_conf/vars/main/switch.yml-------------------
location:
!-------------------------------------------------------
試したこと
①locationの変数に
location: false
location: null
を適応したが、やはり一つ前に適応した変数がlocationに入ってきてしまう。
② varsディレクトリのlocation変数は空とし、roles/snmp_conf/default/main.yml内に
location: false
を定義したが、変わらない。
③locationを殻の状態で、ansibleサーバの再起動。
結果は同じ。
④ switch_template.j2の{% if location %}を外してみて、そもそもちゃんと空として渡しているか確認
switchにsshでcli_configでコマンドを渡したとき、 snmp-server location {変数}←ここが空になって、コマンドNG
よって、varsの中のlocationは空として渡している様子。
⑤ {% if location != "test" %} として、
location: test とした場合、挙動は空のデータを渡したときと同様、一つ前に適応したlocationの変数が適応されてしまい、
snmp-server locationコマンドをテンプレートに入れないという事ができない。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/09 15:28