LoginSignup
19
18

More than 5 years have passed since last update.

OSS ジョブスケジューラ(Rundeck)を自宅サーバに入れてみた

Last updated at Posted at 2018-10-24

OSS ジョブスケジューラ(Rundeck)を自宅サーバに入れてみた

自宅サーバで運用スクリプトを実行する場面は多くはないですが、商用ジョブスケジューラ(JP1/AJS,TWS,SystemWalker等)と比較し、OSSでも使えるジョブスケジューラとなっているのか検証してみました。

検証する環境は、Ubuntu16.04LTSとCentOS7.5

0.検証環境

OS:Ubuntu 16.04 LTS
OS:CentOS 7.5
ミドルウェア:Rundeck 3.0.7 (20181008)
前提ミドルウェア:JRE 1.8.0

1.Rundeckとは

まず、OSS ジョブスケジューラである『Rundeck』とは、どういった製品なのか調査してみました。

『Rundeck』とは、LinuxもしくはWindowsで動作する、オープンソースのJob管理ツールであり、ライセンスは「Apache Software License 2.0」で商用利用が可能なライセンスとなっています。エージェントは、エージェントレスのシステムであることも(SSHを介してジョブ実行する。エージェント)その為、FW等のネットワーク設計も容易と思われる。

Cronのようにシェルスクリプトなどを定時実行するだけでなく、結果に応じて、通知や別スクリプトを実行するなどCronだけでは実施が難しいフロー制御が可能となっています。
『Rundeck』は、Java/Groovyで作られています。また、バックエンドDBは、デフォルトの『H2 Database』も同梱していますが、『MariaDB』に変更することも可能です。

ジョブ管理ソフトウェアとして、[Web GUI],[Web API]、[コマンドライン]を介してジョブの作成、実行、管理、スケジューリングすることも可能です。

日本語化については、公式には行われておらず、propertiesファイルを_jpとしてコピーし、編集することで可能なようだ。※要調査

『Rundeck』には、コミュニティサポート版でフリーである『Rundeck Community』と、有償のプロサポート版である『Rundeck Enterprise』がある。
『Rundeck Enterprise』では、プロのサポートを受けられる他にクラスタ環境でも使用することができ(DBはReplication)、使用できるPluginもPRO仕様となります。

連携については、Slack通知プラグインSCM(Git)連携、LDAP/ActiveDirectory連携、Graylogを使ってログに特定のメッセージを出力した際にジョブを実行することも可能みたいです。

『Rundeck』

2.Rundeck(3.0.7) インストール

2.1.Ubutnu16.04LTSにインストール

2.1.1.javaをインストール

まずは、『Rundeck』の前提となっているjavaをインストールする。

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install openjdk-8-jdk-headless

2.1.2.JAVA_HOME追加

JAVA_HOME追加
$ sudo vi ~/.bashrc

#一番下へ以下4行を追加
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH

$ source ~/.bashrc

2.1.3.『Rundeck』インストール

次に『Rundeck』パッケージをインストール

$ wget https://dl.bintray.com/rundeck/rundeck-deb/rundeck_3.0.7.20181008-1.201810082317_all.deb
$ sudo dpkg -i rundeck_3.0.7.20181008-1.201810082317_all.deb
$ sudo dpkg -l rundeck

2.1.4. Java VM設定

使用するJava VMを設定する。

$ sudo update-alternatives --config java

2.1.5.リダイレクトURLの設定

$ sudo vi /etc/rundeck/rundeck-config.properties
grails.serverURL=http://ホスト名:4440 ドメイン名に変更
$ sudo vi /etc/rundeck/framework.properties
framework.server.name = ドメイン名 ← localhostからドメイン名に修正
framework.server.hostname = ドメイン名 ← localhostからドメイン名に修正
framework.server.port = 4440
framework.server.url = http://ホスト名:4440 ← localhostからドメイン名に修正

2.1.6.『Rundeck』起動

$ sudo systemctl status rundeckd
$ sudo systemctl start rundeckd

2.1.7.ブラウザから『Rundeck』にアクセスする。

HTTPの場合は、http://ドメイン名:4440
HTTPSの場合は、、https://ドメイン名:4443

初期状態のAdminユーザーでログインするにはUsernameに[admin]とPasswordに[admin]を入力します。
ログイン後のページが表示されればインストール完了です。

2.2.CentOS7.5にインストール

2.2.1.インストール

# yum install java-1.8.0
# wget https://repo.rundeck.org/latest.rpm
# rpm -Uvh ./latest.rpm
# yum install rundeck

2.2.2.JAVA_HOME追加

JAVA_HOME追加
$ sudo vi ~/.bashrc

#一番下へ以下4行を追加
JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JAVA_HOME
PATH=$PATH:$JAVA_HOME/bin
export PATH

$ source ~/.bashrc

2.2.3.リダイレクトURLの設定

# vi /etc/rundeck/rundeck-config.properties
grails.serverURL=http://IPアドレス:4440 ← ■localhostからIPアドレス変更
# vi /etc/rundeck/framework.properties
framework.server.name = localhost
framework.server.hostname = localhost
framework.server.port = 4440
framework.server.url = http://IPアドレス:4440 ← ■localhostからIPアドレスに修正

2.2.4.『Rundeck』起動

# systemctl status rundeckd
# systemctl start rundeckd

2.2.5. firewalldのポート許可設定

# firewall-cmd --list-ports --zone=public
# firewall-cmd --add-port=4440/tcp --zone=public --permanent
# firewall-cmd --list-ports --zone=public

2.2.6.ブラウザから『Rundeck』にアクセスする。

HTTPの場合は、http://IPアドレス:4440

Ubuntuと同様に初期状態のAdminユーザーでログインするにはUsernameに[admin]とPasswordに[admin]を入力し、ログイン後のページが表示されればインストール完了です。

3.Apacheとの連携設定

『Rundeck』にアクセスするにはポート4440もしくは4443を使用するのですが
Apacheと連携することでポート80からアクセスすることが可能です。

Ubuntu16.04LTSは、HTTPSからもアクセス出来るようにしたいためApache連携し、かつHTTPSでのアクセスを目的とする。

3.1. Ubuntu16.04LTSの場合

3.1.1.Java起動パラメータ修正

[/etc/rundeck/profile]ファイルはJava起動パラメータが設定されていますが、そこにapacheに連携するように"-Dserver.web.content"を追加します。

# vi /etc/rundeck/profile

RDECK_JVM="-Drundeck.jaaslogin=$JAAS_LOGIN \
-Djava.security.auth.login.config=$JAAS_CONF \
-Dloginmodule.name=$LOGIN_MODULE \
-Drdeck.config=$RDECK_CONFIG \
-Drundeck.server.configDir=$RDECK_SERVER_CONFIG \
-Dserver.datastore.path=$RDECK_SERVER_DATA/rundeck \
-Drundeck.server.serverDir=$RDECK_INSTALL \
-Drdeck.projects=$RDECK_PROJECTS \
-Drdeck.runlogs=$RUNDECK_LOGDIR \
-Drundeck.config.location=$RDECK_CONFIG_FILE \
-Djava.io.tmpdir=$RUNDECK_TEMPDIR \
-Drundeck.server.workDir=$RUNDECK_WORKDIR \
-Dserver.http.port=$RDECK_HTTP_PORT \
-Dserver.web.context=/rundeck \               ←■この行を追加
-Drdeck.base=$RDECK_BASE"

3.1.2.リダイレクトURLの設定修正

$ sudo vi /etc/rundeck/rundeck-config.properties
grails.serverURL=http://IPアドレス/rundeck ←■修正
$ sudo vi /etc/rundeck/framework.properties
framework.server.name = ドメイン名 ←■修正
framework.server.hostname = ドメイン名 ←■修正
framework.server.port = 4440
grails.serverURL=https://ドメイン名/rundeck ←■修正
framework.rundeck.url = https://ドメイン名/rundeck ←■追加

3.1.3.Rundeckの再起動

systemctl restart rundeckd

3.1.4.『Rundeck』用Apache Config作成

$ sudo vi /etc/apache2/sites-available/rundeck.conf

<Location "/rundeck">
        ProxyPass http://localhost:4440/rundeck
        ProxyPassReverse http://localhost:4440/rundeck
        Require all granted
</Location>

$ sudo a2ensite rundeck

3.1.5.Apacheの再起動

$ sudo systemctl reload apache2

3.1.6.ブラウザから『Rundeck』にアクセスする。

https://ドメイン名/rundeck

3.2. CentOS7.5の場合

CentOS7.5もUbuntu16.04LTS同様にApacheと連携するが、HTTPのみとする。

3.2.1.Java起動パラメータ修正

[/etc/rundeck/profile]ファイルはJava起動パラメータが設定されていますが、そこにapacheに連携するように"-Dserver.web.content"を追加します。

# vi /etc/rundeck/profile

RDECK_JVM="-Drundeck.jaaslogin=$JAAS_LOGIN \
-Djava.security.auth.login.config=$JAAS_CONF \
-Dloginmodule.name=$LOGIN_MODULE \
-Drdeck.config=$RDECK_CONFIG \
-Drundeck.server.configDir=$RDECK_SERVER_CONFIG \
-Dserver.datastore.path=$RDECK_SERVER_DATA/rundeck \
-Drundeck.server.serverDir=$RDECK_INSTALL \
-Drdeck.projects=$RDECK_PROJECTS \
-Drdeck.runlogs=$RUNDECK_LOGDIR \
-Drundeck.config.location=$RDECK_CONFIG_FILE \
-Djava.io.tmpdir=$RUNDECK_TEMPDIR \
-Drundeck.server.workDir=$RUNDECK_WORKDIR \
-Dserver.http.port=$RDECK_HTTP_PORT \
-Dserver.web.context=/rundeck \               ←■この行を追加
-Drdeck.base=$RDECK_BASE"

3.2.2.リダイレクトURLの設定修正

# vi /etc/rundeck/rundeck-config.properties
grails.serverURL=http://IPアドレス/rundeck ←■修正
# vi /etc/rundeck/framework.properties
framework.server.name = localhost
framework.server.hostname = localhost
framework.server.port = 4440
framework.server.url = http://IPアドレス/rundeck ←■修正

3.2.3.Rundeckの再起動

# systemctl restart rundeckd

3.2.4.『Rundeck』用Apache Config作成

# vi /etc/httpd/conf.d/rundeck.conf

<Location "/rundeck">
        ProxyPass http://localhost:4440/rundeck
        ProxyPassReverse http://localhost:4440/rundeck
        Require all granted
</Location>

3.2.5.Apacheの再起動

# systemctl reload httpd

3.2.6.ブラウザから『Rundeck』にアクセスする。

http://IPアドレス/rundeck

Rundeck プロジェクト作成やジョブ作成と実行については、追々書いていこうかと思います。

19
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19
18