--- - name: Install MariaDB apt: name: - mariadb-client - mariadb-server - python-mysqldb state: present - name: Enable MariaDB service on boot (workaround for systemctl broken handling of SysV) command: rcconf -on mysql register: result changed_when: not result.stderr - name: Enable and start MariaDB service: name: mysql state: started - name: Set password for the root database user mysql_user: check_implicit_admin: true 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: 0400 - name: Check if root user authentication is based on use of unix_socket module (Stretch default) command: mysql --skip-column-names -B -e "select 1 from mysql.user where user='root' and plugin='unix_socket';" when: "ansible_distribution_release == 'stretch'" register: "root_using_unix_socket_authentication" changed_when: false - name: Disable use of unix socket login on Debian Stretch (temporary workaround) command: "mysql -B -e \"update mysql.user set plugin='' where user='root' and plugin='unix_socket'; flush privileges;\"" when: "ansible_distribution_release == 'stretch' and root_using_unix_socket_authentication.stdout" - name: Remove UTF-8 encoding configuration file from the old location on Debian Stretch file: path: "/etc/mysql/conf.d/utf8.cnf" state: absent when: "ansible_distribution_release == 'stretch'" register: mariadb_utf8_configuration_stretch - name: Set UTF-8 encoding as default for MariaDB (on Jessie) copy: src: "utf8.cnf" dest: "/etc/mysql/conf.d/utf8.cnf" owner: root group: root mode: 0644 when: "ansible_distribution_release == 'jessie'" register: mariadb_utf8_configuration_jessie - name: Set UTF-8 encoding as default for MariaDB (on Stretch) copy: src: "utf8.cnf" dest: "/etc/mysql/mariadb.conf.d/90-utf8.cnf" owner: root group: root mode: 0644 when: "ansible_distribution_release == 'stretch'" register: mariadb_utf8_configuration_stretch - name: Restart MariaDB in order to use UTF-8 as default character set service: name: mysql state: restarted when: mariadb_utf8_configuration_jessie.changed or mariadb_utf8_configuration_stretch.changed tags: # [ANSIBLE0016] Tasks that run when changed should likely be handlers # UTF-8 configuration must be applied immediatelly in order to ensure that # subsequent tasks that create databases will end-up with correct (UTF-8) # encoding. Otherwise they will be created using default latin1. - skip_ansible_lint - name: Explicitly run all handlers include: ../handlers/main.yml when: "run_handlers | default(False) | bool()" tags: - handlers