LoginSignup
24
24

More than 5 years have passed since last update.

[Embulk] DBの接続情報とクエリを環境変数とLiquidを使って上手に分割する方法

Last updated at Posted at 2016-07-06

まとめ

  • 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"

先頭は#または、改行を入れる必要があります。これを抜くと正常に動きません。

今後の課題

どなたか例を知っていたら教えてください。

  • データベースのパスワード情報は環境変数を利用する方法。

別例

その他参考

お礼

24
24
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
24