mjanser.mysql

Ansible Role: mysql

Un rol de Ansible que instala el servidor MySQL o MariaDB en Fedora, Debian y Ubuntu.

Las versiones oficiales de MySQL se instalarán desde https://dev.mysql.com/downloads/repo/apt/ para Debian y Ubuntu, y desde https://dev.mysql.com/downloads/repo/yum/ para Fedora.

Para MariaDB, se utilizarán los repositorios de https://downloads.mariadb.org/mariadb/repositories/.

Requisitos

Para configurar el firewall, el servicio firewalld debe estar en funcionamiento y el paquete python-firewall debe estar instalado.

Variables del rol

Las variables disponibles se enumeran a continuación, junto con los valores predeterminados:

mysql_vendor: mysql
mysql_origin: distribution
mysql_upstream_version: ~ # MariaDB: 10.2, MySQL: 5.7

mysql_root_password: "Mi $3cr3t password"

mysql_import_timezones: yes

mysql_bind_address: 0.0.0.0

mysql_key_buffer_size: 256M
mysql_max_allowed_packet: 1M
mysql_table_open_cache: 256
mysql_sort_buffer_size: 1M
mysql_read_buffer_size: 1M
mysql_read_rnd_buffer_size: 4M
mysql_net_buffer_length: 1M
mysql_myisam_sort_buffer_size: 64M
mysql_thread_cache_size: 8
mysql_query_cache_size: 16M

mysql_max_connections: ~
mysql_thread_concurrency: ~

mysql_ssl_ca: ~
mysql_ssl_cert: ~
mysql_ssl_key: ~

mysql_custom_config: ~

mysql_backup: no
mysql_backup_destination: /var/lib/backup/database
mysql_backup_password: "Mi $3cr3t password"

mysql_firewall_zones: []

mysql_databases: []
mysql_users: []

Proveedor y origen

Este rol de Ansible admite la instalación de MySQL y MariaDB a partir de paquetes de distribución o de paquetes oficiales.

El proveedor se puede establecer en la variable mysql_vendor, que acepta los valores mysql y mariadb. El proveedor predeterminado es mysql.

La variable mysql_origin define de dónde provienen los paquetes. El valor predeterminado distribution significa que se instalarán los paquetes de la distribución. Con esta configuración, la distribución define la versión y no se puede cambiar.

Si la variable mysql_origin se establece en upstream, se instalará el paquete de MySQL/MariaDB. Esto se hace utilizando los repositorios de https://downloads.mariadb.org/mariadb/repositories/. En esta configuración, la versión se puede especificar en la variable mysql_upstream_version.

Usuario root

La contraseña definida en la variable mysql_root_password se establecerá como la contraseña de root durante la instalación. Esto debe cambiarse a una contraseña segura.

El usuario root solo podrá conectarse desde el host local. Todas las entradas de hosts remotos serán eliminadas.

Adicionalmente, se eliminarán los usuarios anónimos y la base de datos de prueba.

Importación de zonas horarias

Los datos de zonas horarias se importarán por defecto (ver https://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.html). Para cambiar este comportamiento, ajusta la variable mysql_import_timezones a no.

Redes

Por defecto, el servidor escucha en todas las interfaces IPv4 en el host. Esto se puede cambiar configurando la variable mysql_bind_address a otra dirección que no sea 0.0.0.0.

Opciones

Existen algunas opciones que se pueden ajustar y que tienen valores predeterminados. Consulta arriba o en defaults/tasks.yml y la documentación para más información.

SSL

Para habilitar el soporte SSL, las variables mysql_ssl_ca, mysql_ssl_cert y mysql_ssl_key deben configurarse.

Configuración personalizada

Se puede definir una configuración adicional en la variable mysql_custom_config, por ejemplo:

mysql_custom_config: |
                     skip_name_resolve
                     skip-locking

Respaldo

Mientras que las copias de seguridad están desactivadas por defecto, se puede habilitar un script de respaldo automático diario estableciendo mysql_backup en yes.

Este simplemente guarda todas las bases de datos en el directorio definido en mysql_backup_destination como un archivo SQL con un timestamp. Además, enlaza el archivo de respaldo más reciente por base de datos a [database]_latest.sql.

Un usuario de base de datos para el respaldo será creado automáticamente con la contraseña establecida en la variable mysql_backup_password. Asegúrate de configurar esta variable con una contraseña adecuada, ya que está vacía por defecto y se generará un error si se habilitan copias de seguridad y esta contraseña no está configurada.

Firewall

La variable mysql_firewall_zones se puede utilizar para declarar zonas del firewall en las que nginx debe ser accesible. Esto significa que los puertos 3306/tcp se abrirán.

Actualmente, solo se admite firewalld, que es el predeterminado en Fedora.

Bases de datos

Las bases de datos a crear se pueden definir en la variable mysql_databases. Los valores posibles para cada entrada en mysql_databases son, junto con los valores predeterminados:

name: ~
collation: utf8_general_ci
encoding: utf8
import_file: ~

Nombre

En la clave name puedes establecer el nombre de la base de datos.

Ordenación y codificación

Para ajustar la ordenación y la codificación, puedes configurarlas en collaction y encoding.

Importar

Existe la posibilidad de establecer una ruta a un archivo SQL en import_file que se importará después de crear la base de datos. Esto se puede utilizar para importar respaldos.

Si la base de datos ya existe, no se importará nada.

Usuarios

Los usuarios de bases de datos se pueden definir en la variable mysql_users. Los valores posibles para cada entrada en mysql_users son, junto con los valores predeterminados:

name: ~
password: ~
host: localhost
privileges: "*.*:USAGE"
append_privileges: no

Credenciales

Las claves name y password definen las credenciales del usuario. El usuario solo puede acceder al servidor desde el host configurado en host. Un valor de % permitirá el acceso desde cualquier host.

Privilegios

Los privilegios se pueden definir en privileges como una cadena; consulta el manual de MySQL o MariaDB para más información. Si append_privileges está configurado como yes, los privilegios definidos se agregarán a los ya existentes.

Dependencias

Ninguna

Ejemplo de Playbook

- hosts: all
  roles:
    - { role: mjanser.mysql }
  vars:
    mysql_root_password: secret
    mysql_databases:
      - name: my_db
    mysql_users:
      - name: my_user
        password: secret
        privileges: "my_db.*:ALL"

Licencia

MIT

Acerca del proyecto

Installs MySQL or MariaDB

Instalar
ansible-galaxy install mjanser.mysql
Licencia
mit
Descargas
1.2k
Propietario