よくわからないエンジニア

よく分からないエンジニアの日々の記録

よくわからないエンジニア

CentOS7 digdagの導入

前回embulk入れましたが、そのままdigdagも導入します。

目次

digdagとは

分散ワークフローエンジンとのことですが、私はバッチスケジューラ的な使い方をしています。embulk単品でやるよりも、digdagで管理させた方が楽だったので併せて利用しています。
上手く説明できないので、興味がある人は公式サイトを参照して下さい。

www.digdag.io

Node.jsのインストール

digdagのインストールには以下が必要になります。
* JDK 8 * Node.js 7.x

前回embulkの導入でJDKは入れたので、そちらの手順は以下を参考に。
www.unknownengineer.net

Node.jsは以下手順で導入します。

# curl -L git.io/nodebrew | perl - setup
# echo 'export PATH=$HOME/.nodebrew/current/bin:$PATH' >> ~/.bashrc
# source ~/.bashrc
# nodebrew ls-remote |grep v7.10.1
v7.10.1
# nodebrew install-binary v7.10.1
# nodebrew use v7.10.1

digdagのインストール

次はdigdag入れます。

# curl -o ~/bin/digdag --create-dirs -L https://dl.digdag.io/digdag-latest
# chmod +x ~/bin/digdag
# echo 'export PATH=$HOME/bin:$PATH' >> ~/.bashrc
# source ~/.bashrc
# digdag --version
0.9.21

rubyのインストール

必須ではないです。digdagの中でrubyのスクリプト使いたいのでインストールしときます。

# yum install -y openssl-devel readline-devel
# git clone https://github.com/sstephenson/rbenv.git ~/.rbenv/
# echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
# echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
# source ~/.bash_profile
# git clone git://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
# cd ~/.rbenv/plugins/ruby-build
# rbenv install 2.3.5
# rbenv global 2.3.5
# ruby -v
ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-linux]

設定

設定していきます。とりあえず設定ファイルは/usr/local/digdagの下に集めます。

# mkdir /usr/local/digdag
# cd /usr/local/digdag
# mkdir bin etc digdag.db logs

digdagのコンフィグファイルを作成します。

# vim etc/config
agent.max-task-threads=5
database.type = h2
database.path = /usr/local/digdag/digdag.db

パラメーターはagent.max-task-threadsは並列で実行するジョブの数、database.typeはH2 Database を使用、DBの場所をdatabase.pathで指定します。

次に、起動用のシェルと、systemdの設定をします。

# vim bin/start.sh
#!/usr/bin/env bash

set -ue
set -x

exec >> /usr/local/digdag/logs/digdag.log
exec 2>&1

export PATH="$HOME/.embulk/bin:$PATH"
export PATH=$HOME/bin:$PATH
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"

exec /root/bin/digdag server --config /usr/local/digdag/etc/config -b `/sbin/ifconfig eth0 | awk '/inet / {print $2}'`

# chmod +x bin/start.sh
# vim /etc/systemd/system/digdag.service
[Unit]
Description=digdag

[Service]
User=root
Restart=always
TimeoutStartSec=30s
Type=simple
ExecStart=/usr/local/digdag/bin/start.sh

[Install]
WantedBy=multi-user.target

これで一通り準備完了なのでstartして下さい。

# systemctl start digdag.service

logをチェックして問題なさそうなら起動してます。そのうち動かし方も書いていきます。