#はじめに
CentOS7上に Rundeck
を自動セットアップするシェルスクリプトです。
以前投稿した内容のCentOS6版を、CentOS7対応&自動化した内容です。
- フロントエンドには
Nginx
(EPELリポジトリ)がセットアップされます。 - バックエンドDBには
MariaDB
(CentOS7 Baseリポジトリ)がセットアップされます。
#動作要件
CentOS7(minimalでも可)が最低限(ネットワーク、ホスト名等)設定済みであること。
#スクリプト
実行する前に、最低限Environment variable
下にある以下の変数を、自分の環境に合わせて書き換えてください。
-
RUNDECK_HOST_NAME
: Rundeckを実行するサーバのFQDN名 ※名前解決できること -
MYSQL_ROOT_PASSWORD
: MariaDBに設定するrootパスワード -
MYSQL_PASSWORD
: MariaDBに登録されるユーザーrundeck
のパスワード
rundeck_setup.sh
#!/bin/bash
##################################################
#
# Rundeck setting up on CentOS7
#
##################################################
##################################################
# Environment variable
##################################################
RUNDECK_HOST_NAME=rundeck.example.com
RUNDECK_PORT=4440
RUNDECK_REPO=http://repo.rundeck.org/latest.rpm
MYSQL_ROOT_PASSWORD=password
MYSQL_DATABASE=rundeck
MYSQL_USER=rundeck
MYSQL_PASSWORD=password
JAVA_VERSION=1.8.0
##################################################
# Exception routine
##################################################
exception() {
echo "error: `basename $0`: line $LINENO: \`${BASH_COMMAND}\` failed."
exit 1
}
trap "exception" ERR
##################################################
# MariaDB install & configuration
##################################################
yum -y install mariadb-server && yum clean all
if [ `grep character-set-server /etc/my.cnf.d/server.cnf | wc -l` -eq 0 ] ; then
echo "character-set-server = utf8" | sed -i -e '/^\[mysqld\]/r /dev/stdin' /etc/my.cnf.d/server.cnf
fi
systemctl enable mariadb
systemctl start mariadb
mysql -u root <<EOF || true
DELETE FROM mysql.user WHERE User='';
UPDATE mysql.user SET Password=PASSWORD('${MYSQL_ROOT_PASSWORD}') WHERE User='root';
DROP DATABASE IF EXISTS test;
CREATE DATABASE IF NOT EXISTS ${MYSQL_DATABASE} DEFAULT CHARACTER SET utf8;
GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* TO '${MYSQL_USER}'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD}' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EOF
##################################################
# Rundeck install & configuration
##################################################
###2018.02.21 modified
#rpm -Uvh ${RUNDECK_REPO} || true
yum -y install ${RUNDECK_REPO}
yum -y install java-${JAVA_VERSION} rundeck && yum clean all
# configure rundeck-config.properties
if [ -f /etc/rundeck/rundeck-config.properties.orig ] ; then
cp -p -f /etc/rundeck/rundeck-config.properties.orig /etc/rundeck/rundeck-config.properties
else
cp -p /etc/rundeck/rundeck-config.properties /etc/rundeck/rundeck-config.properties.orig
fi
sed -i -e 's/^grails.serverURL/#&/' -e 's/^dataSource.dbCreate/#&/' -e 's/^dataSource.url/#&/' /etc/rundeck/rundeck-config.properties
cat <<EOF >>/etc/rundeck/rundeck-config.properties
rundeck.v14.rdbsupport = true
grails.serverURL=http://${RUNDECK_HOST_NAME}
dataSource.dbCreate = update
dataSource.url = jdbc:mysql://localhost/${MYSQL_DATABASE}?autoReconnect=true
dataSource.username = ${MYSQL_USER}
dataSource.password = ${MYSQL_PASSWORD}
EOF
# configuration framework.properties
if [ -f /etc/rundeck/framework.properties.orig ] ; then
cp -p -f /etc/rundeck/framework.properties.orig /etc/rundeck/framework.properties
else
cp -p /etc/rundeck/framework.properties /etc/rundeck/framework.properties.orig
fi
sed -i -e 's/^framework.server/#&/g' /etc/rundeck/framework.properties
cat <<EOF | sed -i -e '/#framework.server.url/r /dev/stdin' /etc/rundeck/framework.properties
framework.server.name = ${RUNDECK_HOST_NAME}
framework.server.hostname = ${RUNDECK_HOST_NAME}
framework.server.port = ${RUNDECK_PORT}
framework.server.url = http://${RUNDECK_HOST_NAME}:${RUNDECK_PORT}
framework.rundeck.url = http://${RUNDECK_HOST_NAME}
EOF
# rundeck start
systemctl restart rundeckd
##################################################
# Nginx install & configuration
##################################################
yum -y install epel-release
yum -y install nginx
# configuration nginx
if [ -f /etc/nginx/nginx.conf.orig ] ; then
cp -p -f /etc/nginx/nginx.conf.orig /etc/nginx/nginx.conf
else
cp -p /etc/nginx/nginx.conf /etc/nginx/nginx.conf.orig
fi
echo -e "\t\tproxy_pass http://${RUNDECK_HOST_NAME}:${RUNDECK_PORT};" | sed -i -e '/^ *location \//r /dev/stdin' /etc/nginx/nginx.conf
# nginx start
systemctl enable nginx
systemctl restart nginx
尚、実行中にエラーが発生した場合は、エラーの行番号とコマンドを表示して直ちに強制終了します。
#スクリプト終了後
正常終了したことを確認して http://<Rundeckホスト名>
にアクセスすると、ログインページが表示されます。
ちなみに管理者アカウントの初期値は、ユーザー名、パスワード共に admin
です。
#最後に
ご査収ください。