Amazon Linux2にdigdagをインストール

私はバッチ処理をつくった時、それを管理するのに digdag をよく利用させてもらっています。
digdag とはワークフローエンジンのことでバッチ処理のスケジューリングや実行順の制御、並列実行などを簡単に実現できます。
またUIもシンプルで使いやすく、わかりやすい点がとても気に入っています。

前置きはこのくらいにしてインストールの手順をまとめます。

環境情報

  • Amazon Linux 2
  • digdag 0.9.37 (2019.06.13時点の最新バージョン)

インストール ~ 起動

digdagはpostgresql等のDBと連携してログを永続的に保存することができますが、最初はインメモリで起動します。

digdagインストール

rootユーザーでdigdagをインストールし、実行権限をつけます

# curl -o /usr/local/bin/digdag --create-dirs -L "https://dl.digdag.io/digdag-latest"
# chmod +x /usr/local/bin/digdag

Java1.8インストール

# yum update -y
# yum install -y java-1.8.0-openjdk-devel.x86_64
# java -version
openjdk version "1.8.0_201"
OpenJDK Runtime Environment (build 1.8.0_201-b09)
OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)

digdag起動

# digdag server -m --bind 0.0.0.0 -O /var/log/digdag
2019-06-13 06:29:12 +0000: Digdag v0.9.37
2019-06-13 06:29:14 +0000 [INFO] (main): secret encryption engine: disabled
2019-06-13 06:29:14 +0000 [INFO] (main): Database migration started
2019-06-13 06:29:14 +0000 [INFO] (main): Applying database migration:20151204221156
2019-06-13 06:29:14 +0000 [INFO] (main): Applying database migration:20160602123456
-m オプションがインメモリにデータを保持する設定になります。digdagを停止するとログは削除されます。
-O オプションはタスクのログをファイルに出力する設定です。

Digdag UI

digdagが起動されたらdigdagのUIにブラウザからアクセスできます。

http://[対象サーバーのIPアドレス]:65432/

今回はAWSでdigdag起動しているのでセキュリティグループのインバウンド設定に 65432 ポートの接続許可設定を追加しておく必要があります。

アクセス出来たら以下のような画面が表示されます。

起動設定

digdagを毎回手動で起動するのは面倒なのでインスタンス起動時に自動で起動するようにします。

起動スクリプトの作成

# vim /etc/init.d/digdag-server
# chmod 755 /etc/init.d/digdag-server
#!/bin/sh
exec /usr/local/bin/digdag server -m --bind 0.0.0.0 -O /var/log/digdag

Unit定義ファイル作成

# vim /etc/systemd/system/digdag-server.service
[Unit]
Description = digdag-server
  
[Service]
ExecStart = /etc/init.d/digdag-server
Restart = always
Type = simple
  
[Install]
WantedBy = multi-user.target

動作確認

# systemctl start digdag-server
# systemctl stop digdag-server

自動起動

systemctl enable digdag-server

参考

最後に

ここではdigdagのデータをインメモリで保持するやり方で起動しました。
ちょっと試してみたい時なんかインメモリで充分ですが、実環境ではPostgreSQLなどのDBを利用してログなどを永続的に保持することをおすすめします。

次回は実際にワークフローを作成~実行してみます。

次の記事へ