From e3e7e46652b4179fdf0ffac791068febe62b3762 Mon Sep 17 00:00:00 2001 From: Kevin Veen-Birkenbach Date: Fri, 29 Dec 2023 22:50:42 +0100 Subject: [PATCH] Added draft for mariadb docker role --- roles/docker-mariadb/README.md | 27 ++++++++++++++++++++++++++ roles/docker-mariadb/handlers/main.yml | 21 ++++++++++++++++++++ roles/docker-mariadb/tasks/main.yml | 23 ++++++++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 roles/docker-mariadb/README.md create mode 100644 roles/docker-mariadb/handlers/main.yml create mode 100644 roles/docker-mariadb/tasks/main.yml diff --git a/roles/docker-mariadb/README.md b/roles/docker-mariadb/README.md new file mode 100644 index 00000000..8926a33b --- /dev/null +++ b/roles/docker-mariadb/README.md @@ -0,0 +1,27 @@ +# MariaDB Docker Ansible Role + +## Overview +This Ansible role facilitates the deployment of a MariaDB server using Docker. It is designed to ensure ease of installation and configuration, with the flexibility to adapt to different environments. + +## Features +- **Dockerized MariaDB**: Leverages Docker for MariaDB deployment, ensuring consistency across different environments. +- **Customizable Settings**: Allows customization of the MariaDB instance through various Ansible variables. +- **Network Configuration**: Includes setup of a dedicated Docker network for MariaDB. +- **Idempotent Design**: Ensures that repeat runs of the playbook do not result in unwanted changes. +- **Security Focused**: Implements best practices for securing the MariaDB root password. + +## Prerequisites +Before using this role, ensure you have the following: +- Ansible installed on the control machine. +- Docker installed on the target host(s). +- Access to the target host(s) via SSH. + +## Configuration +Configure the role by setting the required variables. These can be set in the playbook or in a separate variable file: +- `central_mariadb_root_password`: The root password for the MariaDB server. +- `database_databasename`: The name of the initial database to create. +- `database_username`: The username for the database user. +- `database_password`: The password for the database user. + +## Contributing +Contributions to this project are welcome. Please submit issues and pull requests with your suggestions. \ No newline at end of file diff --git a/roles/docker-mariadb/handlers/main.yml b/roles/docker-mariadb/handlers/main.yml new file mode 100644 index 00000000..e2b48f3f --- /dev/null +++ b/roles/docker-mariadb/handlers/main.yml @@ -0,0 +1,21 @@ +- name: create database + mysql_db: + name: "{{database_databasename}}" + state: present + login_user: root + login_password: "{{central_mariadb_root_password}}" + login_host: 127.0.0.1 + login_port: 3306 + listen: create database + +- name: create database user + mysql_user: + name: "{{database_username}}" + password: "{{database_password}}" + priv: '{{database_databasename}}.*:ALL' + state: present + login_user: root + login_password: "{{central_mariadb_root_password}}" + login_host: 127.0.0.1 + login_port: 3306 + listen: create database \ No newline at end of file diff --git a/roles/docker-mariadb/tasks/main.yml b/roles/docker-mariadb/tasks/main.yml new file mode 100644 index 00000000..ed0c6941 --- /dev/null +++ b/roles/docker-mariadb/tasks/main.yml @@ -0,0 +1,23 @@ +- name: Create Docker network for MariaDB + docker_network: + name: mariadb_network + state: present + when: run_once_backup_docker_to_local is not defined + +- name: install MariaDB + docker_container: + name: mariadb + image: mariadb:latest + detach: yes + env: + MARIADB_ROOT_PASSWORD: "{{central_mariadb_root_password}}" + networks: + - name: mariadb_network + published_ports: + - "127.0.0.1:3306:3306" + when: run_once_backup_docker_to_local is not defined + +- name: run the docker_mariadb tasks once + set_fact: + run_once_backup_docker_to_local: true + when: run_once_backup_docker_to_local is not defined \ No newline at end of file