http://qiita.com/pilot/items/e763a67675e264ed0347 の続き
http://qiita.com/pilot/items/f555dcf503f9880745c4 や http://qiita.com/pilot/items/8b6f14caa48ec018cbc6 とかぶる箇所あり
Digdagサーバマシン用Vagrantfile
Vagrant.configure("2") do |config|
# Vagrant公式Box https://atlas.hashicorp.com/bento
config.vm.box = "bento/centos-6.7"
# ネットワーク設定
config.vm.define :digsv1 do |digsv1|
digsv1.vm.hostname = "digsv1"
digsv1.vm.network :private_network, ip: "192.168.1.21", virtualbox__intnet: "dignet"
digsv1.vm.network :forwarded_port, guest: 22, guest_ip: "0.0.0.0", host: 2201, host_ip: "127.0.0.1", id: "ssh"
digsv1.vm.network :forwarded_port, guest: 65432, guest_ip: "0.0.0.0", host: 12201, host_ip: "127.0.0.1", id: "digdagUI"
end
config.vm.define :digsv2 do |digsv2|
digsv2.vm.hostname = "digsv2"
digsv2.vm.network :private_network, ip: "192.168.1.22", virtualbox__intnet: "dignet"
digsv2.vm.network :forwarded_port, guest: 22, guest_ip: "0.0.0.0", host: 2202, host_ip: "127.0.0.1", id: "ssh"
digsv2.vm.network :forwarded_port, guest: 65432, guest_ip: "0.0.0.0", host: 12202, host_ip: "127.0.0.1", id: "digdagUI"
end
# VirtualBox独自設定
config.vm.provider "virtualbox" do |vb|
# メモリ
vb.memory = "768"
# CPU
vb.cpus = 1
# サスペンドからの復帰時に時刻をホストと同期
vb.customize ["guestproperty", "set", :id, "/VirtualBox/GuestAdd/VBoxService/--timesync-set-threshold", 10000]
end
config.vm.provision "shell", inline: <<-EOT
# タイムゾーン設定
rm /etc/localtime
ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime
# カーネルアップデート (Vagrantで共有フォルダマウントのため)
yum update -y kernel
# NTPサーバ設定
yum -y install ntp
cd /etc
mv ntp.conf ntp.conf.org
sed 's|\\(^server .*$\\)|#\\1|' ntp.conf.org > ntp.conf
echo >> ntp.conf
echo 'server ntp.nict.jp' >> ntp.conf
echo 'server ntp1.jst.mfeed.ad.jp' >> ntp.conf
echo 'server ntp2.jst.mfeed.ad.jp' >> ntp.conf
echo 'server ntp3.jst.mfeed.ad.jp' >> ntp.conf
service ntpd start
chkconfig ntpd on
# OracleJDKインストール
wget -nv --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u152-b16/aa0333dd3019491ca4f6ddbe78cdb6d0/jdk-8u152-linux-x64.rpm
rpm -ivh jdk-8u152-linux-x64.rpm
echo 'export JAVA_HOME=/usr/java/default' >> /etc/profile.d/jdk.sh
rm -f jdk-8u152-linux-x64.rpm
# Digdagインストール
wget -nv https://dl.digdag.io/digdag-latest
mv -f digdag-latest /usr/local/bin/digdag
chmod +x /usr/local/bin/digdag
cat << 'EOF' > /etc/init.d/digdag-server
~ ここに http://qiita.com/pilot/items/8b6f14caa48ec018cbc6#etcinitddigdag-server の内容を貼付け ~
EOF
chmod +x /etc/init.d/digdag-server
chkconfig --add digdag-server
# td-agentインストール
curl --tlsv1.2 -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
# Embulkインストール
wget -nv http://dl.embulk.org/embulk-latest.jar
mv -f embulk-latest.jar /usr/local/bin/embulk
chmod +x /usr/local/bin/embulk
# Gitインストール
yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
cd /usr/local/src
GIT_VERSION=2.14.1
wget -nv https://www.kernel.org/pub/software/scm/git/git-${GIT_VERSION}.tar.gz
tar xzf git-${GIT_VERSION}.tar.gz
rm -f git-${GIT_VERSION}.tar.gz
cd git-${GIT_VERSION}
make prefix=/usr/local install
# Gitのmanインストール
mkdir man
cd man
wget https://www.kernel.org/pub/software/scm/git/git-manpages-${GIT_VERSION}.tar.gz
tar xzf git-manpages-${GIT_VERSION}.tar.gz
rm -f git-manpages-${GIT_VERSION}.tar.gz
cp -r * /usr/local/share/man
# sudoersのsecure_pathに/usr/local/binが含まれていないので追加(gitを使用するため)
export PATH=/usr/local/bin:${PATH}
# Rubyインストール
RUBY_VERSION=2.3.4
yum -y install readline-devel
git clone git://github.com/rbenv/rbenv.git /usr/local/rbenv
echo 'export RBENV_ROOT="/usr/local/rbenv"' > /etc/profile.d/rbenv.sh
echo 'export PATH="${RBENV_ROOT}/bin:${PATH}"' >> /etc/profile.d/rbenv.sh
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
source /etc/profile.d/rbenv.sh
git clone git://github.com/rbenv/ruby-build.git ${RBENV_ROOT}/plugins/ruby-build
rbenv install ${RUBY_VERSION}
rbenv global ${RUBY_VERSION}
cp -r ${RBENV_ROOT}/versions/${RUBY_VERSION}/share/man/* /usr/local/share/man
# Rubyライブラリインストール
gem install td
# NFS共有ディレクトリマウント
yum install -y nfs-utils
mkdir -p /export/home
chown -R vagrant.vagrant /export/home
echo '192.168.1.31:/home/vagrant/nfs /export/home nfs tcp,rw,hard,intr 0 0' >> /etc/fstab
service rpcbind start
chkconfig rpcbind on
service netfs start
chkconfig netfs on
EOT
config.vm.provision "shell", privileged: false, inline: <<-EOT
# TreasureData接続設定
mkdir ~/.td
echo '[account]' > ~/.td/td.conf
echo 'user = <ユーザ名>' >> ~/.td/td.conf
echo 'apikey = <APIキー>' >> ~/.td/td.conf
echo 'endpoint = https://<エンドポイント>' >> ~/.td/td.conf
# Digdagサーバ設定
mkdir -p ~/digdag-server/bin ~/digdag-server/log ~/digdag-server/task-log ~/digdag-server/access-log ~/.config/digdag
echo 'server.bind = 0.0.0.0' > ~/.config/digdag/config
echo 'server.access-log.path = /home/vagrant/digdag-server/access-log' >> ~/.config/digdag/config
echo 'server.access-log.pattern = combined' >> ~/.config/digdag/config
echo 'digdag.secret-encryption-key = ~ここに http://docs.digdag.io/command_reference.html#secret-encryption-key の値を貼付け' >> ~/.config/digdag/config
echo 'database.type = postgresql' >> ~/.config/digdag/config
echo 'database.host = 192.168.1.11' >> ~/.config/digdag/config
echo 'database.port = 5432' >> ~/.config/digdag/config
echo 'database.ssl = true' >> ~/.config/digdag/config
echo 'database.database = digdagdb' >> ~/.config/digdag/config
echo 'database.user = digdaguser' >> ~/.config/digdag/config
echo 'database.password = digdagpassword' >> ~/.config/digdag/config
echo '~ここに http://qiita.com/pilot/items/8b6f14caa48ec018cbc6#homevagrantdigdag-serverbindigsvsh の内容を貼付け~' > ~/digdag-server/bin/digsv.sh
chmod +x ~/digdag-server/bin/digsv.sh
sudo service digdag-server start
# Embulkプラグインインストール
embulk gem install embulk-input-td embulk-output-td embulk-input-sftp embulk-output-sftp embulk-filter-timestamp_format embulk-filter-column embulk-filter-stdout
EOT
end
2016/12/15追記:0.9.0から追加になったUIのポートへのポートフォワード追加 http://docs.digdag.io/releases/release-0.9.0.html#server-mode-changes
実行はvagrant up digsv1 & vagrant up digsv2 & vagrant up & vagrant reload & vagrant reload
ポイント
- Embulkのプラグインのインストールは一般ユーザ毎に行う
- rootでインストールしても一般ユーザでの実行に効かない
- Embulkをバージョンアップしたらプラグインをインストールし直すという話も聞いたことがある
- JCEのインストールが要るかも
- 以前にembulkコマンドでSSLのEOFがどうのというエラーに効いたことがある
# JCEインストール
wget -nv --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jce/8/jce_policy-8.zip
unzip jce_policy-8.zip
rm -f jce_policy-8.zip
mv -f UnlimitedJCEPolicyJDK8/*.jar /usr/java/jdk1.8.0_112/jre/lib/security/
rm -fr UnlimitedJCEPolicyJDK8
TODO
- ログローテート
続き