Google Cloud Deployment Managerの設定ファイルのJinja2形式での書き方TIPS
特に細かい説明はしないので、分かる人がググったときにたどり着いてもらえればと・・・(雑)
env
を利用してインスタンス名とかを生成
ロール毎のテンプレートとかにname
を動的に生成するために使えそうな技。
↓のように書けます。
{% set INSTANCE_NAME = 'foo-{deployment}-{name}'.format(**env) %}
この辺、普段からPython使っている人には常識なのかもしれないですが
- 文字列のフォーマットに
%
よりも、format
使えとどっかに書いてたからそうした - dictionary型の変数をformatに渡す際にはアンパックするべし
アンパックとか初めて知りました(ES2015で書いている人には{...props}
的なといえば伝わるかも)
なお、envについては、
https://cloud.google.com/deployment-manager/configuration/adding-templates#environment_variables
のドキュメントを読むべし。
最後の手段としてマクロがある
↑のやり方で済んだので、使ってないですが、最終兵器ということで。
{% macro diskName(diskObj) -%}{{ env["deployment"]}}-disk-{{ diskObj["name"] }}{%- endmacro %} # ... {% for diskObj in properties["disks"] %} - deviceName: {{ diskName(diskObj) }} type: PERSISTENT source: $(ref.{{ diskName(diskObj) }}.selfLink) autoDelete: true {% endfor %}
な書き方ができます。ほぼほぼ関数。
まとめ
まとめるほどのものはないですが。
Jinja2の公式ドキュメントをみながら、ちゃんとPythonを書ければ特に何もいうことはありません!