training-guides/labs/scripts/apt_install_mysql.sh
Roger Luethi 7c3c74080a functions.guest: add iniset_sudo, a root wrapper around iniset
This changeset introduces iniset_sudo, a root wrapper around the
devstack function, iniset.

The wrapper function makes it easier to have comments explaining
lines changes to configuration files.

Instead of sourcing the devstack library in the root environment as
well, iniset_sudo works on a temporary copy of the configuration file
and uses root privileges only to copy the result back into place. It
would have to be modified before it could edit files that the script
user has no permission to read.

The changeset illustrates the use of the function with a patched
apt_install_mysql.sh

Change-Id: I416c0d14280e774a939d7bebaf7d45c3a488e763
2014-07-29 12:09:12 +02:00

50 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
TOP_DIR=$(cd $(dirname "$0")/.. && pwd)
source "$TOP_DIR/config/paths"
source "$CONFIG_DIR/credentials"
source "$LIB_DIR/functions.guest"
exec_logfile
indicate_current_auto
#-------------------------------------------------------------------------------
# Controller setup
# Get FOURTH_OCTET for this node
source "$CONFIG_DIR/config.$(hostname)"
# Get MGMT_NET
source "$CONFIG_DIR/openstack"
DB_IP=$(get_ip_from_net_and_fourth "MGMT_NET" "$FOURTH_OCTET")
echo "Will bind MySQL server to $DB_IP."
echo "Sourced MySQL password from credentials: $DATABASE_PASSWORD"
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password password '$DATABASE_PASSWORD''
sudo debconf-set-selections <<< 'mysql-server mysql-server/root_password_again password '$DATABASE_PASSWORD''
echo "Installing MySQL."
sudo apt-get install -y mysql-server python-mysqldb
echo "Configuring MySQL to accept requests by other nodes."
# Enable access by other nodes via the management network
iniset_sudo /etc/mysql/my.cnf mysqld bind-address "$DB_IP"
# Enable InnoDB
iniset_sudo /etc/mysql/my.cnf mysqld default-storage-engine innodb
iniset_sudo /etc/mysql/my.cnf mysqld innodb_file_per_table 1
# Enable UTF-8 character set and UTF-8 collation by default
iniset_sudo /etc/mysql/my.cnf mysqld collation-server utf8_general_ci
iniset_sudo /etc/mysql/my.cnf mysqld init-connect "'SET NAMES utf8'"
iniset_sudo /etc/mysql/my.cnf mysqld character-set-server utf8
echo "Restarting MySQL service."
sudo service mysql restart
# TODO(rluethi) do we need mysql_secure_installation?
# XXX --use-default only in MySQL 5.7.4+ (Ubuntu 12.04 LTS: MySQL 5.5)
# mysql_secure_installation --use-default