Merge "Install MariaDB 10.1 server"

This commit is contained in:
Jenkins 2016-12-08 22:52:39 +00:00 committed by Gerrit Code Review
commit 3a8ea7d81a
19 changed files with 162 additions and 99 deletions

View File

@ -42,6 +42,8 @@ galera_force_change_cluster_name: False
galera_server_distro_package_pins: []
galera_debconf_items: []
galera_server_percona_distro_packages: []
galera_mariadb_server_package: "{{ _galera_mariadb_server_package }}"
galera_repo_url: "{{ _galera_repo_url }}"
galera_existing_cluster: true
@ -101,5 +103,3 @@ galera_debian_cnf_overrides: {}
# the cluster will be used which is something to note if deploying galera on different
# hardware.
# galera_max_connections: 500
using_mysql_init: no

View File

@ -18,7 +18,7 @@ galaxy_info:
description: Installation galera server
company: Rackspace
license: Apache2
min_ansible_version: 1.9
min_ansible_version: 2.1
platforms:
- name: Ubuntu
versions:

View File

@ -0,0 +1,10 @@
---
upgrade:
- The galera_server role now installs MariaDB server version 10.1.
- For systems using the APT package manager, the sources files for
the MariaDB and Percona repos now have consistent names,
'MariaDB.list' and 'Percona.list'.
- The ``galera_mariadb_apt_server_package`` and ``galera_mariadb_yum_server_package``
variables have been renamed to ``galera_mariadb_server_package``.
- The ``galera_apt_repo_url`` and ``galera_yum_repo_url`` variables have been renamed
to ``galera_repo_url``.

View File

@ -18,27 +18,40 @@
num_retries: 1
wait_delay: 3
- name: Start galera cluster
command: galera_new_cluster
when:
- ansible_service_mgr == 'systemd'
- inventory_hostname == galera_server_bootstrap_node
- mysql_running.rc != 0
register: start_cluster
failed_when: false
tags:
- galera-bootstrap
# TODO: Remove this task after 10.0 is removed from upgrade path
- name: Start cluster with wsrep init fallback
command: "/etc/init.d/mysql bootstrap"
when:
- ansible_service_mgr == 'systemd'
- start_cluster | failed
- inventory_hostname == galera_server_bootstrap_node
- mysql_running.rc != 0
tags:
- galera-bootstrap
- name: Start cluster with wsrep
service:
name: mysql
state: restarted
arguments: "--wsrep-new-cluster"
when:
- not using_mysql_init | bool
- ansible_service_mgr != 'systemd'
- inventory_hostname == galera_server_bootstrap_node
- mysql_running.rc != 0
tags:
- galera-bootstrap
- name: Start cluster with wsrep init
command: "/etc/init.d/mysql bootstrap"
when:
- inventory_hostname == galera_server_bootstrap_node
- mysql_running.rc != 0
- using_mysql_init | bool
tags:
- galera-bootstrap
- name: Wait for operational state
command: mysql --silent --skip-column-names -e 'SHOW STATUS LIKE "wsrep_evs_state"'
register: galera_check_wait
@ -62,3 +75,8 @@
tags:
- galera-operational
- galera-bootstrap
- include: galera_upgrade_post.yml
static: no
when:
- galera_upgrade | bool

View File

@ -58,29 +58,39 @@
tags:
- galera-apt-keys
- name: Remove old repos
lineinfile:
dest: "/etc/apt/sources.list.d/{{ item.name }}.list"
regexp: "^((?!{{ item.repo }}).*)$"
state: absent
with_items:
- { name: "MariaDB", repo: "{{ galera_repo.repo }}" }
- { name: "Percona", repo: "{{ galera_percona_xtrabackup_repo.repo }}" }
tags:
- galera-client-repos
- percona-repos
- name: Add galera repo
apt_repository:
repo: "{{ item.repo }}"
state: "{{ item.state }}"
repo: "{{ galera_repo.repo }}"
filename: MariaDB
state: "{{ galera_repo.state }}"
register: add_repos
until: add_repos|success
retries: 5
delay: 2
with_items:
- "{{ galera_repo }}"
tags:
- galera-repos
- name: Add percona repo
apt_repository:
repo: "{{ item.repo }}"
state: "{{ item.state }}"
repo: "{{ galera_percona_xtrabackup_repo.repo }}"
filename: Percona
state: "{{ galera_percona_xtrabackup_repo.state }}"
register: add_repos
until: add_repos|success
retries: 5
delay: 2
with_items:
- "{{ galera_percona_xtrabackup_repo }}"
when: use_percona_upstream | bool
tags:
- percona-repos

View File

@ -54,26 +54,18 @@
tags:
- galera-gpg-keys
#TODO(cloudnull) Remove this task once we move to Ansible 2.1
# where we can leverage the `yum_repository` module:
# https://docs.ansible.com/ansible/yum_repository_module.html
- name: Add galera repo
copy:
content: |
[{{ item.name }}]
name={{ item.name }}
description={{ item.description }}
baseurl={{ item.baseurl }}
gpgkey={{ item.gpgkey }}
gpgcheck=1
enabled=1
dest: "/etc/yum.repos.d/{{ item.file }}.repo"
yum_repository:
name: "{{ galera_repo.name }}"
description: "{{ galera_repo.description }}"
baseurl: "{{ galera_repo.baseurl }}"
gpgkey: "{{ galera_repo.gpgkey }}"
gpgcheck: yes
enabled: yes
register: add_repos
until: add_repos|success
retries: 5
delay: 2
with_items:
- "{{ galera_repo }}"
tags:
- galera-repos

View File

@ -63,20 +63,16 @@
dest: /etc/init.d/mysql
state: present
insertafter: '^export HOME=/etc/mysql/'
line: '[ -r /etc/default/mysql ] && . /etc/default/mysql'
line: '[ -r /etc/default/mariadb ] && . /etc/default/mariadb'
backup: yes
tags:
- galera-config
# NOTE: (mancdaz) REMOVE "/etc/default/mysql" when running MariaDB 10.1
- name: Apply service defaults
template:
src: "mysql_defaults.j2"
dest: "{{ item }}"
dest: "/etc/default/mariadb"
mode: "0644"
with_items:
- /etc/default/mysql
- /etc/default/mariadb
notify:
- Restart mysql
- Reload the systemd daemon
@ -104,11 +100,14 @@
when:
- ansible_service_mgr == 'systemd'
- name: Apply resource limits (systemd)
- name: Apply systemd options
template:
src: "systemd.limits.conf.j2"
dest: "/etc/systemd/system/mariadb.service.d/limits.conf"
src: "{{ item.src }}"
dest: "/etc/systemd/system/mariadb.service.d/{{ item.dest }}"
mode: "0644"
with_items:
- { src: "systemd.limits.conf.j2", dest: "limits.conf" }
- { src: "systemd.timeout.conf.j2", dest: "timeout.conf" }
when:
- ansible_service_mgr == 'systemd'
notify:
@ -123,8 +122,3 @@
state: absent
tags:
- galera-config
- include: galera_upgrade_post.yml
static: no
when:
- galera_upgrade | bool

View File

@ -14,7 +14,7 @@
# limitations under the License.
- name: Check major galera install version
command: "dpkg -s {{ galera_mariadb_apt_server_package }}"
command: "dpkg -s {{ galera_mariadb_server_package }}"
failed_when: false
register: installed_galera_specific
when:

View File

@ -14,7 +14,7 @@
# limitations under the License.
- name: Check major galera install version
command: "rpm -qi '{{ galera_mariadb_yum_server_package }}'"
command: "rpm -qi '{{ galera_mariadb_server_package }}'"
failed_when: false
register: installed_galera_specific
when:
@ -27,7 +27,7 @@
- name: Check for any galera install version
shell: |
rpm -qa | grep -i "{{ galera_mariadb_yum_server_package }}"
rpm -qa | grep -i "{{ galera_mariadb_server_package }}"
failed_when: false
register: installed_galera_any
when:

View File

@ -13,22 +13,10 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# This is starting MySQL as it may be required to restart the service more than
# once to get it to clean up old service files from the previous version.
# If the service fails to start after 3 attempts the shell command will be failed.
- name: Start MySQL
shell: |
for i in {1..3}; do
/etc/init.d/mysql start || true
if pgrep mysqld; then
exit 0
else
sleep 2
fi
done
echo "Service failed to start"
exit 1
changed_when: false
service:
name: mysql
state: started
tags:
- galera-upgrade

View File

@ -30,10 +30,22 @@
tags:
- galera-upgrade
# Stop through the init script in case the service
# was initially started outside of systemctl.
- name: Stop mysql
command: /etc/init.d/mysql stop
changed_when: false
tags:
- galera-upgrade
# TODO: Remove the following three tasks in Pike
# They're only required during upgrades transitioning to a
# statically named apt sources file.
- name: Find old sources
command: >
grep -rnil maria /etc/apt/sources.list.d/*
grep -rnil maria /etc/apt/sources.list.d/ --exclude MariaDB.list
changed_when: false
failed_when: false
register: old_sources
tags:
- galera-upgrade
@ -45,8 +57,8 @@
state: absent
with_items: "{{ old_sources.stdout_lines | default([]) }}"
tags:
- galera-upgrade
- galera-apt-packages
- galera-upgrade
- galera-apt-packages
- name: Update apt sources (Forced)
apt:
@ -63,11 +75,15 @@
- galera-apt-packages
- name: UN-Install galera-server package
apt:
pkg: "mariadb-galera-server*"
package:
name: "{{ item }}"
state: absent
when:
- ansible_pkg_mgr == 'apt'
with_items:
- "mariadb-galera-server*"
- "mariadb-server*"
- MariaDB-Galera-server
- MariaDB-server
- mysql-common
tags:
- galera-upgrade
- galera-apt-packages

View File

@ -1,6 +1,8 @@
# {{ ansible_managed }}
[mysqld]
wsrep_on = ON
# Path to Galera library
wsrep_provider = /usr/lib/galera/libgalera_smm.so
{% if galera_wsrep_provider_options is defined %}

View File

@ -8,7 +8,7 @@
{%- set calculated_min_connections = all_calculated_max_connections | min %}
{%- set calculated_max_connections = galera_max_connections | default(calculated_min_connections) %}
# How long to wait for successfull mysql startup
# How long to wait for successful mysql startup
# Startup can take a while if it requires a galera state transfer.
MYSQLD_STARTUP_TIMEOUT=1800

View File

@ -0,0 +1,6 @@
# {{ ansible_managed }}
[Service]
# How long to wait for successful mysql startup
# Startup can take a while if it requires a galera state transfer.
TimeoutStartSec=1800

View File

@ -0,0 +1,22 @@
---
# Copyright 2016, Rackspace US, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
galera_server_old_package:
debian:
galera_mariadb_server_package: "mariadb-galera-server-10.0"
galera_repo_url: "http://mirror.rackspace.com/mariadb/repo/10.0/ubuntu"
redhat:
galera_mariadb_server_package: "MariaDB-Galera-server"
galera_repo_url: "http://yum.mariadb.org/10.0/centos/7/x86_64"

View File

@ -19,8 +19,19 @@
# Prepare the containers
- include: common/test-prepare-containers.yml
# Install Galera server
# Install previous version Galera server
- include: common/test-install-galera.yml
vars:
galera_mariadb_server_package: "{{ galera_server_old_package[ansible_os_family | lower]['galera_mariadb_server_package'] }}"
galera_repo_url: "{{ galera_server_old_package[ansible_os_family | lower]['galera_repo_url'] }}"
# Run functional tests
- include: test-galera-server-functional.yml
# Install current version Galera server
- include: common/test-install-galera.yml
vars:
galera_upgrade: true
# Re-run functional tests
- include: test-galera-server-functional.yml

View File

@ -28,24 +28,22 @@ galera_server_required_distro_packages:
- MariaDB-client
- MariaDB-devel
galera_mariadb_yum_server_package: "MariaDB-Galera-server"
_galera_mariadb_server_package: "MariaDB-server"
galera_server_mariadb_distro_packages:
- which
- "{{ galera_mariadb_yum_server_package }}"
- "{{ galera_mariadb_server_package }}"
- MariaDB-shared
- percona-xtrabackup
- percona-toolkit
- rsync
- socat
galera_yum_repo_url: "http://yum.mariadb.org/10.0/centos/7/x86_64"
_galera_repo_url: "http://yum.mariadb.org/10.1/centos/7/x86_64"
galera_repo:
state: "present"
name: MariaDB
description: "MariaDB Repo"
file: MariaDB
baseurl: "{{ galera_yum_repo_url }}"
baseurl: "{{ galera_repo_url }}"
gpgkey: "https://yum.mariadb.org/RPM-GPG-KEY-MariaDB"
galera_percona_xtrabackup_repo:
@ -79,4 +77,3 @@ qpress_arch_sha256:
x86_64: "d6b6b7ca3a5ad4baea34975743106ac54ac746b3e6497d59bce55765d604b697"
use_percona_upstream: yes
using_mysql_init: yes

View File

@ -44,7 +44,7 @@ galera_server_required_distro_packages:
# The package name for mariaDB is set as a variable
# so that it can be used in debconf later in the
# "galera_common" role.
galera_mariadb_apt_server_package: "mariadb-galera-server-10.0"
_galera_mariadb_server_package: "mariadb-server-10.1"
# NB This is specifically galera_server_mariadb_distro_packages as these
# packages only get installed during the galera play - this is because of
@ -53,18 +53,18 @@ galera_mariadb_apt_server_package: "mariadb-galera-server-10.0"
galera_server_mariadb_distro_packages:
- libmariadbclient-dev
- mariadb-client
- "{{ galera_mariadb_apt_server_package }}"
- "{{ galera_mariadb_server_package }}"
- galera-3
- rsync
- socat
galera_debconf_items:
- question: "mysql-server/root_password"
name: "{{ galera_mariadb_apt_server_package }}"
name: "{{ galera_mariadb_server_package }}"
value: "{{ galera_root_password }}"
vtype: "string"
- question: "mysql-server/root_password_again"
name: "{{ galera_mariadb_apt_server_package }}"
name: "{{ galera_mariadb_server_package }}"
value: "{{ galera_root_password }}"
vtype: "string"
@ -100,10 +100,9 @@ galera_percona_xtrabackup_repo:
repo: "deb {{ galera_percona_xtrabackup_repo_url }} {{ ansible_distribution_release }} main"
state: "present"
galera_apt_repo_url: "http://mirror.rackspace.com/mariadb/repo/10.0/ubuntu"
_galera_repo_url: "http://mirror.rackspace.com/mariadb/repo/10.1/ubuntu"
galera_repo:
repo: "deb {{ galera_apt_repo_url }} {{ ansible_distribution_release }} main"
repo: "deb {{ galera_repo_url }} {{ ansible_distribution_release }} main"
state: "present"
use_percona_upstream: no
using_mysql_init: no

View File

@ -44,7 +44,7 @@ galera_server_required_distro_packages:
# The package name for mariaDB is set as a variable
# so that it can be used in debconf later in the
# "galera_common" role.
galera_mariadb_apt_server_package: "mariadb-galera-server-10.0"
_galera_mariadb_server_package: "mariadb-server-10.1"
# NB This is specifically galera_server_mariadb_distro_packages as these
# packages only get installed during the galera play - this is because of
@ -53,18 +53,18 @@ galera_mariadb_apt_server_package: "mariadb-galera-server-10.0"
galera_server_mariadb_distro_packages:
- libmariadbclient-dev
- mariadb-client
- "{{ galera_mariadb_apt_server_package }}"
- "{{ galera_mariadb_server_package }}"
- galera-3
- rsync
- socat
galera_debconf_items:
- question: "mysql-server/root_password"
name: "{{ galera_mariadb_apt_server_package }}"
name: "{{ galera_mariadb_server_package }}"
value: "{{ galera_root_password }}"
vtype: "string"
- question: "mysql-server/root_password_again"
name: "{{ galera_mariadb_apt_server_package }}"
name: "{{ galera_mariadb_server_package }}"
value: "{{ galera_root_password }}"
vtype: "string"
@ -99,16 +99,14 @@ qpress_arch_sha256:
ppc64le: "a31d3e00dbcec9b3f98eae82b261d054d0b80a57f4a38967d0e953811cb082f3"
# Repositories
# TODO: update this to xenial if the repo ever gets created.
galera_percona_xtrabackup_repo_url: "http://repo.percona.com/apt"
galera_percona_xtrabackup_repo:
repo: "deb {{ galera_percona_xtrabackup_repo_url }} {{ ansible_distribution_release }} main"
state: "present"
galera_apt_repo_url: "http://mirror.rackspace.com/mariadb/repo/10.0/ubuntu"
_galera_repo_url: "http://mirror.rackspace.com/mariadb/repo/10.1/ubuntu"
galera_repo:
repo: "deb {{ galera_apt_repo_url }} {{ ansible_distribution_release }} main"
repo: "deb {{ galera_repo_url }} {{ ansible_distribution_release }} main"
state: "present"
use_percona_upstream: no
using_mysql_init: yes