カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

Windows ServerにDigdag Serverをインストール・設定する

今回はOSSのワークフローツールのDigdagをAWS上のWindows Serverにインストールしていきます。
Digdagかdigdagなのか毎回迷いますが、公式ドキュメントを見る限りだとDigdagが正解っぽいですね。


使用する環境とソフトウェアは以下です。Digdag以外はインストール済み・設定済みの前提で進めます。



手順は公式の以下のドキュメントを参考に実施します。
docs.digdag.io

Digdag Serverの設定はこちらの記事を参考にさせていただきました。
qiita.com

実施作業

Digdagインストール

まずは事前にdigdagをインストールするフォルダを確認します。
今回はCドライブ配下のbinフォルダを使用します。
f:id:live-your-life-dd18:20201027104909p:plain


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

f:id:live-your-life-dd18:20201027105415p:plain


コマンドが完了するとjarファイルがダウンロードされて、digdag.batにリネームした上で格納されていることが確認できます。
f:id:live-your-life-dd18:20201027105436p:plain


格納されていることを確認できたら、環境変数にインストール先のパスを設定します。

setx PATH "%PATH%;C:\bin"

f:id:live-your-life-dd18:20201027105934p:plain


digdagのコマンドを実行するとオプションが表示されます。
f:id:live-your-life-dd18:20201027105657p:plain


ここまででDigdagのインストールは完了です。

Digdag Server設定

次はDigdagのServerを設定していきます。
Digdagはworkflowと呼ばれる単位で処理が実装され、Serverを事前に起動させておくことでそのworkflowの管理や実行状態の確認などの確認がブラウザから行うことが可能です。


Digdag Serverは、digdagコマンドで起動が可能です。
f:id:live-your-life-dd18:20201027110438p:plain

コマンドはこちら↓↓
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";

f:id:live-your-life-dd18:20201027185458p:plain


pgAdminから見ると作成されていることが確認できます。
f:id:live-your-life-dd18:20201027190013p:plain


Digdag Serverはシンプルな設定であればコマンドのオプションを使用することで簡単に起動できますが、今回は詳細に設定したいため、Configファイルを作成してそれを参照してサーバを起動するようにします。

/opt/digdag/server.properties

f:id:live-your-life-dd18:20201027192720p:plain


ここまで出来たら、PowerShellからサーバを起動してみます。
f:id:live-your-life-dd18:20201027192738p:plain


ブラウザからhttp:/127.0.0.1:65432にアクセスするとdigdagサーバが表示されます。
f:id:live-your-life-dd18:20201027192824p:plain

※設定時の注意点※

サーバ起動コマンド実行前に以下のPostgreSQLのファイルを修正して、認証方式を変更しておく必要があります。(以下は平文になるため注意)
f:id:live-your-life-dd18:20201027193038p:plain


変更しない場合は以下の認証エラーが発生します。

 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

f:id:live-your-life-dd18:20201027195239p:plain

感想及び所感

PostgreSQLはあまり使ったことはないので、ポートと認証周りでエラーが出たときに原因が特定できず悩みました。
次回はサーバの設定を少しいじっていきたいと思います。