🦔

Digdag で環境ごとのパラメーターを設定

2020/12/23に公開

ステージング環境や本番環境など環境ごとにパラメーターを切り分けたい場合のやり方

以下のように環境ごとにパラメーターを定義しておく

config.yml
prd:
  aws:
    rds:
      hostname: rds.jp
      ro_hostname: rds-ro.jp
      user: root
      password: ...

stg:
  aws:
    rds:
      hostname: rds.stg.jp
      ro_hostname: rds-ro.stg.jp
      user: root
      password: ...

以下の Python を用意
Digdag の実行環境で環境変数DIGDAG_ENVを設定しておく
本記事の例だと、DIGDAG_ENVには、prdstgが設定されている

import os
import yaml
import digdag


def setup():
    f = open("config.yml")
    data = yaml.load(f)[os.environ["DIGDAG_ENV"]]
    digdag.env.store(data)

1 番最初のタスクとして、setup を呼ぶことで、以降のタスクで環境ごとのパラメーターが使用できるようになる

+setup:
  py>: tasks.setup

+sample_task:
  _export:
    rds_host: ${aws.rds.hostname}
    rds_user: ${aws.rds.user}
    rds_pass: ${aws.rds.password}
  py>: tasks.rds_connect

Discussion