5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rundeck on CentOS7 をセットアップするシェルスクリプト

Last updated at Posted at 2017-08-31

#はじめに
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 です。

#最後に
ご査収ください。

5
6
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
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?