Windows上にDigdagサーバ構成を作る その2 Digdagサーバ

http://qiita.com/pilot/items/e763a67675e264ed0347 の続き

http://qiita.com/pilot/items/f555dcf503f9880745c4 や http://qiita.com/pilot/items/8b6f14caa48ec018cbc6 とかぶる箇所あり

Digdagサーバマシン用Vagrantfile
==============================

```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```

ポイント
-------

1. Embulkのプラグインのインストールは一般ユーザ毎に行う
    * rootでインストールしても一般ユーザでの実行に効かない
    * Embulkをバージョンアップしたらプラグインをインストールし直すという話も聞いたことがある
1. JCEのインストールが要るかも
    * 以前にembulkコマンドでSSLのEOFがどうのというエラーに効いたことがある

```bash
    # 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
----

1. ログローテート

続き
====

http://qiita.com/pilot/items/ecf5b7277947710189c3