diff options
| author | Sam Yaple <sam@yaple.net> | 2015-08-28 12:16:53 +0000 |
|---|---|---|
| committer | Sam Yaple <sam@yaple.net> | 2015-08-28 13:33:50 +0000 |
| commit | cbd42ca6e90cca2ff4b84f5e4e46224e6455e8b2 (patch) | |
| tree | 2e4256b6b7b8339da11b1d17250378596e61605b /docker/galera | |
| parent | 3b5380ade021c9884551f427441cbfc0122eb0f0 (diff) | |
| download | kolla-cbd42ca6e90cca2ff4b84f5e4e46224e6455e8b2.tar.gz kolla-cbd42ca6e90cca2ff4b84f5e4e46224e6455e8b2.zip | |
Move docker_templates to docker dir
Updated build.py to reflect this change.
Deprecate --template option and make it a noop.
Change-Id: I7cd98d1ee684a4c64984a49597159868152683b2
Partially-Implements: blueprint remove-docker-dir
Diffstat (limited to 'docker/galera')
| -rw-r--r-- | docker/galera/Dockerfile.j2 | 42 | ||||
| -rw-r--r-- | docker/galera/config-external.sh | 11 | ||||
| -rwxr-xr-x | docker/galera/config-galera.sh | 37 | ||||
| -rwxr-xr-x | docker/galera/start.sh | 25 |
4 files changed, 115 insertions, 0 deletions
diff --git a/docker/galera/Dockerfile.j2 b/docker/galera/Dockerfile.j2 new file mode 100644 index 000000000..38e66ee14 --- /dev/null +++ b/docker/galera/Dockerfile.j2 @@ -0,0 +1,42 @@ +FROM {{ namespace }}/{{ base_distro }}-{{ install_type }}-base:{{ tag }} +MAINTAINER Kolla Project (https://launchpad.net/kolla) + +{% if base_distro in ['fedora', 'centos', 'oraclelinux'] %} + +RUN yum install -y \ + MariaDB-Galera-server \ + MariaDB-client \ + rsync \ + galera \ + socat \ + hostname \ + percona-xtrabackup \ + pv \ + tar \ + expect \ + && rm -rf /var/lib/mysql/* + +{% elif base_distro in ['ubuntu', 'debian'] %} + +# At the end of this run statement we symlink two folders to match the folder +# structure of the RPM family for mysql configs. This allows us to not change +# the config-external.sh code +# TODO(SamYaple): Remove that symlink once config-external is updated +RUN apt-get install -y --no-install-recommends \ + mariadb-galera-server \ + percona-xtrabackup \ + socat \ + expect \ + && apt-get clean \ + && rm -rf /var/lib/mysql/* \ + && ln -s /etc/mysql/conf.d/ /etc/my.cnf.d + +{% endif %} + +COPY config-galera.sh /opt/kolla/config/ +COPY config-external.sh /opt/kolla/ +COPY start.sh / + +CMD ["/start.sh"] + +{{ include_footer }} diff --git a/docker/galera/config-external.sh b/docker/galera/config-external.sh new file mode 100644 index 000000000..43447a51c --- /dev/null +++ b/docker/galera/config-external.sh @@ -0,0 +1,11 @@ +#!/bin/bash +SOURCE="/opt/kolla/mariadb/galera.cnf" +TARGET="/etc/my.cnf.d/galera.cnf" +OWNER="mysql" + +# Cluster configuration +if [[ -f "$SOURCE" ]]; then + cp $SOURCE $TARGET + chown ${OWNER}: $TARGET + chmod 0600 $TARGET +fi diff --git a/docker/galera/config-galera.sh b/docker/galera/config-galera.sh new file mode 100755 index 000000000..e66084001 --- /dev/null +++ b/docker/galera/config-galera.sh @@ -0,0 +1,37 @@ +#!/bin/bash + +function bootstrap_db { + mysqld_safe --wsrep-new-cluster & + + # Waiting for deamon + sleep 10 + expect -c ' + set timeout 10 + spawn mysql_secure_installation + expect "Enter current password for root (enter for none):" + send "\r" + expect "Set root password?" + send "y\r" + expect "New password:" + send "'"${DB_ROOT_PASSWORD}"'\r" + expect "Re-enter new password:" + send "'"${DB_ROOT_PASSWORD}"'\r" + expect "Remove anonymous users?" + send "y\r" + expect "Disallow root login remotely?" + send "n\r" + expect "Remove test database and access to it?" + send "y\r" + expect "Reload privilege tables now?" + send "y\r" + expect eof' + + mysql -u root --password="${DB_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '${DB_ROOT_PASSWORD}' WITH GRANT OPTION;" + mysql -u root --password="${DB_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '${DB_ROOT_PASSWORD}' WITH GRANT OPTION;" + mysqladmin -p"${DB_ROOT_PASSWORD}" shutdown +} + +function populate_db { + mysql_install_db + chown -R mysql: /var/lib/mysql +} diff --git a/docker/galera/start.sh b/docker/galera/start.sh new file mode 100755 index 000000000..f8f8d7f77 --- /dev/null +++ b/docker/galera/start.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +set -o errexit + +CMD="/usr/bin/mysqld_safe" +ARGS="" + +# loading common functions +source /opt/kolla/kolla-common.sh + +# Execute config strategy +set_configs + +# loading functions +source /opt/kolla/config/config-galera.sh + +# This catches all cases of the BOOTSTRAP variable being set, including empty +if [[ "${!KOLLA_BOOTSTRAP[@]}" ]] && [[ ! -e /var/lib/mysql/cluster.exists ]]; then + ARGS="--wsrep-new-cluster" + touch /var/lib/mysql/cluster.exists + populate_db + bootstrap_db +fi + +exec $CMD $ARGS |
