LoginSignup
14
6

More than 5 years have passed since last update.

Digdagのstoreのパラメータを環境ごとにセットアップするTips

Last updated at Posted at 2018-12-05

digdagのパラメータ(store)を環境ごとにセットアップをしたいということがあったので、その方法を紹介します。
digdagのrbオペーレーターを利用しますがPythonでも同じことが実現可能です。

サンプル

先に最終的な構成を紹介します。
最終的な構成はGitHubからも確認できます。(https://github.com/katsuyan/digdag_sample_set_params)

ディレクトリ構成

.
├── config
│   └── config.yml
├── digdag.dig
└── tasks
    └── setup.rb

digdag.dig

digdag.dig
timezone: Asia/Tokyo

+set_state:
  _retry: 3
  _export:
    docker:
      image: ruby:2.5.1
  rb>: Setup.set_state
  require: 'tasks/setup'

+echo_db_user:
  echo>: ${db_user}

+echo_db_pass:
  echo>: ${db_pass}

setup.yml

setup.rb
require 'yaml'

class Setup
  def set_state
    environment = Digdag.env.params['environment']

    config = YAML.load_file('config/config.yml')[environment]
    config.each do |key, value|
      Digdag.env.store(key.to_sym => value)
    end
  end
end

config.yml

config.yml
production:
  db_user: user
  db_pass: pass

development:
  db_user: user_dev
  db_pass: pass_dev

test:
  db_user: user_dev
  db_pass: pass_dev

環境ごとにDigdag storeをセットアップする流れ

1. config.ymlを用意

config.ymlに環境ごとの設定を記述します。


production:
  db_user: user
  db_pass: pass

development:
  db_user: user_dev
  db_pass: pass_dev

test:
  db_user: user_dev
  db_pass: pass_dev

2. config.ymlから設定をDigdagのstoreに格納するスクリプトを用意

environment = Digdag.env.params['environment']

config = YAML.load_file('config/config.yml')[environment]
config.each do |key, value|
  Digdag.env.store(key.to_sym => value)
end

3. Digdagからconfigをsotreするスクリプトを呼び出す

+set_state:
  _retry: 3
  _export:
    docker:
      image: ruby:2.5.1
  rb>: Setup.set_state
  require: 'tasks/setup'

4. digdag実行時にenvironment環境変数を渡す

digdag run digdag.dig -p digdag_env=development

以上はdevelopment環境時のコマンドになります。development部分をproduction, testに書き換えることで環境ごとにconfig.ymlの設定から対象のパラメータをstoreに設定することができます。

まとめ

yamlファイルで環境ごとの設定を管理する方法を紹介しました。これにより、環境ごとの設定をこのyamlファイルに閉じ込めることができます。

14
6
1

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
14
6