diff --git a/defaults/main.yml b/defaults/main.yml index b7f0779a..e373eae4 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -102,44 +102,6 @@ galera_pip_packages: - MySQL-python - pycrypto -galera_pre_apt_packages: - - apt-transport-https - - debconf-utils - - libaio1 - - libc6 - - libdbd-mysql-perl - - libgcc1 - - libgcrypt11 - - libstdc++6 - - python-software-properties - - software-properties-common - -# 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_server_package: "mariadb-galera-server-10.0" - -# NB This is specifically galera_packages as these packages only get installed -# during the galera play - this is because of the preseed task and the service -# startup control used when installing mariadb-galera-server and galera. -galera_apt_packages: - - mariadb-client - - "{{ galera_mariadb_server_package }}" - - galera-3 - - qpress - - rsync - - socat - -galera_debconf_items: - - question: "mysql-server/root_password" - name: "{{ galera_mariadb_server_package }}" - value: "{{ galera_root_password }}" - vtype: "string" - - question: "mysql-server/root_password_again" - name: "{{ galera_mariadb_server_package }}" - value: "{{ galera_root_password }}" - vtype: "string" - # Galera slow/unindexed query logging galera_slow_query_logging: 0 galera_unindexed_query_logging: 0 diff --git a/meta/main.yml b/meta/main.yml index 7255fd60..40f526df 100644 --- a/meta/main.yml +++ b/meta/main.yml @@ -30,6 +30,8 @@ galaxy_info: - development - openstack dependencies: - - apt_package_pinning + - role: apt_package_pinning + when: + - ansible_pkg_mgr == 'apt' - role: galera_client galera_client_drop_config_file: true diff --git a/tasks/galera_install.yml b/tasks/galera_install.yml index 82234a12..80d45f68 100644 --- a/tasks/galera_install.yml +++ b/tasks/galera_install.yml @@ -13,71 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -- name: Preseed galera password(s) - debconf: - name: "{{ item.name }}" - question: "{{ item.question }}" - value: "{{ item.value }}" - vtype: "{{ item.vtype }}" - with_items: galera_debconf_items +- include: galera_install_apt.yml + when: + - ansible_pkg_mgr == 'apt' tags: - - galera-debconf - -#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache -#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged -#in 1.9.x or we move to 2.0 (if tested working) -- name: Check apt last update file - stat: - path: /var/cache/apt - register: apt_cache_stat - tags: - - galera-apt-packages - -- name: Update apt if needed - apt: - update_cache: yes - when: > - "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}" or - add_repos | changed - tags: - - galera-apt-packages - -- name: Install galera packages - apt: - pkg: "{{ item }}" - state: latest - register: install_packages - until: install_packages|success - retries: 5 - delay: 2 - with_items: galera_apt_packages - notify: Restart mysql - tags: - - galera-apt-packages - -# TODO(cloudnull) -- Remove this after the Mitaka release -# This task simply removes the system version of -# percona-xtrabackup and xtrabackup if found the -# purpose is to ensure that "if" the system version -# of the binary is installed its first removed in -# favor of the actual upstream package being used in -# the next task. -- name: UnInstall system xtrabackup packages - apt: - pkg: "{{ item }}" - state: absent - with_items: - - percona-xtrabackup - - xtrabackup - tags: - - galera-apt-packages - -- name: Install galera package - apt: - deb: "{{ galera_package_path }}" - force: yes - tags: - - galera-apt-packages + - install-apt - name: Install pip packages pip: diff --git a/tasks/galera_install_apt.yml b/tasks/galera_install_apt.yml new file mode 100644 index 00000000..e1e7cdd3 --- /dev/null +++ b/tasks/galera_install_apt.yml @@ -0,0 +1,80 @@ +--- +# 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. + +- name: Preseed galera password(s) + debconf: + name: "{{ item.name }}" + question: "{{ item.question }}" + value: "{{ item.value }}" + vtype: "{{ item.vtype }}" + with_items: galera_debconf_items + tags: + - galera-debconf + +#TODO(evrardjp): Replace the next 2 tasks by a standard apt with cache +#when https://github.com/ansible/ansible-modules-core/pull/1517 is merged +#in 1.9.x or we move to 2.0 (if tested working) +- name: Check apt last update file + stat: + path: /var/cache/apt + register: apt_cache_stat + tags: + - galera-apt-packages + +- name: Update apt if needed + apt: + update_cache: yes + when: > + "ansible_date_time.epoch|float - apt_cache_stat.stat.mtime > {{cache_timeout}}" or + add_repos | changed + tags: + - galera-apt-packages + +- name: Install galera packages + apt: + pkg: "{{ item }}" + state: latest + register: install_packages + until: install_packages|success + retries: 5 + delay: 2 + with_items: galera_apt_packages + notify: Restart mysql + tags: + - galera-apt-packages + +# TODO(cloudnull) -- Remove this after the Mitaka release +# This task simply removes the system version of +# percona-xtrabackup and xtrabackup if found the +# purpose is to ensure that "if" the system version +# of the binary is installed its first removed in +# favor of the actual upstream package being used in +# the next task. +- name: UnInstall system xtrabackup packages + apt: + pkg: "{{ item }}" + state: absent + with_items: + - percona-xtrabackup + - xtrabackup + tags: + - galera-apt-packages + +- name: Install galera package + apt: + deb: "{{ galera_package_path }}" + force: yes + tags: + - galera-apt-packages \ No newline at end of file diff --git a/tasks/main.yml b/tasks/main.yml index 36e58cb6..9b4bf5cc 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -24,6 +24,15 @@ galera role. when: (galera_root_password is undefined) or (galera_root_password is none) +- name: Gather variables for each operating system + include_vars: "{{ item }}" + with_first_found: + - "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml" + - "{{ ansible_distribution | lower }}.yml" + - "{{ ansible_os_family | lower }}.yml" + tags: + - always + - include: galera_upgrade_check.yml - include: galera_cluster_state.yml - include: galera_pre_install.yml diff --git a/vars/ubuntu-14.04.yml b/vars/ubuntu-14.04.yml new file mode 100644 index 00000000..1cf3e4a0 --- /dev/null +++ b/vars/ubuntu-14.04.yml @@ -0,0 +1,52 @@ +--- +# 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_pre_apt_packages: + - apt-transport-https + - debconf-utils + - libaio1 + - libc6 + - libdbd-mysql-perl + - libgcc1 + - libgcrypt11 + - libstdc++6 + - python-software-properties + - software-properties-common + +# 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_server_package: "mariadb-galera-server-10.0" + +# NB This is specifically galera_packages as these packages only get installed +# during the galera play - this is because of the preseed task and the service +# startup control used when installing mariadb-galera-server and galera. +galera_apt_packages: + - mariadb-client + - "{{ galera_mariadb_server_package }}" + - galera-3 + - qpress + - rsync + - socat + +galera_debconf_items: + - question: "mysql-server/root_password" + name: "{{ galera_mariadb_server_package }}" + value: "{{ galera_root_password }}" + vtype: "string" + - question: "mysql-server/root_password_again" + name: "{{ galera_mariadb_server_package }}" + value: "{{ galera_root_password }}" + vtype: "string"