From f7fb7f380b14c7637839cbde9f950973ede3ac8c Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sun, 4 Oct 2015 14:03:43 +0200 Subject: [PATCH] Added role to initialize database --- ispmail.yml | 1 + roles/ispmail-database/files/schema.sql | 24 ++++++++++++++++++++++++ roles/ispmail-database/tasks/main.yml | 12 ++++++++++++ 3 files changed, 37 insertions(+) create mode 100644 roles/ispmail-database/files/schema.sql create mode 100644 roles/ispmail-database/tasks/main.yml diff --git a/ispmail.yml b/ispmail.yml index 8aea2a6..855dc9c 100644 --- a/ispmail.yml +++ b/ispmail.yml @@ -5,4 +5,5 @@ - ispmail-packages - dumpvars - ispmail-certificate + - ispmail-database diff --git a/roles/ispmail-database/files/schema.sql b/roles/ispmail-database/files/schema.sql new file mode 100644 index 0000000..8547cba --- /dev/null +++ b/roles/ispmail-database/files/schema.sql @@ -0,0 +1,24 @@ +CREATE TABLE IF NOT EXISTS `virtual_domains` ( + `id` int(11) NOT NULL auto_increment, + `name` varchar(50) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `virtual_users` ( + `id` int(11) NOT NULL auto_increment, + `domain_id` int(11) NOT NULL, + `password` varchar(32) NOT NULL, + `email` varchar(100) NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `email` (`email`), + FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; + +CREATE TABLE IF NOT EXISTS `virtual_aliases` ( + `id` int(11) NOT NULL auto_increment, + `domain_id` int(11) NOT NULL, + `source` varchar(100) NOT NULL, + `destination` varchar(100) NOT NULL, + PRIMARY KEY (`id`), + FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8; diff --git a/roles/ispmail-database/tasks/main.yml b/roles/ispmail-database/tasks/main.yml new file mode 100644 index 0000000..3698ee6 --- /dev/null +++ b/roles/ispmail-database/tasks/main.yml @@ -0,0 +1,12 @@ +--- +- name: Install required Python mysqldb module for Ansible to manage databases + apt: pkg=python-mysqldb state=installed +- name: create mailserver MySQL database + mysql_db: name=mailserver state=present +- name: copy MySQL database schema to server + copy: src=schema.sql dest=/tmp +- name: creating mailserver MySQL database + mysql_db: name=mailserver state=import target=/tmp/schema.sql +- name: creating MySQL user to read the mailserver database + mysql_user: name=mailuser password={{ispmail_mysql_mailuser_password}} priv=mailserver.*:SELECT state=present +