今回はOSSのワークフローツールのDigdagをAWS上のWindows Serverにインストールしていきます。
Digdagかdigdagなのか毎回迷いますが、公式ドキュメントを見る限りだとDigdagが正解っぽいですね。
使用する環境とソフトウェアは以下です。Digdag以外はインストール済み・設定済みの前提で進めます。
- Windows Server 2019
- PostgreSQL 13
- Digdag 0.9.42
- Java 1.8.0_251
手順は公式の以下のドキュメントを参考に実施します。
docs.digdag.io
Digdag Serverの設定はこちらの記事を参考にさせていただきました。
qiita.com
実施作業
Digdagインストール
まずは事前にdigdagをインストールするフォルダを確認します。
今回はCドライブ配下のbinフォルダを使用します。
PowerShellを起動し、公式ドキュメントのPowerShellのコマンドを実行します。
この時-OutFileの設定を先ほどのbinフォルダ配下に指定するように修正します。
mkdirの部分はすでにbinフォルダを作成済みなのでコマンドから削除します。
PowerShell -Command "& {[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::TLS12; Invoke-WebRequest http://dl.digdag.io/digdag-latest.jar -OutFile C:\\bin\digdag.bat}"
コマンドが完了するとjarファイルがダウンロードされて、digdag.batにリネームした上で格納されていることが確認できます。
格納されていることを確認できたら、環境変数にインストール先のパスを設定します。
setx PATH "%PATH%;C:\bin"
digdagのコマンドを実行するとオプションが表示されます。
ここまででDigdagのインストールは完了です。
Digdag Server設定
次はDigdagのServerを設定していきます。
Digdagはworkflowと呼ばれる単位で処理が実装され、Serverを事前に起動させておくことでそのworkflowの管理や実行状態の確認などの確認がブラウザから行うことが可能です。
Digdag Serverは、digdagコマンドで起動が可能です。
コマンドはこちら↓↓
docs.digdag.io
Digdag Serverでは、タスクやワークフローの実行状態の管理をデータで行います。
そのデータの保持方法として、メモリ・ファイル・PostgreSQLの3つがあり、今回はPostgreSQLを使用する方法を設定します。
PostgreSQLのインストールと初期設定方法については、前回記事をご確認ください。
capybara-engineer.hatenablog.com
Digdagで使用するDBユーザとDBを事前に作成しておく必要があるため、PowerShellなどから以下のコマンドを実行しておきます。
(uuid-osspは権限によっては後でエラーが出るようなので手動で実行しておきます)
psql -U postgres > パスワード入力 # CREATE ROLE digdag_role WITH PASSWORD 'digdag_pass' NOSUPERUSER NOCREATEDB NOCREATEROLE LOGIN; # CREATE DATABASE digdag_db WITH OWNER digdag_role; # CREATE EXTENSION "uuid-ossp";
pgAdminから見ると作成されていることが確認できます。
Digdag Serverはシンプルな設定であればコマンドのオプションを使用することで簡単に起動できますが、今回は詳細に設定したいため、Configファイルを作成してそれを参照してサーバを起動するようにします。
/opt/digdag/server.properties
ここまで出来たら、PowerShellからサーバを起動してみます。
ブラウザからhttp:/127.0.0.1:65432にアクセスするとdigdagサーバが表示されます。
※設定時の注意点※
サーバ起動コマンド実行前に以下のPostgreSQLのファイルを修正して、認証方式を変更しておく必要があります。(以下は平文になるため注意)
変更しない場合は以下の認証エラーが発生します。
Error in custom provider, com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: 認証型 10 はサポートされません。pg_hba.confファイルの構成でクライアントのIPアドレス、サブネットが含まれているか、そして ドライバがサポートする認証機構を使っているかを調べてください。
どのような認証方式が設定可能かは以下の記事を参考にさせていただきました。
www.dbonline.jp
PostgreSQL DB確認
以下のコマンドをPowerShellで実行し、digdag_db内のテーブルを確認します。
psql -U postgres -p 55432 -d digdag_db # \dt
所有者がdigdag_roleとなっているテーブルがいくつか作成されていることがわかります。
問題なくdigdagのDBとしてPostgreSQLが設定できているようです。
delayed_session_attempts projects queue_settings queued_task_locks queued_tasks queues resuming_tasks revision_archives revisions schedules schema_migrations secrets session_attempts session_monitors sessions task_archives task_dependencies task_details task_state_details tasks workflow_configs workflow_definitions
感想及び所感
PostgreSQLはあまり使ったことはないので、ポートと認証周りでエラーが出たときに原因が特定できず悩みました。
次回はサーバの設定を少しいじっていきたいと思います。