From 04f655f50c04dd09194e53752c734ac4d67fce21 Mon Sep 17 00:00:00 2001 From: Jesse Pretorius Date: Tue, 8 Jan 2019 10:22:37 +0000 Subject: [PATCH] Replace /etc/my.cnf.d if it exists for SUSE/CentOS In SUSE/CentOS systems, /etc/my.cnf.d may already exist on the system. We need to ensure that it is removed if that is true so that we can replace it with symlinks to the directories expected to be used by the MariaDB packages instead. By replacing it with symlinks, we allow anything else on the system expecting those paths to be in place to still work as before, but we also ensure that the MariaDB package expectations are met. Change-Id: I07fd0872a76af9dab89414207e297946e84965cf --- tasks/galera_install_yum.yml | 49 ++++++++++++++++++++++++++++----- tasks/galera_install_zypper.yml | 24 ++++++++++++++++ 2 files changed, 66 insertions(+), 7 deletions(-) diff --git a/tasks/galera_install_yum.yml b/tasks/galera_install_yum.yml index c90ef4cc..23e7c42f 100644 --- a/tasks/galera_install_yum.yml +++ b/tasks/galera_install_yum.yml @@ -36,18 +36,53 @@ warn: no executable: /bin/bash +# In SUSE/CentOS systems, /etc/my.cnf.d may already exist on the +# system. We need to ensure that it is removed if that is true so +# that we can replace it with symlinks to the directories expected +# to be used by the MariaDB packages instead. +- name: Stat /etc/my.cnf.d + stat: + path: /etc/my.cnf.d + get_attributes: no + get_checksum: no + get_mime: no + register: mycnfd_stat + +- name: Destroy my.cnf.d dir if is dir + file: + path: /etc/my.cnf.d + state: absent + force: true + when: + - mycnfd_stat.stat.isdir is defined + - mycnfd_stat.stat.isdir == True + +# We replace the default paths for the system with symlinks to +# the paths used by the MariaDB packages so ensure that any other +# system expectations are still met. - name: Update the local file system CRUD file: - src: "{{ item.src|default(omit) }}" + src: "{{ item.src | default(omit) }}" path: "{{ item.path }}" state: "{{ item.state }}" - force: "{{ item.force|default(omit) }}" + force: "{{ item.force | default(omit) }}" with_items: - - { path: "/etc/mysql", state: "directory" } - - { path: "/etc/mysql/conf.d", state: "directory" } - - { src: "/usr/lib64/galera", path: "/usr/lib/galera", state: "link", force: true } - - { src: "/etc/mysql/conf.d", path: "/etc/my.cnf.d", state: "link", force: true } - - { src: "/etc/mysql/my.cnf", path: "/etc/my.cnf", state: "link", force: true } + - path: "/etc/mysql" + state: "directory" + - path: "/etc/mysql/conf.d" + state: "directory" + - src: "/usr/lib64/galera" + path: "/usr/lib/galera" + state: "link" + force: true + - src: "/etc/mysql/conf.d" + path: "/etc/my.cnf.d" + state: "link" + force: true + - src: "/etc/mysql/my.cnf" + path: "/etc/my.cnf" + state: "link" + force: true - name: If a keyfile is provided, copy the gpg keyfile to the key location copy: diff --git a/tasks/galera_install_zypper.yml b/tasks/galera_install_zypper.yml index b960489e..2c3a75c6 100644 --- a/tasks/galera_install_zypper.yml +++ b/tasks/galera_install_zypper.yml @@ -18,6 +18,30 @@ name: "{{ galera_server_mariadb_distro_packages_remove }}" state: absent +# In SUSE/CentOS systems, /etc/my.cnf.d may already exist on the +# system. We need to ensure that it is removed if that is true so +# that we can replace it with symlinks to the directories expected +# to be used by the MariaDB packages instead. +- name: Stat /etc/my.cnf.d + stat: + path: /etc/my.cnf.d + get_attributes: no + get_checksum: no + get_mime: no + register: mycnfd_stat + +- name: Destroy my.cnf.d dir if is dir + file: + path: /etc/my.cnf.d + state: absent + force: true + when: + - mycnfd_stat.stat.isdir is defined + - mycnfd_stat.stat.isdir == True + +# We replace the default paths for the system with symlinks to +# the paths used by the MariaDB packages so ensure that any other +# system expectations are still met. - name: Update the local file system CRUD file: src: "{{ item.src|default(omit) }}"