From 5f12c582a8553472c6c3043f8336dc3ec6c89371 Mon Sep 17 00:00:00 2001 From: L3D Date: Sun, 3 Jan 2021 01:01:18 +0100 Subject: [PATCH] continue with sql stuff --- host_vars/mail01.l3d.space/vars.yml | 3 ++ .../mailserver_preperation/defaults/main.yml | 2 + roles/mailserver_preperation/files/schema.sql | 45 +++++++++++++++++++ roles/mailserver_preperation/tasks/main.yml | 4 ++ .../mailserver_preperation/tasks/mariadb.yml | 39 ++++++++++++++++ .../templates/mysqlconfig.sql.j2 | 4 ++ 6 files changed, 97 insertions(+) create mode 100644 roles/mailserver_preperation/files/schema.sql create mode 100644 roles/mailserver_preperation/tasks/mariadb.yml create mode 100644 roles/mailserver_preperation/templates/mysqlconfig.sql.j2 diff --git a/host_vars/mail01.l3d.space/vars.yml b/host_vars/mail01.l3d.space/vars.yml index b3ed6bd..493d0b4 100644 --- a/host_vars/mail01.l3d.space/vars.yml +++ b/host_vars/mail01.l3d.space/vars.yml @@ -42,3 +42,6 @@ firewall_allowed_tcp_ports: # mysql mysql_bind_address: "{{ _mysql_bind_address }}" mysql_root_password: "{{ _mysql_root_password }}" + +# mailserver +mailserver_domain: "{{ inventory_hostname }}" diff --git a/roles/mailserver_preperation/defaults/main.yml b/roles/mailserver_preperation/defaults/main.yml index 7bc1a64..fc1a054 100644 --- a/roles/mailserver_preperation/defaults/main.yml +++ b/roles/mailserver_preperation/defaults/main.yml @@ -3,3 +3,5 @@ set_additional_nameserver: true additional_v4nameserver: '46.182.19.48' additional_v6nameserver: '2a02:2970:1002::18' additional_dns_maildomains: "{{ ansible_fqdn }}" + +mailserver_domain: "{{ ansible_fqdn }}" diff --git a/roles/mailserver_preperation/files/schema.sql b/roles/mailserver_preperation/files/schema.sql new file mode 100644 index 0000000..58a0e93 --- /dev/null +++ b/roles/mailserver_preperation/files/schema.sql @@ -0,0 +1,45 @@ +CREATE DATABASE IF NOT EXISTS vmail CHARACTER SET 'utf8'; + +USE vmail; + +CREATE TABLE `domains` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `domain` varchar(255) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY (`domain`) +); + +CREATE TABLE `accounts` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `username` varchar(64) NOT NULL, + `domain` varchar(255) NOT NULL, + `password` varchar(255) NOT NULL, + `quota` int unsigned DEFAULT '0', + `enabled` boolean DEFAULT '0', + `sendonly` boolean DEFAULT '0', + PRIMARY KEY (id), + UNIQUE KEY (`username`, `domain`), + FOREIGN KEY (`domain`) REFERENCES `domains` (`domain`) +); + +CREATE TABLE `aliases` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `source_username` varchar(64) NOT NULL, + `source_domain` varchar(255) NOT NULL, + `destination_username` varchar(64) NOT NULL, + `destination_domain` varchar(255) NOT NULL, + `enabled` boolean DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY (`source_username`, `source_domain`, `destination_username`, `destination_domain`), + FOREIGN KEY (`source_domain`) REFERENCES `domains` (`domain`) +); + +CREATE TABLE `tlspolicies` ( + `id` int unsigned NOT NULL AUTO_INCREMENT, + `domain` varchar(255) NOT NULL, + `policy` enum('none', 'may', 'encrypt', 'dane', 'dane-only', 'fingerprint', 'verify', 'secure') NOT NULL, + `params` varchar(255), + PRIMARY KEY (`id`), + UNIQUE KEY (`domain`) +); + diff --git a/roles/mailserver_preperation/tasks/main.yml b/roles/mailserver_preperation/tasks/main.yml index 8971402..74f09d5 100644 --- a/roles/mailserver_preperation/tasks/main.yml +++ b/roles/mailserver_preperation/tasks/main.yml @@ -27,3 +27,7 @@ mode: 0644 owner: root group: root + +- name: configure mariadb + include_tasks: mariadb.yml + diff --git a/roles/mailserver_preperation/tasks/mariadb.yml b/roles/mailserver_preperation/tasks/mariadb.yml new file mode 100644 index 0000000..2439086 --- /dev/null +++ b/roles/mailserver_preperation/tasks/mariadb.yml @@ -0,0 +1,39 @@ +--- +- name: create database schema store dir + become: true + file: + path: /root/.mariadb_schema + state: directory + mode: '0755' + owner: root + group: root + +- name: Copy database schema + become: true + copy: + src: files/schema.sql + dest: /root/.mariadb_schema/schema.sql + register: mysqlschema + +- name: Copy mail config + become: true + template: + src: templates/mysqlconfig.sql.j2 + dest: /root/.mariadb_schema/config.sql + register: mysqlconfig + +- name: Import database schema + become: true + mssql_db: + name: vmail + state: import + target: '/root/.mariadb_schema/schema.sql' + when: mysqlschema.changed + +- name: Import database schema + become: true + mssql_db: + name: vmail + state: import + target: '/root/.mariadb_schema/config.sql' + when: mysqlconfig.changed diff --git a/roles/mailserver_preperation/templates/mysqlconfig.sql.j2 b/roles/mailserver_preperation/templates/mysqlconfig.sql.j2 new file mode 100644 index 0000000..bd99468 --- /dev/null +++ b/roles/mailserver_preperation/templates/mysqlconfig.sql.j2 @@ -0,0 +1,4 @@ +use vmail; +insert into domains (domain) values ('{{ mailserver_domain }}'); +insert into accounts (username, domain, password, quota, enabled, sendonly) values ('{{ mail_user }}', '{{ domain }}', '{{ mail_user_pass_hash }}', 2048, true, false); +insert into aliases (source_username, source_domain, destination_username, destination_domain, enabled) values ('alias', '{{ domain }}', '{{ mail_user }}', '{{ domain }}', true);