mirror of
https://git.lapiole.org/dani/ansible-roles.git
synced 2025-07-26 15:55:56 +02:00
Update to 2021-12-01 19:13
This commit is contained in:
132
roles/mysql_server/tasks/main.yml
Normal file
132
roles/mysql_server/tasks/main.yml
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
|
||||
- name: set service name
|
||||
set_fact: mysql_service_name={{ (mysql_engine == 'mysql') | ternary('mysqld','mariadb') }}
|
||||
tags: mysql
|
||||
|
||||
- name: Remove mariadb repo
|
||||
file: path=/etc/yum.repos.d/mariadb.repo state=absent
|
||||
when: mysql_engine == 'mysql'
|
||||
tags: mysql
|
||||
|
||||
- include_vars: "{{ item }}"
|
||||
with_first_found:
|
||||
- vars/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml
|
||||
- vars/{{ ansible_os_family }}-{{ ansible_distribution_major_version }}.yml
|
||||
- vars/{{ ansible_distribution }}.yml
|
||||
- vars/{{ ansible_os_family }}.yml
|
||||
tags: mysql
|
||||
|
||||
- name: Install server and client packages
|
||||
package: name={{ mysql_server_packages }}
|
||||
tags: mysql
|
||||
|
||||
- name: Deploy backup scripts
|
||||
template: src={{ item }}-backup.j2 dest=/etc/backup/{{ item }}.d/mysql mode=755
|
||||
loop:
|
||||
- pre
|
||||
- post
|
||||
tags: mysql
|
||||
|
||||
- name: Remove old backup hooks
|
||||
file: path=/etc/backup/{{ item }} state=absent
|
||||
loop:
|
||||
- pre.d/mariadb_create_dumps.sh
|
||||
- post.d/mariadb_delete_dumps.sh
|
||||
- pre.d/mariadb
|
||||
- post.d/mariadb
|
||||
tags: mysql
|
||||
|
||||
- name: Create system override directory
|
||||
file: path=/etc/systemd/system/{{ mysql_service_name }}.service.d/ state=directory
|
||||
tags: mysql
|
||||
|
||||
- name: Modify the service unit
|
||||
template: src=systemd_limits.conf.j2 dest=/etc/systemd/system/{{ mysql_service_name }}.service.d/limits.conf
|
||||
register: mysql_unit
|
||||
notify: restart mysql
|
||||
tags: mysql
|
||||
|
||||
- name: Reload systemd
|
||||
systemd: daemon_reload=True
|
||||
when: mysql_unit.changed
|
||||
tags: mysql
|
||||
|
||||
- name: Deploy my.cnf
|
||||
template: src=my.cnf.j2 dest=/etc/my.cnf
|
||||
notify: restart mysql
|
||||
tags: mysql
|
||||
|
||||
- name: Start and enable the server
|
||||
service: name={{ mysql_service_name }} state=started enabled=True
|
||||
tags: mysql
|
||||
|
||||
- name: Check if we need to create a password for the root user
|
||||
stat: path=/root/.my.cnf
|
||||
register: my_no_cnf
|
||||
tags: mysql
|
||||
|
||||
- name: Generate a random password for user root
|
||||
command: openssl rand -base64 45
|
||||
register: my_root_pass
|
||||
when: not my_no_cnf.stat.exists
|
||||
tags: mysql
|
||||
|
||||
- name: Set root password
|
||||
command: mysqladmin password "{{ my_root_pass.stdout }}"
|
||||
when:
|
||||
- not my_no_cnf.stat.exists
|
||||
- my_root_pass.stdout is defined
|
||||
tags: mysql
|
||||
|
||||
- name: Deploy /root/.my.cnf
|
||||
template: src=root_my.cnf.j2 dest=/root/.my.cnf
|
||||
when:
|
||||
- not my_no_cnf.stat.exists
|
||||
- my_root_pass.stdout is defined
|
||||
tags: mysql
|
||||
|
||||
- name: Remove anonymous user
|
||||
mysql_user: name='' host_all=yes state=absent
|
||||
tags: mysql
|
||||
|
||||
- name: Remove the test database
|
||||
mysql_db: name=test state=absent
|
||||
tags: mysql
|
||||
|
||||
- name: Handle service port
|
||||
iptables_raw:
|
||||
name: mysql_port
|
||||
state: "{{ (mysql_src_ip is defined and mysql_src_ip | length > 0) | ternary('present','absent') }}"
|
||||
rules: "-A INPUT -m state --state NEW -p tcp --dport {{ mysql_port | default('3306') }} -s {{ mysql_src_ip | join(',') }} -j ACCEPT"
|
||||
when: iptables_manage | default(True)
|
||||
tags: mysql,firewall
|
||||
|
||||
- name: Create database admin
|
||||
mysql_user: name=sqladmin password={{ mysql_admin_pass }} host="%" priv="*.*:ALL,GRANT" state=present
|
||||
tags: mysql
|
||||
|
||||
- name: Create databases
|
||||
mysql_db: name={{ item }} state=present
|
||||
with_items: "{{ mysql_databases | default([]) }}"
|
||||
tags: mysql
|
||||
|
||||
- name: Create mysql users
|
||||
mysql_user: name={{ item.name }} password={{ item.password }} priv={{ item.privileges }} host={{ item.host | default('localhost') }} state=present
|
||||
with_items: "{{ mysql_users | default([]) }}"
|
||||
when:
|
||||
- item.name is defined
|
||||
- item.password is defined
|
||||
- item.privileges is defined
|
||||
tags: mysql
|
||||
|
||||
- name: Remove databases
|
||||
mysql_db: name={{ item }} state=absent
|
||||
with_items: "{{ mysql_databases_to_remove }}"
|
||||
tags: mysql
|
||||
|
||||
- name: Remove users
|
||||
mysql_user: name={{ item.name }} host={{ item.host | default(omit) }} state=absent
|
||||
with_items: "{{ mysql_users_to_remove }}"
|
||||
tags: mysql
|
||||
...
|
Reference in New Issue
Block a user