2022-10-11 09:18:54 +02:00
|
|
|
---
|
|
|
|
- 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
|
2023-02-07 11:25:54 +01:00
|
|
|
when:
|
|
|
|
- create_database
|
|
|
|
- dbmail_db_host == 'localhost' or dbmail_db_host == '127.0.0.1'
|
|
|
|
|
|
|
|
- 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_user: "{{ dbmail_db_admin_user }}"
|
|
|
|
login_password: "{{ dbmail_db_admin_password }}"
|
|
|
|
login_host: "{{ dbmail_db_host }}"
|
|
|
|
login_port: "{{ dbmail_db_port }}"
|
|
|
|
when:
|
|
|
|
- create_database
|
|
|
|
- dbmail_db_host != 'localhost'
|
|
|
|
- dbmail_db_host != '127.0.0.1'
|
2022-10-11 09:18:54 +02:00
|
|
|
|
|
|
|
- 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 }}"
|
2023-02-07 11:25:54 +01:00
|
|
|
when:
|
|
|
|
- dbmail_db_host == 'localhost' or dbmail_db_host == '127.0.0.1'
|
|
|
|
|
|
|
|
- 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_user: "{{ dbmail_db_admin_user }}"
|
|
|
|
login_password: "{{ dbmail_db_admin_password }}"
|
|
|
|
login_host: "{{ dbmail_db_host }}"
|
|
|
|
login_port: "{{ dbmail_db_port }}"
|
|
|
|
loop: "{{ ansible_play_hosts }}"
|
|
|
|
when:
|
|
|
|
- dbmail_db_host != 'localhost'
|
|
|
|
- dbmail_db_host != '127.0.0.1'
|
2022-10-11 09:18:54 +02:00
|
|
|
|
|
|
|
- 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
|
2023-02-07 11:25:54 +01:00
|
|
|
when:
|
|
|
|
- dbmail_db_host == 'localhost' or dbmail_db_host == '127.0.0.1'
|
|
|
|
|
|
|
|
- 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_user: "{{ dbmail_db_admin_user }}"
|
|
|
|
login_password: "{{ dbmail_db_admin_password }}"
|
|
|
|
login_host: "{{ dbmail_db_host }}"
|
|
|
|
login_port: "{{ dbmail_db_port }}"
|
|
|
|
when:
|
|
|
|
- dbmail_db_host != 'localhost'
|
|
|
|
- dbmail_db_host != '127.0.0.1'
|