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