ansible-role-dbmail/tasks/configure_mysql_database.yml

74 lines
2.1 KiB
YAML

---
- name: Initialize fact create_database
set_fact:
create_database: true
- name: Check for existing database
shell: mysql -Bqe 'show databases'
register: databases
ignore_errors: true
- name: Check for existing tables in database
shell: "mysql {{ dbmail_db_name }} -Bqe 'show tables'"
register: tables
when: "dbmail_db_name in databases.stdout"
- name: Update fact create_database
set_fact:
create_database: false
when:
- "dbmail_db_name in databases.stdout"
- "'dbmail_users' in tables.stdout"
- name: Create copy of create_tables to work with
copy:
remote_src: true
src: /usr/src/dbmail-3.3.0/sql/mysql/create_tables.mysql
dest: /tmp/create_tables.sql
when: create_database
- name: Fix index name for auto_notifications table
lineinfile:
path: /tmp/create_tables.sql
firstmatch: true
line: ' FOREIGN KEY an_user_idnr_fk (user_idnr)'
search_string: ' FOREIGN KEY user_idnr_fk (user_idnr)'
backup: yes
when: create_database
- name: Fix index name for auto_replies table
lineinfile:
path: /tmp/create_tables.sql
firstmatch: true
line: ' FOREIGN KEY ar_user_idnr_fk (user_idnr)'
search_string: ' FOREIGN KEY user_idnr_fk (user_idnr)'
backup: yes
when: create_database
- name: Create a new database from structure file
mysql_db:
name: "{{ dbmail_db_name }}"
state: import
target: /tmp/create_tables.sql
collation: utf8_general_ci
encoding: utf8
login_unix_socket: /var/run/mysqld/mysqld.sock
when: create_database
- name: Create database user with mail database privileges for remote access
mysql_user:
name: "{{ dbmail_db_user }}"
host: "{{ lookup('dig', item) }}"
password: "{{ dbmail_db_password }}"
priv: "{{ dbmail_db_name }}.*:ALL"
state: present
login_unix_socket: /var/run/mysqld/mysqld.sock
loop: "{{ ansible_play_hosts }}"
- name: Create database user with mail database privileges for local access
mysql_user:
name: "{{ dbmail_db_user }}"
password: "{{ dbmail_db_password }}"
priv: "{{ dbmail_db_name }}.*:ALL"
state: present
login_unix_socket: /var/run/mysqld/mysqld.sock