5分でDigdagインストールしてワークフロー実行まで試してみる

台風が来てるみたいがから、5分でdigdagをインストールして試してみる
5分でできなかったらマサカリ投げてください(TT)

##そもそもDigdagとは
>Digdag is a simple tool that helps you to build, run, schedule, and monitor complex pipelines of tasks. It handles dependency resolution so that tasks run in order or in parallel.

Digdagは、あなたが、ビルド、スケジュールを実行し、タスクの複雑なパイプラインを監視するのに役立ちますシンプルなツールです。タスクが順序または並列に実行するようにするためには、依存関係の解決を処理します。（公式を全力でGoogle翻訳）

* 私個人の理解としては、yml形式でワークフロー書けるJenkins的なやつという認識。GUI画面なしの。

##前提条件
* 実行環境はすでに構築済み
* JDKのrpmファイルはダウンロード済み

##実行環境(Macの上にVirtualBoxとVagrantで仮想サーバをたてたもの)

* MacOSX10.10.5(Yosemite)
* VirtualBox4.3.18 r96516
* Vagrant1.7.4
* CentOS6.5

##参考資料
* http://www.digdag.io/getting_started.html?highlight=curl

  
  
  
##Let's Try.
なにはともあれ、まずはJDKをインストール（rpmはOracleのサイトからダウンロードしてきてね）
Gettingstarted見ると、`JDK8u72`以上必須の模様。今回は最新版の`JDK8u102`を使用。

```
[root@vagrant-centos65 tmp]# rpm -ivh jdk-8u102-linux-x64.rpm 
Preparing...                ########################################### [100%]
   1:jdk1.8.0_102           ########################################### [100%]
Unpacking JAR files...
	tools.jar...
	plugin.jar...
	javaws.jar...
	deploy.jar...
	rt.jar...
	jsse.jar...
	charsets.jar...
	localedata.jar...
[root@vagrant-centos65 tmp]# java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
```


これまたGettingstartedのコマンドを参考に以下実行でdigdagを取得

```
[root@vagrant-centos65 tmp]# curl -o /usr/local/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:05 --:--:--     0
curl: (35) SSL connect error
```

~~httpsだとエラーになったのでhttpでcurl(これはいいのかw)~~
curlのversionを`7.19.7`から`7.37.0`へアップデートしたらerrorは解消しました。わーい


```
[root@vagrant-centos65 tmp]# curl --version
curl 7.37.0 (x86_64-unknown-linux-gnu) libcurl/7.37.0 OpenSSL/1.0.1e zlib/1.2.3
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: IPv6 Largefile NTLM NTLM_WB SSL libz 
[root@vagrant-centos65 tmp]# curl -o /usr/local/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
100 20.6M  100 20.6M    0     0   619k      0  0:00:34  0:00:34 --:--:-- 1097k
```

~~どうやら成功。。。~~
しっかり成功 :sparkles: 
今回ダウンロードされたのは、現時点の最新版`digdag 0.8.11`の模様
そして、どこか適当なディレクトリ配下でdigdag init実行

```
[root@vagrant-centos65 opt]# digdag init digdag_test
2016-08-29 16:17:38 +0000: Digdag v0.8.11
  Creating digdag_test/.gitignore
  Creating digdag_test/query.sql
  Creating digdag_test/digdag_test.dig
Done. Type `cd digdag_test` and then `digdag run digdag_test.dig` to run the workflow. Enjoy!
```



digdagのファイルがgenarateされました

```
[root@vagrant-centos65 opt]# ls -lR digdag_test/
digdag_test/:
total 8
-rw-r--r-- 1 root root 68 Aug 29 16:17 digdag_test.dig
-rw-r--r-- 1 root root 28 Aug 29 16:17 query.sql
```

digdag_test.dig(処理内容書く定義ファイル)を編集

```digdag_test.dig
timezone: UTC

+task1:
 sh>: date

+task2:
 sh>: cat /etc/redhat-release

+task3:
 sh>: df -h
```


digdag 起動(バックグラウンドで)

```
[root@vagrant-centos65 opt]# digdag server -m &
[1] 4957
[root@vagrant-centos65 opt]# 2016-08-29 17:04:16 +0000: Digdag v0.8.11
2016-08-29 17:04:17 +0000 [INFO] (main): secret encryption engine: disabled
2016-08-29 17:04:18 +0000 [INFO] (main): loaded secret access policy: ServerSecretAccessPolicy{operators={}}
2016-08-29 17:04:18 +0000 [INFO] (main): XNIO version 3.3.6.Final
2016-08-29 17:04:18 +0000 [INFO] (main): XNIO NIO Implementation Version 3.3.6.Final
2016-08-29 17:04:18 +0000 [INFO] (main): Starting server on 127.0.0.1:65432
2016-08-29 17:04:18 +0000 [INFO] (main): Bound on /127.0.0.1:65432
```
  
  

  

あとでGettingstartedよんで思ったけどserver modeで立ち上げたあと停止させるコマンドがない気がしました。
私の見落としかしら。。。

genarateしたディレクトリ配下でdigdag push実行

```
[root@vagrant-centos65 digdag_test]# pwd
/opt/digdag_test
[root@vagrant-centos65 digdag_test]# digdag push digdag_test
2016-08-29 17:07:47 +0000: Digdag v0.8.11
Creating .digdag/tmp/archive-6594888935673277562.tar.gz...
  Archiving digdag_test.dig
  Archiving query.sql
Workflows:
  digdag_test

Uploaded:
  id: 1
  name: digdag_test
  revision: e4215ddd-9589-4d9d-9230-6a6992f100f0
  archive type: db
  project created at: 2016-08-29T17:07:49Z
  revision updated at: 2016-08-29T17:07:49Z

Use `digdag workflows` to show all workflows.
```

workflow実行

```
[root@vagrant-centos65 digdag_test]# digdag start digdag_test digdag_test --session now
2016-08-29 17:09:40 +0000: Digdag v0.8.11
2016-08-29 17:09:42 +0000 [INFO] (XNIO-1 task-9): Starting a new session project id=1 workflow name=digdag_test session_time=2016-08-29T17:09:42+00:00
Started a session attempt:
  session id: 1
  attempt id: 1
  uuid: f97ddc0b-fef9-46ed-80c4-915e7337b58f
  project: digdag_test
  workflow: digdag_test
  session time: 2016-08-29 17:09:42 +0000
  retry attempt name: 
  params: {}
  created at: 2016-08-29 17:09:42 +0000

* Use `digdag session 1` to show session status.
* Use `digdag task 1` and `digdag log 1` to show task status and logs.
[root@vagrant-centos65 digdag_test]# 2016-08-29 17:09:43 +0000 [INFO] (0030@+digdag_test+task1): sh>: date
Mon Aug 29 17:09:43 UTC 2016
2016-08-29 17:09:44 +0000 [INFO] (0030@+digdag_test+task2): sh>: cat /etc/redhat-release
CentOS release 6.5 (Final)
2016-08-29 17:09:44 +0000 [INFO] (0030@+digdag_test+task3): sh>: df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1       7.9G  6.4G  1.2G  85% /
tmpfs           295M     0  295M   0% /dev/shm
vagrant         113G   97G   16G  87% /vagrant
```

digファイルに書いた内容が順次実行されました。
以上！