Rundeck: 任意のタイムゾーン設定によるサーバ稼働を試してみる

2015.11.12

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しんやです。来月新作第7弾が公開されると言う事で『スターウォーズ』過去の総復習を計画・実践中です。先日エピソード4を観終えました。『エピソード4』くらいは過去に観てたかな〜と思ってたのですがどうやら全6作共にフル視聴はしていなかった事が判明しました。『エピソード7』公開前で後1ヶ月ちょいありますが、公開日に間に合うように総復習を進めて行きたいと思います。

さて、本題です。先日、ジョブ管理ツールの1つである『Rundeck』に関するエントリが弊社ブログにて紹介されていましたが、私自身もこのサービスに非常に興味を持つようになり、『Rundeckってこういうケースは対応してるのかな?出来るのかな?』という形で自分が実践で使う事を想定したトピックで調査してみたいなと思うようになりました。

当エントリでは、『Rundeckって所定のタイムゾーン(例えば日本国内、Asia/Tokyoで)で使えるものなの?』という思い付きを調査した内容についてご紹介したいと思います。

目次

導入環境を用意/Amazon EC2(Linux)

Rundeckのインストール環境はAmazon EC2(Linux)を用意します。今回は管理コンソールからAmazon Linux AMIを選択し、15GB程度のストレージ容量(この辺はひとまず適当)と、ポート番号:22,4440,4443(4440と4443はRundeckで指定されているHTTP/HTTPSアクセス用のポート)からの外部アクセスを許可したセキュリティグループを備えた環境を用意しました。

rundeck_timezone_setting_01

インスタンスが用意出来たらSSHコマンドでログインしておきます。

$ ssh -i xxxxxxxxxxxx.pem ec2-user@xxx.xx.xx.xxx

Rundeck導入手順

基本的な導入手順については下記のエントリに倣った形となります。

サーバのタイムゾーン設定を変更

まず始めに稼働サーバのタイムゾーンをデフォルトのUTCから今回検証・利用したいタイムゾーン(アジア/東京)に変更しておきます。所定ファイルの上書き・変更の後、crondを再起動させる事でタイムゾーンの変更が行えます。

$ date
2015年 11月 11日 水曜日 04:57:12 UTC
$ sudo cp /usr/share/zoneinfo/Japan /etc/localtime
$ sudo vi /etc/sysconfig/clock
ZONE="Asia/Tokyo"
UTC=False
$ sudo /etc/init.d/crond restart
crond を停止中:                                            [  OK  ]
crond を起動中:                                            [  OK  ]
$ 
$ date
2015年 11月 11日 水曜日 13:58:43 JST

Javaインストール

次いでJavaの環境を整えます。Amazon Linuxの場合、インスタンス構築・起動時点で既にOpenJDKは入っていますが、

$ java -version
java version "1.7.0_91"
OpenJDK Runtime Environment (amzn-2.6.2.2.63.amzn1-x86_64 u91-b00)
OpenJDK 64-Bit Server VM (build 24.91-b01, mixed mode)

今回は以下のエントリを使ってOracleJDKの最新版を入れてみたいと思います。細かい手順についてはエントリ本編をご参照ください。

$ sudo yum -y remove java
$ vi cookies.txt
$ wget --load-cookies cookies.txt -O jdk-8-linux-x64.rpm http://download.oracle.com/otn-pub/java/jdk/8u65-b17/jdk-8u65-linux-x64.rpm
$ sudo rpm -ivh jdk-8-linux-x64.rpm

Oracle JDKの1.8を入れ直す事が出来ました。

$ java -version
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)

Rundeckインストール

こちらはドキュメント通りの手順で導入。

$ sudo rpm -Uvh http://repo.rundeck.org/latest.rpm
$ sudo yum -y install rundeck

Rundeck起動設定の一部変更

Rundeckのタイムゾーン指定に関する情報を調べていくと、以下のGitHub Issueが引っ掛かりました。全てのビューでタイムゾーン指定の部分をカスタマイズするというものらしいです。こちらもインストール直後の対象ファイル該当箇所を修正しておきます。

/etc/init.d/rundeckd

$ sudo vi /etc/init.d/rundeckd
#!/bin/bash
#
# rundeckd    Startup script for the rundeck
#
# chkconfig: 2345 90 10
# description: rundeckd, providing rundeckd
# pidfile: /var/run/rundeckd.pid

# Source function library
. /etc/rc.d/init.d/functions
. /etc/rundeck/profile

prog="rundeckd"
#rundeckd="${JAVA_HOME:-/usr}/bin/java ${RDECK_JVM} -cp ${BOOTSTRAP_CP} com.dtolabs.rundeck.RunServer /var/lib/rundeck ${RDECK_HTTP_PORT}"
rundeckd="${JAVA_HOME:-/usr}/bin/java ${RDECK_JVM} -cp ${BOOTSTRAP_CP} -Duser.timezone=Asia/Tokyo com.dtolabs.rundeck.RunServer /var/lib/rundeck ${RDECK_HTTP_PORT}"
RETVAL=0
PID_FILE=/var/run/${prog}.pid
servicelog=/var/log/rundeck/service.log
:

アクセス対象となるサーバのドメイン部分に関する部分も所定の内容(ドメイン名やIPアドレス等)に書き換えておきます。

/etc/rundeck/rundeck-config.properties

$ sudo vi /etc/rundeck/rundeck-config.properties
#loglevel.default is the default log level for jobs: ERROR,WARN,INFO,VERBOSE,DEBUG
loglevel.default=INFO
rdeck.base=/var/lib/rundeck

#rss.enabled if set to true enables RSS feeds that are public (non-authenticated)
rss.enabled=false
# change hostname here
#grails.serverURL=http://localhost:4440
grails.serverURL=http://xxx.xx.xx.xxx:4440
dataSource.dbCreate = update
dataSource.url = jdbc:h2:file:/var/lib/rundeck/data/rundeckdb;MVCC=true;TRACE_LEVEL_FILE=4

動作確認

諸々の設定が済んだところでRundeckを起動させます。また併せて自動起動設定も行っておきます。

$ sudo chkconfig rundeckd on 
$ sudo /etc/init.d/rundeckd start
rundeckd を起動中:                                         [  OK  ]

ログイン及びプロジェクト作成まで済ませ、ジョブの作成で実行時間・サイクルの指定箇所へと進めてみます。スクリーンショットの取得タイミングが少し遅れてしまったため初期設定時間<Macのシステム時間(即ちAsia/Tokyoのシステム時刻)となってしまっていますが、こちらのタイムゾーンを元にした時間が初期設定された形の挙動となっている事が確認出来ました。

rundeck_timezone_setting_02

2分後位のタイミングが来たら起動するような時間設定のジョブを作成してみました。ちゃんと残り時間もそれに合わせた時間表示となっています。

rundeck_timezone_setting_03

処理実行後のジョブ一覧画面です。表示時間がAsia/Tokyoのものになっています。

rundeck_timezone_setting_04

実行ログ詳細の中身です。ジョブとしてはdateコマンドを実行するだけのシンプルなものを設定しました。実行時刻に関する部分、実行結果(Asia/Tokyoのタイムゾーン設定を行ったサーバ環境下でのdateコマンド実行結果)も期待した内容が表示されています。

rundeck_timezone_setting_05

ちなみにシステム情報を表示する画面内の該当箇所の時間についてはUTF表記のままでした。こちらについてはUTFのままである事は気にはなりますが、実作業を行なう上で影響無いようであれば差し当たりこのままでも大丈夫かなという気はします。

rundeck_timezone_setting_06

まとめ

以上、RundeckのTimezone指定に関する設定値の変更及び確認作業に関するエントリでした。当初、Rundeckインストール後に該当箇所の変更を行ってみたところ変更されていない部分が見られ(時間指定のプルダウンの部分)、もしかしたらRundeckインストール時の環境で進めてしまった為(タイムゾーン:UTFのまま進めちゃってた)にこの部分が変わらなかったのかな?と思い当エントリ記載の順序で進めてみたところ、予想が当たったのでまとめられる形になった、という次第です。解決してみればどうってこと無いネタでしたが、これで日本国内での時間サイクル管理下でRundeckを活用する事が出来そうです。こちらからは以上です。

その他参考情報