robertdebock.mysql

Ansible Role MySQL

This guide helps you install and set up MySQL on your computer.

GitHub GitLab Downloads Version
github gitlab downloads Version

Example Playbook

Below is an example playbook that shows how to use this role, taken from molecule/default/converge.yml. It is automatically tested during each push, pull request, and release.

---
- name: Converge
  hosts: all
  become: true
  gather_facts: true

  roles:
    - role: robertdebock.mysql
      mysql_port: 3307
      mysql_databases:
        - name: my_db
          encoding: utf8
          collation: utf8_bin
      mysql_users:
        - name: my_user
          password: my_pass
          priv: "my_db.*:ALL"
          update_password: on_create

Preparing the Machine

The machine needs preparation, which is done in CI by using molecule/default/prepare.yml:

---
- name: Prepare
  hosts: all
  become: true
  gather_facts: false

  roles:
    - role: robertdebock.bootstrap

For more details, you can check this full explanation and example on how to utilize these roles.

Role Variables

The default values for the role variables are set in defaults/main.yml:

---
# defaults file for mysql

# The address mysql should bind to.
mysql_bind_address: "127.0.0.1"

# The port to listen on.
mysql_port: 3306

# The password for the root user. Also stored in my.cnf
mysql_root_password: "s3Cur31t4."

# The buffer pool size.
mysql_innodb_buffer_pool_size: 1G

# The I/O capacity.
mysql_innodb_io_capacity: 4000

# You can set MySQL options here.
# Note that this is a list, so you need to redefine the entire list if you want to append options.
mysql_configuration_options:
  - option: bind-address
    section: mysqld
    value: "{{ mysql_bind_address }}"
  - option: port
    section: mysqld
    value: "{{ mysql_port }}"
  - option: socket
    section: mysqld
    value: "{{ mysql_socket }}"
  - section: mysqld
    option: innodb_buffer_pool_size
    value: "{{ mysql_innodb_buffer_pool_size }}"
  - section: mysqld
    option: innodb_io_capacity
    value: "{{ mysql_innodb_io_capacity }}"
  - section: mysqld
    option: log-bin-trust-function-creators
    value: "1"

Requirements

You need to install pip packages listed in requirements.txt.

State of Used Roles

The following roles are used to set up a system. You can choose a different way to prepare your system.

Requirement GitHub GitLab
robertdebock.bootstrap Build Status GitHub Build Status GitLab

Context

This role is part of multiple related roles. Check the documentation for these roles for more information.

Here is a simple diagram showing the related roles: dependencies

Compatibility

This role has been tested on these container images:

Container Tags
Debian bullseye
EL 9
Fedora all
Ubuntu noble, jammy

You need at least Ansible version 2.12. Tests have been done against:

  • The previous version.
  • The current version.
  • The development version.

If you come across any issues, please report them on GitHub.

License

This role is licensed under Apache-2.0.

Author Information

This role was created by robertdebock.

Please consider sponsoring me.

Informazioni sul progetto

Install and configure mysql on your system.

Installa
ansible-galaxy install robertdebock.mysql
Licenza
apache-2.0
Download
284.9k
Proprietario
I know my way around (Linux) infrastructure, have a passion for automation, Docker, Ansible, Molecule and ci/cd.