From 3a15b07608484522a1e72f287c3378d13c54991b Mon Sep 17 00:00:00 2001 From: Sebastian Schwarz Date: Wed, 6 Aug 2014 11:47:59 +0200 Subject: [PATCH] Allow creation of databases and users Inspired by the Ansibles.mysql role. --- README.md | 17 +++++++++++++++++ defaults/main.yml | 4 ++++ tasks/main.yml | 17 +++++++++++++++++ 3 files changed, 38 insertions(+) diff --git a/README.md b/README.md index 1d9a651..392569f 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,14 @@ The home directory inside which Python MySQL settings will be stored, which Ansi The MySQL root user account password. + mysql_databases: [] + +The MySQL databases to create. A database has the values `name`, `encoding` (defaults to `utf8`) and `collation` (defaults to `utf8_general_ci`). The formats of these are the same as in the `mysql_db` module. + + mysql_users: [] + +The MySQL users and their privileges. A user has the values `name`, `host` (defaults to `localhost`), `password` and `priv` (defaults to `*.*:USAGE`). The formats of these are the same as in the `mysql_user` module. + mysql_packages: - mysql - mysql-server @@ -59,6 +67,15 @@ None. *Inside `vars/main.yml`*: mysql_root_password: super-secure-password + mysql_databases: + - name: example_db + encoding: latin1 + collation: latin1_general_ci + mysql_users: + - name: example_user + host: "%" + password: similarly-secure-password + priv: "example_db.*:ALL" ## License diff --git a/defaults/main.yml b/defaults/main.yml index 29c09b9..1db9880 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -42,3 +42,7 @@ mysql_innodb_lock_wait_timeout: 50 # mysqldump settings mysql_mysqldump_max_allowed_packet: "64M" + +# databases and users settings +mysql_databases: [] +mysql_users: [] diff --git a/tasks/main.yml b/tasks/main.yml index 8b9850a..c69147a 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -70,3 +70,20 @@ mysql_db: > name="test" state=absent + +- name: Ensure MySQL databases are present. + mysql_db: > + name="{{ item.name }}" + collation="{{ item.collation | default('utf8_general_ci') }}" + encoding="{{ item.encoding | default('utf8') }}" + state=present + with_items: mysql_databases + +- name: Ensure MySQL users are present. + mysql_user: > + name="{{ item.name }}" + host="{{ item.host | default('localhost') }}" + password="{{ item.password }}" + priv="{{ item.priv | default('*.*:USAGE') }}" + state=present + with_items: mysql_users