From 09625826d96f824606451da7c44628c8a41f45f4 2015-08-16 21:25:25 From: Branko Majic Date: 2015-08-16 21:25:25 Subject: [PATCH] MAR-15: Added implementation for the database server role. Performs very simpled deployment and set-up of MariaDB database server. --- diff --git a/docs/rolereference.rst b/docs/rolereference.rst index 5f36c34ce430a3dacf1ac52fc6719ced38726e72..bab0b80d49ea295b1442c6c84d9f4bcd6ff161f8 100644 --- a/docs/rolereference.rst +++ b/docs/rolereference.rst @@ -1180,3 +1180,37 @@ running a bare Django project): wsgi_application: django_example_com.wsgi:application https_tls_key: "{{ inventory_dir }}/tls/wsgi.example.com_https.key" https_tls_certificate: "{{ inventory_dir }}/tls/wsgi.example.com_https.pem" + + +Database Server +--------------- + +The ``database_server`` role can be used for setting-up a MariaDB database +server on destination machine. + +The role implements the following: + +* Installs MariaDB server and client. +* Configures MariaDB server and client to use *UTF-8* encoding by default. +* Sets password for the database root user. +* Deploys MariaDB client configuration in location ``/root/.my.cnf`` that + contains username and password for the root database user. + + +Parameters +~~~~~~~~~~ + +**db_root_password** (string, mandatory) + Password for the *root* database user. + + +Examples +~~~~~~~~ + +Here is an example configuration for setting-up the database server: + +.. code-block:: yaml + + --- + + db_root_password: root diff --git a/roles/database_server/files/utf8.cnf b/roles/database_server/files/utf8.cnf new file mode 100644 index 0000000000000000000000000000000000000000..41699997f9c3973909c3edcffcf9c1c5c1364f7e --- /dev/null +++ b/roles/database_server/files/utf8.cnf @@ -0,0 +1,8 @@ +[client] +default-character-set = utf8 + +[mysqld] +character-set-server = utf8 +collation-server = utf8_general_ci +character_set_server = utf8 +collation_server = utf8_general_ci diff --git a/roles/database_server/handlers/main.yml b/roles/database_server/handlers/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..2f2066d91bcab98a7842f0f8440142b4b6255a79 --- /dev/null +++ b/roles/database_server/handlers/main.yml @@ -0,0 +1,4 @@ +--- + +- name: Restart MariaDB + service: name=mysql state=restarted \ No newline at end of file diff --git a/roles/database_server/tasks/main.yml b/roles/database_server/tasks/main.yml new file mode 100644 index 0000000000000000000000000000000000000000..6df8b1c0fdf23eb5eecaf5d86f20e5a8bc136044 --- /dev/null +++ b/roles/database_server/tasks/main.yml @@ -0,0 +1,23 @@ +--- + +- name: Install MariaDB + apt: name="{{ item }}" state=installed + with_items: + - mariadb-client + - mariadb-server + - python-mysqldb + +- name: Enable and start MariaDB + service: name=mysql enabled=yes state=started + +- name: Set password for the root database user + mysql_user: check_implicit_admin=yes name=root password="{{ db_root_password }}" + +- name: Deploy username and password for the root database user + template: src="root_my.cnf.j2" dest="/root/.my.cnf" + owner=root group=root mode=400 + +- name: Set UTF-8 encoding as default for MariaDB + copy: src="utf8.cnf" dest="/etc/mysql/conf.d/utf8.cnf" + owner=root group=root mode=644 + notify: Restart MariaDB diff --git a/roles/database_server/templates/root_my.cnf.j2 b/roles/database_server/templates/root_my.cnf.j2 new file mode 100644 index 0000000000000000000000000000000000000000..56edaaa7e0705e47f2061e82a5ad6e2eac60f9d3 --- /dev/null +++ b/roles/database_server/templates/root_my.cnf.j2 @@ -0,0 +1,3 @@ +[client] +user=root +password={{ db_root_password }} diff --git a/testsite/group_vars/web.yml b/testsite/group_vars/web.yml index 4570c87e4d4c4569d824c08c5be82f3e1e8455cd..47ed8e845c8bd6fa186fc23ebae06b72123d9401 100644 --- a/testsite/group_vars/web.yml +++ b/testsite/group_vars/web.yml @@ -22,4 +22,6 @@ https_tls_key: "{{ inventory_dir }}/tls/web.example.com_https.key" https_tls_certificate: "{{ inventory_dir }}/tls/web.example.com_https.pem" web_default_title: "Welcome to Example Inc." -web_default_message: "You are attempting to access the web server using a wrong name or an IP address. Please check your URL." \ No newline at end of file +web_default_message: "You are attempting to access the web server using a wrong name or an IP address. Please check your URL." + +db_root_password: "root" \ No newline at end of file diff --git a/testsite/playbooks/web.yml b/testsite/playbooks/web.yml index 97fa68b01166bbb17fe4a8601599a577a5dc96c5..81707e5422051e95fee8953ea49e93baac4c1883 100644 --- a/testsite/playbooks/web.yml +++ b/testsite/playbooks/web.yml @@ -7,6 +7,7 @@ - common - ldap_client - mail_forwarder + - database_server - web_server - phpinfo - wsgihello