Ansible templateでyamlを綺麗に埋め込む

久しぶりに Ansible を書いたら初歩的なことで悩んだのでメモしておく。

Ansibleのテンプレートで yaml を生成したい。to_nice_yaml はルート要素でない場合、2行目以降でインデントが崩れてしまう。そのためregex_replaceを使うのが定石っぽい。ChatGPTできいたら multine=True が抜けた。

1
2
hoge:
{{ conf_hoge | to_nice_yaml(indent=2) | regex_replace('^', '  ', multiline=True) }}

テンプレートの生成結果はtemplateというLookupプラグインがあるので便利。

1
2
3
- name: show templating results
  debug:
    msg: "{{ lookup('template', './some_template.j2') }}"

Ansibleはプライグイン種別がいっぱいあるので把握しておくと何か挟めないか考えられてよい。

comments powered by Disqus