💬

CentOS7にDigdagをインストールしてみた

2022/05/06に公開

ワークフローエンジンで有名なApache Airflowdigdagがありますが、導入のハードル的にdigdagを今回入れてみようと思います。

事前準備

Digdagを動かすのに指定のバージョン 8u72 以上のJDK8(Java SE Development Kit 8)がインストールされている必要があります。なければ、公式ページからインストーラをダウンロードします。

[root@localhost ~]# rpm -ivh jdk-8u333-linux-x64.rpm
警告: jdk-8u333-linux-x64.rpm: ヘッダー V3 RSA/SHA256 Signature、鍵 ID ec551f03: NOKEY
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:jdk1.8-2000:1.8.0_333-fcs        ################################# [100%]
Unpacking JAR files...
        tools.jar...
        plugin.jar...
        javaws.jar...
        deploy.jar...
        rt.jar...
        jsse.jar...
        charsets.jar...
        localedata.jar...
[root@localhost ~]#

JDKのバージョン確認

[root@localhost ~]# java -version
openjdk version "1.8.0_322"
OpenJDK Runtime Environment (build 1.8.0_322-b06)
OpenJDK 64-Bit Server VM (build 25.322-b06, mixed mode)
[root@localhost ~]#

digdagのインストール

[root@localhost ]# curl -o /usr/bin/digdag --create-dirs -L "https://dl.digdag.io/digdag-latest"
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:06 --:--:--     0
  0     0    0     0    0     0      0      0 --:--:--  0:00:06 --:--:--     0
100 84.5M  100 84.5M    0     0  6416k      0  0:00:13  0:00:13 --:--:-- 11.8M
[root@localhost ]#
[root@localhost bin]# chmod +x /usr/bin/digdag
[root@localhost bin]# which digdag
/usr/bin/digdag

サンプルのワークフローを作成

[root@localhost ~]# mkdir digdag
[root@localhost ~]# cd digdag
[root@localhost mydag]# ls
mydag.dig
[root@localhost mydag]# digdag run mydag.dig
2022-05-06 17:32:37 +0900: Digdag v0.10.4
2022-05-06 17:32:38 +0900 [WARN] (main): Using a new session time 2022-05-06T00:00:00+00:00.
2022-05-06 17:32:38 +0900 [INFO] (main): Using session /root/digdag/mydag/.digdag/status/20220506T000000+0000.
2022-05-06 17:32:39 +0900 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2022-05-06T00:00:00+00:00
2022-05-06 17:32:40 +0900 [INFO] (0016@[0:default]+mydag+setup): echo>: start 2022-05-06T00:00:00+00:00
start 2022-05-06T00:00:00+00:00
2022-05-06 17:32:41 +0900 [INFO] (0016@[0:default]+mydag+disp_current_date): echo>: 2022-05-06 00:00:00 +00:00
2022-05-06 00:00:00 +00:00
2022-05-06 17:32:41 +0900 [INFO] (0016@[0:default]+mydag+repeat): for_each>: {order=[first, second, third], animal=[dog, cat]}
2022-05-06 17:32:42 +0900 [INFO] (0016@[0:default]+mydag+repeat^sub+for-0=order=0=first&1=animal=0=dog): echo>: first dog
first dog
2022-05-06 17:32:42 +0900 [INFO] (0017@[0:default]+mydag+repeat^sub+for-0=order=0=first&1=animal=1=cat): echo>: first cat
2022-05-06 17:32:42 +0900 [INFO] (0021@[0:default]+mydag+repeat^sub+for-0=order=2=third&1=animal=1=cat): echo>: third cat
third cat
first cat
2022-05-06 17:32:42 +0900 [INFO] (0018@[0:default]+mydag+repeat^sub+for-0=order=1=second&1=animal=0=dog): echo>: second dog
second dog
2022-05-06 17:32:42 +0900 [INFO] (0019@[0:default]+mydag+repeat^sub+for-0=order=1=second&1=animal=1=cat): echo>: second cat
second cat
2022-05-06 17:32:42 +0900 [INFO] (0020@[0:default]+mydag+repeat^sub+for-0=order=2=third&1=animal=0=dog): echo>: third dog
third dog
2022-05-06 17:32:44 +0900 [INFO] (0020@[0:default]+mydag+teardown): echo>: finish 2022-05-06T00:00:00+00:00
finish 2022-05-06T00:00:00+00:00
Success. Task state is saved at /root/digdag/mydag/.digdag/status/20220506T000000+0000 directory.
  * Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
  * Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.

GUIにアクセスしてみる

参考にさせて頂いた記事によると下記コマンドでGUIにアクセスできるそうなのですが、私の場合全くアクセス出来ませんでした。。。。

[root@localhost mydag]# digdag server -o ./ -n 8081
2022-05-06 17:34:55 +0900: Digdag v0.10.4
2022-05-06 17:34:56 +0900 [INFO] (main): secret encryption engine: disabled
2022-05-06 17:34:57 +0900 [INFO] (main): XNIO version 3.3.8.Final
2022-05-06 17:34:57 +0900 [INFO] (main): XNIO NIO Implementation Version 3.3.8.Final
2022-05-06 17:34:57 +0900 [INFO] (main): Starting server on 127.0.0.1:8081
2022-05-06 17:34:57 +0900 [INFO] (main): Bound on 127.0.0.1:8081 (api)

仕方なく試行錯誤して下記のコマンドでアクセス出来ました。
おそらくVMware上で構築したCentOSだからlocalhostはダメだったと思います。
なので-bオプションでIPアドレスを指定しました。

[root@localhost mydag]# digdag server -o ./ -n 8081 -b 192.168.250.58
2022-05-06 17:36:44 +0900: Digdag v0.10.4
2022-05-06 17:36:46 +0900 [INFO] (main): secret encryption engine: disabled
2022-05-06 17:36:46 +0900 [INFO] (main): XNIO version 3.3.8.Final
2022-05-06 17:36:46 +0900 [INFO] (main): XNIO NIO Implementation Version 3.3.8.Final
2022-05-06 17:36:46 +0900 [INFO] (main): Starting server on 192.168.250.58:8081
2022-05-06 17:36:46 +0900 [INFO] (main): Bound on 192.168.250.58:8081 (api)


無事にアクセス出来ました。

Discussion