Rancherでdocker-compose.ymlの条件分岐を試す
Rancher Advent Calendar 2017 の 13日目の記事です。
20日目に「 redashのプライベートカタログ化」を紹介するのですが、あれこれ欲張りすぎて記事が長くなったのと、まだ、カレンダーが埋まってないので埋めてみました。
目次
それでは、本題。
Rancherでは、 docker-compose.yml
で、条件分岐が使えます。
cf. Variable Interpolation in Rancher CLI
なので、この場合には、このServiceはいらないとか必要とか切り替えが可能です。
ユースケースの一例として、環境変数 HTTP_PROXYを加えるかどうかで切り分け出来るようにしてみました。
条件分岐を使う場合、docker-compose.yml
の拡張子は .yml.tpl
としています。
多分、そのまま、 .yml
でも大丈夫かもですが、分かりやすくするため、そうしています。
使い方
条件式用の変数の定義 <rancher-compose.yml>
rancher-compose.yml
に、条件分岐に使う変数 USE_HTTP_PROXY
を定義
- variable: "USE_HTTP_PROXY" label: "Use HTTP_PROXY?" required: true default: false type: boolean
条件分岐の記述 <docker-compose.yml>
docker-compose.yml
にて、 docker-compose.yml
で、 {{- if eq .Values.USE_HTTP_PROXY "true" }}
~ {{- end }}
として、記述します。
もちろん else句 {{- else}}
も利用可能です。
environment: {{- if eq .Values.USE_HTTP_PROXY "true" }} HTTP_PROXY: ${HTTP_PROXY} HTTPS_PROXY: ${HTTPS_PROXY} NO_PROXY: ${NO_PROXY} {{- end }} PYTHONUNBUFFERED: 0 REDASH_LOG_LEVEL: "IN
上記のように定義すると、RancherServerのUI上で下図の様に表示されます。
注意事項
シンタックスが割りとシビアです。
{{- if
で書き始めて、 {{- end }}
で終わってください。
特に {{
と -
の間に空白入れるとエラーになります。
空白をうっかり入れてしまうと、カタログ選んで起動ボタン押下後に、「template: template:107: illegal number syntax:"-"」みたいなエラーログが出ます。
原理が分からないのだけど、golangのtemplateを使っている??
cf. rancher-compose-executor/inline_schema.go at v1.6 · rancher/rancher-compose-executor
cf. import "text/template"
その他の例
サンプルは、 GitHub - rancher/community-catalog: Catalog entries contributed by the community で検索する( URL )と良いです。
がっつり使っている例がこちら。
以上、「Rancherでdocker-compose.ymlの条件分岐を試す」でした。