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
This commit is contained in:
Jesse Pretorius 2019-01-08 10:22:37 +00:00
parent a1656f8876
commit 04f655f50c
2 changed files with 66 additions and 7 deletions

View File

@ -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:

View File

@ -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) }}"