aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ansible/roles/mariadb/templates/galera.cnf.j23
-rwxr-xr-xdocker/common/galera/config-galera.sh48
-rw-r--r--docker_templates/galera/Dockerfile.j216
3 files changed, 14 insertions, 53 deletions
diff --git a/ansible/roles/mariadb/templates/galera.cnf.j2 b/ansible/roles/mariadb/templates/galera.cnf.j2
index c44bce951..b59d25ce7 100644
--- a/ansible/roles/mariadb/templates/galera.cnf.j2
+++ b/ansible/roles/mariadb/templates/galera.cnf.j2
@@ -1,3 +1,4 @@
+{% set wsrep_driver = '/usr/lib/galera/libgalera_smm.so' if kolla_base_distro == 'ubuntu' else '/usr/lib64/galera/libgalera_smm.so' %}
[mysqld]
bind-address={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}
port={{ mariadb_port }}
@@ -13,7 +14,7 @@ wsrep_provider_options="gmcast.listen_addr=tcp://{{ hostvars[inventory_hostname]
wsrep_node_address={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ mariadb_wsrep_port }}
wsrep_sst_receive_address={{ hostvars[inventory_hostname]['ansible_' + api_interface]['ipv4']['address'] }}:{{ mariadb_sst_port }}
-wsrep_provider=/usr/lib64/galera/libgalera_smm.so
+wsrep_provider={{ wsrep_driver }}
wsrep_cluster_name="{{ database_cluster_name }}"
wsrep_node_name={{ ansible_hostname }}
wsrep_sst_method=xtrabackup-v2
diff --git a/docker/common/galera/config-galera.sh b/docker/common/galera/config-galera.sh
index 42393377d..e66084001 100755
--- a/docker/common/galera/config-galera.sh
+++ b/docker/common/galera/config-galera.sh
@@ -1,27 +1,5 @@
#!/bin/bash
-function configure_files {
- crudini --set $CFG mariadb bind-address "${DB_CLUSTER_BIND_ADDRESS}"
- crudini --set $CFG mariadb binlog_format "ROW"
- crudini --set $CFG mariadb character-set-server "utf8"
- crudini --set $CFG mariadb collation-server "utf8_general_ci"
- crudini --set $CFG mariadb datadir "/var/lib/mysql"
- crudini --set $CFG mariadb default-storage-engine "innodb"
- crudini --set $CFG mariadb init-connect "'SET NAMES utf8'"
- crudini --set $CFG mariadb innodb_autoinc_lock_mode "2"
- crudini --set $CFG mariadb innodb_file_per_table 1
- crudini --set $CFG mariadb innodb_flush_log_at_trx_commit "2"
- crudini --set $CFG mariadb innodb_locks_unsafe_for_binlog "1"
- crudini --set $CFG mariadb innodb_log_file_size "100M"
- crudini --set $CFG mariadb query_cache_size "0"
- crudini --set $CFG mariadb query_cache_type "0"
- crudini --set $CFG mariadb wsrep_cluster_address "gcomm://${DB_CLUSTER_NODES}"
- crudini --set $CFG mariadb wsrep_cluster_name "${DB_CLUSTER_NAME}"
- crudini --set $CFG mariadb wsrep_provider "/usr/lib64/galera/libgalera_smm.so"
- crudini --set $CFG mariadb wsrep_sst_auth "'root:${DB_ROOT_PASSWORD}'"
- crudini --set $CFG mariadb wsrep_sst_method "${DB_CLUSTER_WSREP_METHOD}"
-}
-
function bootstrap_db {
mysqld_safe --wsrep-new-cluster &
@@ -53,33 +31,7 @@ function bootstrap_db {
mysqladmin -p"${DB_ROOT_PASSWORD}" shutdown
}
-function configure_db {
- bootstrap_db
-
- echo "GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '$DB_ROOT_PASSWORD' ;" > $DB_CLUSTER_INIT_SQL
-
- if [ "$MARIADB_DATABASE" ]; then
- echo "CREATE DATABASE IF NOT EXISTS $MARIADB_DATABASE ;" >> $DB_CLUSTER_INIT_SQL
- fi
-
- if [ "$MARIADB_USER" -a "$MARIADB_PASSWORD" ]; then
- echo "CREATE USER '$MARIADB_USER'@'%' IDENTIFIED BY '$MARIADB_PASSWORD' ;" >> $DB_CLUSTER_INIT_SQL
-
- if [ "$MARIADB_DATABASE" ]; then
- echo "GRANT ALL ON $MARIADB_DATABASE.* TO '$MARIADB_USER'@'%' ;" >> $DB_CLUSTER_INIT_SQL
- fi
- fi
-
- echo "FLUSH PRIVILEGES" >> $DB_CLUSTER_INIT_SQL
-}
-
function populate_db {
mysql_install_db
chown -R mysql: /var/lib/mysql
}
-
-function prepare_db {
- populate_db
- configure_db
- configure_files
-}
diff --git a/docker_templates/galera/Dockerfile.j2 b/docker_templates/galera/Dockerfile.j2
index 2d656053a..7856a7f24 100644
--- a/docker_templates/galera/Dockerfile.j2
+++ b/docker_templates/galera/Dockerfile.j2
@@ -26,10 +26,18 @@ RUN yum install -y http://www.percona.com/redir/downloads/percona-release/redhat
{% elif base_distro in ['ubuntu', 'debian'] %}
-RUN ["/bin/false"]
-
-# TODO(sdake) when ubuntu support is implemented we will need a line
-# && rm -rf /var/lib/mysql/
+# 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 %}