まとめ
- Liquidと環境変数を使って開発環境・本番環境のデータベース接続情報を分ける。
- テーブル情報(クエリ設定)とデータベースコネクション情報を別ファイルで管理する
はじめに
- 開発環境、本番環境によって接続するデータベースコネクション情報を変えたい。
- 何個もテーブルを読み込みするが認証情報は同じなので、共通化したい。
in:
#
# 開発環境と本番環境で分けたいところ
#
type: postgresql
host: 127.0.0.1
user: user
password: pass
database: embulk_test
#
# 読み出すテーブルの情報によって設定が変わるところ
query: "select * from table_name"
設定例
.
|-- config1.yml.liquid
|-- config2.yml.liquid
|-- db
| |-- _dev.yml.liquid
| `-- _prod.yml.liquid
`-- query
|-- _query1.yml.liquid
`-- _query2.yml.liquid
config1.yml.liquid
in:
{% if env.EMBULK_ENV == 'production' %}
{% include 'db/prod' %}
{% else %}
{% include 'db/dev' %}
{% endif %}
{% include 'query/query' %}
out:
type: stdout
この設定で環境変数EMBULK_ENVにproductionが設定されている場合は、db/_prod.yml.liquidを、設定されていない場合はdb/_dev.yml.liquidを読み込むようになります。
コネクション情報(db/_prod.yml.liquid)
#
type: postgresql
host: 127.0.0.1
user: username
password: password
database: embulk_prod
先頭は#または、改行を入れる必要があります。これを抜くと正常に動きません。
テーブル情報(クエリ設定)、(db/_query1.yml.liquid)
query: "select * from table1"
先頭は#または、改行を入れる必要があります。これを抜くと正常に動きません。
今後の課題
どなたか例を知っていたら教えてください。
- データベースのパスワード情報は環境変数を利用する方法。
別例
その他参考
- Embulkの設定ファイルをincludeで共有化する方法 Liquid全般の使い方の話
お礼
- @toyama0919さん
- @wing_007さん