Contents
目的
ジョブの定期実行やログ管理などをCentOSで実施したい場合ににcronよりも使いやすいと評判のOSSのジョブスケジューラであるRundeckを導入したいと思います。今回はインストールしてweb経由でアクセスするところまでを実施します。
Rundeck
https://www.rundeck.com/open-source
環境
OS : CentOS7
JDK : Openjdk8
Rundeck : 3.0.13
Step1 : JDKのインストール
Rundeckの動作環境としてjavaをインストールします。
私は開発環境用のjdkを入れました が、jreでも問題ありません。(jre-1.8.0でも動作することを確認しました。)
#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
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
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サービス再起動 $ systemctl restart rundeckd
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ファイルのみしかなかったためと思われました。
仕方なく、上記の方法で実施しました。
次回はRundeckのDB設定などを行いたいと思います。