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の条件分岐を試す」でした。