IT Learning

実践形式でITのお勉強

Rundeck

【Rundeck】ジョブ管理ツールRundeckをCentOS7へインストールする

投稿日:2019年2月19日 更新日:

概要

Linuxでジョブ管理の定番といえば標準で使えるcronですが、webベースの画面からジョブ管理ができると便利です。また、無料で使用できるOSSのジョブ管理ツールを調べたところ、Java環境で動Rundeckというものが良さそうだったため、CentOSに実際にRundeckをインストールして試してみた結果をメモしていきます。

今回はとりあえずRundeckをインストールし、クライアント端末からweb経由でアクセスできることを確認するところまでを紹介していきます。

Rundeck

https://www.rundeck.com/open-source

環境

  • CentOS7
  • Openjdk8
  • Rundeck Version3.0.13
  • Windos10×Chrome(クライアント環境)

Step1 : JDKのインストール

Rundeckの動作環境としてはjavaが必要なためまずはJavaの実行環境を構築していきます。
今回はJDKのインストールを例にしていますが、JREでも問題ありません。(jre-1.8.0でも動作することを確認しました。)

JDKをインストールするまでの一連のコマンド

#jdkのインストール
$ sudo yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel

#.bash_profileにJAVA_HOMEのパス定義
$vim .bash_profile
  export JAVA_HOME=/lib/jvm/java-1.8.0-openjdk-1.8.0.191.b12-1.el7_6.x86_64
  export PATH=$PATH:$JAVA_HOME/bin
  export PATH=$PATH:$JAVA_HOME/jre/bin

#.bash_profileの再読み込み
$ source ~/.bash_profile

以上でJavaの実行環境構築は完了です。

Step2 : Rundeckのインストール

次に、Rundeckをインストールしていきます。
まず、rundeckリポジトリを追加し、そのあとに、yumコマンドでインストールを行います。

その後、systemctlコマンドでstartし、systemctl enableでサービス登録を行います。

#リポジトリ追加
sudo rpm -ivh http://repo.rundeck.org/latest.rpm 

Preparing… ################################# [100%]
Updating / installing…
1:rundeck-repo-4-0 ################################# [100%]

#rundeckd インストール
$ yum install rundeck
 
#rundeck起動
$ systemctl start rundeckd

#rundeck自動起動設定
$ systemctl enable rundeckd

rundeckd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig rundeckd on

以上でRundeck自体のインストール作業は完了です。

Step3 : Rundeck 設定ファイル変更

ここまでで、localhostからのアクセスであれば問題ないですが、外部からネットワーク経由でアクセスしたい場合はさらにrundeck-config.propetiesとframework.propertiesのパラメータ変更が必要になります。

これらのファイル内のホストがデフォルトではlocalhostで定義されているので、これらをネットワーク経由のホスト名に変更します。

cd /etc/rundeck/
sudo vim rundeck-config.properties

grails.serverURL=http://<ホスト名orIPアドレス>/rundeck

sudo vim framework.properties

## framework.properties
framework.server.name = <ホスト名orIPアドレス>
framework.server.hostname = <ホスト名orIPアドレス>
framework.server.port = <ポート番号>
framework.server.url = http://<ホスト名orIPアドレス>:<ポート番号>/rundeck

また、profile内にweb.contextの記述を追加し、サービスを再起動します。

sudo vim 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 \
-Dserver.web.context=/rundeck \ #←これを追加
-Drundeck.server.workDir=$RUNDECK_WORKDIR \
-Dserver.http.port=$RDECK_HTTP_PORT \
-Drdeck.base=$RDECK_BASE”

rundeck側の基本的な設定は以上で終わりです。

Step4 : ファイヤウォールとApatchの設定

次に外部からのアクセスを許可するため、CentOS側のフfirewallの開放設定を行います。rundeck側で設定したport番号に対して通過設定が必要です。

#firefall 設定
firewall-cmd --add-port=<ポート番号>/tcp --permanent
firewall-cmd --add-service=rundeckd --zone=public --permanent 
firewall-cmd --reload

最後に、/etc/httpd/conf.d/の配下にrundeck.confという名前のファイルを作成、web server(Apacheの前提)との連携部分を記述すれば、ブラウザから外部アクセスができるようになります。

#Apache設定
touch /etc/httpd/conf.d/rundeck.conf
vim /etc/httpd/conf.d/rundeck.conf

<Location “/rundeck”>
ProxyPass http://<ホスト名orIPアドレス>/rundeck
ProxyPassReverse http://<ホスト名orIPアドレス>/rundeck
</Location>

#Apache再起動
$ systemctl restart httpd

Step5 : パスワード変更

外部アクセスを許可する場合、セキュリティ上、デフォルトパスワードを変更しておくことが望ましいため。以下の手順で実施しました。

#パスワード変更
java -jar /var/lib/rundeck/bootstrap/rundeck-3.0.13-20190123.war --encryptpwd Jetty

Required values are marked with: *
Username (Optional, but necessary for Crypt encoding):
admin
*Value To Encrypt (The text you want to encrypt):
password

vim /etc/rundeck/realm.properties

admin: MD5:,user,admin,architect,deploy,build

#rundeckサービス再起動
$ systemctl restart rundeckd

なお、Rundeckドキュメントにはjava -cp /var/lib/rundeck/bootstrap/jetty-all-9.0.7.v20131107.jar org.eclipse.jetty.util.security.Password user passでMD5の暗号化パスワード得られると書かれていましたが、エラーが出てしましました。原因を調べたところ、/var/lib/rundeck/bootstrapの配下にjetty-allが存在せず、rundeckのwarファイルのみしかなかったためと思われました。

今回は仕方なく、上記の方法で実施しましたがセキュリティをより強固にする場合は必ず暗号化してパスワードを記載しておいた方が良いです。

Step6 : クライアント端末からの接続テスト

クライアント端末からブラウザを立ち上げ、http://<ホスト名orIPアドレス>/rundeck へアクセスし、以下のログイン画面が表示されれば成功です。

Related

-Rundeck

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です