78 lines
2.5 KiB
YAML
78 lines
2.5 KiB
YAML
---
|
|
- name: Initialize fact create_database
|
|
set_fact:
|
|
create_database: true
|
|
|
|
- name: Check for existing database
|
|
shell: mysql -Bqe 'show databases'
|
|
register: databases
|
|
|
|
- name: Check for existing tables in database
|
|
shell: "mysql {{ mail_db_name }} -Bqe 'show tables'"
|
|
register: tables
|
|
when: "mail_db_name in databases.stdout"
|
|
|
|
- name: Update fact create_database
|
|
set_fact:
|
|
create_database: false
|
|
when:
|
|
- "mail_db_name in databases.stdout"
|
|
- "'transport' in tables.stdout"
|
|
|
|
- name: Copy database dump file
|
|
copy:
|
|
src: files/mysql_mail_db.sql
|
|
dest: /tmp
|
|
when: create_database
|
|
|
|
- name: Create a new database with name 'mail' from structure file
|
|
mysql_db:
|
|
name: "{{ mail_db_name }}"
|
|
state: import
|
|
target: /tmp/mysql_mail_db.sql
|
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
|
when: create_database
|
|
|
|
- name: Create database user with name '{{ mail_db_user}}' with mail database privileges
|
|
mysql_user:
|
|
name: "{{ mail_db_user}}"
|
|
password: "{{ mail_db_password }}"
|
|
priv: "{{ mail_db_name }}.*:ALL"
|
|
state: present
|
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
|
|
|
- name: Insert forwarding in database
|
|
community.mysql.mysql_query:
|
|
login_db: "{{ mail_db_name }}"
|
|
query: "INSERT IGNORE INTO forwardings (source, destination, porpouse) VALUES ('{{ item['source'] }}', '{{ item['destination'] }}', '{{ item['porpouse'] }}')"
|
|
single_transaction: yes
|
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
|
ignore_errors: true
|
|
loop: "{{ mail_forwardings }}"
|
|
|
|
- name: Insert domains in database
|
|
community.mysql.mysql_query:
|
|
login_db: "{{ mail_db_name }}"
|
|
query: "INSERT IGNORE INTO domains (domain) VALUES ('{{ item }}')"
|
|
single_transaction: yes
|
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
|
ignore_errors: true
|
|
loop: "{{ mail_domains }}"
|
|
|
|
- name: Insert users in database
|
|
community.mysql.mysql_query:
|
|
login_db: "{{ mail_db_name }}"
|
|
query: "INSERT IGNORE INTO users (email, password, fullname, quota) VALUES ('{{ item['email'] }}', '{{ item['password'] }}', '{{ item['fullname'] }}', '{{ item['quota'] }}')"
|
|
single_transaction: yes
|
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
|
ignore_errors: true
|
|
loop: "{{ mail_users }}"
|
|
|
|
- name: Insert transports in database
|
|
community.mysql.mysql_query:
|
|
login_db: "{{ mail_db_name }}"
|
|
query: "INSERT IGNORE INTO transport (domain, transport) VALUES ('{{ item['domain'] }}', '{{ item['transport'] }}')"
|
|
single_transaction: yes
|
|
login_unix_socket: /var/run/mysqld/mysqld.sock
|
|
ignore_errors: true
|
|
loop: "{{ mail_transports }}"
|