mjanser.mysql

Rôle Ansible : mysql

Un rôle Ansible qui installe le serveur MySQL ou MariaDB sur Fedora, Debian et Ubuntu.

Les versions officielles de MySQL seront installées depuis https://dev.mysql.com/downloads/repo/apt/ pour Debian et Ubuntu, et depuis https://dev.mysql.com/downloads/repo/yum/ pour Fedora.

Pour MariaDB, les dépôts de https://downloads.mariadb.org/mariadb/repositories/ seront utilisés.

Exigences

Pour configurer le pare-feu, le service firewalld doit être en cours d'exécution et le paquet python-firewall doit être installé.

Variables du Rôle

Les variables disponibles sont listées ci-dessous, avec leurs valeurs par défaut :

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

mysql_root_password: "Mon mot de passe $3cr3t"

mysql_import_timezones: oui

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: non
mysql_backup_destination: /var/lib/backup/database
mysql_backup_password: "Mon mot de passe $3cr3t"

mysql_firewall_zones: []

mysql_databases: []
mysql_users: []

Fournisseur et origine

Ce rôle Ansible prend en charge l'installation de MySQL et MariaDB à partir de paquets de distribution ou officiels.

Le fournisseur peut être défini dans la variable mysql_vendor, qui accepte les valeurs mysql et mariadb. Le fournisseur par défaut est mysql.

La variable mysql_origin définit l'origine des paquets. La valeur par défaut distribution signifie que les paquets de la distribution seront installés. Avec cette configuration, la distribution définit la version et ne peut pas être modifiée.

Si la variable mysql_origin est définie sur upstream, le paquet de MySQL/MariaDB sera installé. Cela se fait en utilisant les dépôts de https://downloads.mariadb.org/mariadb/repositories/. Dans cette configuration, la version peut être spécifiée dans la variable mysql_upstream_version.

Utilisateur root

Le mot de passe défini dans la variable mysql_root_password sera utilisé comme mot de passe root lors de l'installation. Celui-ci doit être modifié pour un mot de passe sécurisé.

L'utilisateur root ne pourra se connecter que depuis l'hôte local. Toutes les entrées des hôtes distants seront supprimées.

De plus, les utilisateurs anonymes et la base de données de test seront supprimés.

Importation de fuseaux horaires

Les données de fuseau horaire seront importées par défaut (voir https://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.html). Pour modifier ce comportement, ajustez la variable mysql_import_timezones à non.

Réseau

Par défaut, le serveur écoute sur toutes les interfaces IPv4 de l'hôte. Cela peut être changé en définissant la variable mysql_bind_address à une autre adresse que 0.0.0.0.

Options

Il existe certaines options qui peuvent être ajustées et qui ont des valeurs par défaut. Consultez ci-dessus ou dans defaults/tasks.yml et la documentation pour plus d'informations.

SSL

Pour activer le support SSL, les variables mysql_ssl_ca, mysql_ssl_cert et mysql_ssl_key doivent être configurées.

Configuration personnalisée

Une configuration supplémentaire peut être définie dans la variable mysql_custom_config, par exemple :

mysql_custom_config: |
                     skip_name_resolve
                     skip-locking

Sauvegarde

Bien que les sauvegardes soient désactivées par défaut, un script de sauvegarde quotidien automatique peut être activé en définissant mysql_backup sur oui.

Il exporte simplement toutes les bases de données vers le répertoire défini dans mysql_backup_destination sous forme de fichier SQL avec un horodatage. De plus, il lie le dernier fichier de sauvegarde par base de données à [database]_latest.sql.

Un utilisateur de base de données pour la sauvegarde sera créé automatiquement avec le mot de passe défini dans la variable mysql_backup_password. Assurez-vous de définir cette variable sur un mot de passe sensé, car elle est vide par défaut et une erreur sera générée si les sauvegardes sont activées et que ce mot de passe n'est pas défini.

Pare-feu

La variable mysql_firewall_zones peut être utilisée pour déclarer les zones du pare-feu dans lesquelles nginx doit être accessible. Cela signifie que les ports 3306/tcp seront ouverts.

Actuellement, seul firewalld est pris en charge, ce qui est par défaut sur Fedora.

Bases de données

Les bases de données à créer peuvent être définies dans la variable mysql_databases. Les valeurs possibles pour chaque entrée dans mysql_databases sont, avec des valeurs par défaut :

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

Nom

Dans la clé name, vous pouvez définir le nom de la base de données.

Collation et encodage

Pour ajuster la collation et l'encodage, vous pouvez les définir dans collation et encoding.

Importation

Il est possible de définir un chemin vers un fichier SQL dans import_file qui sera importé après la création de la base de données. Cela peut être utilisé pour importer des sauvegardes.

Si la base de données existe déjà, rien ne sera importé.

Utilisateurs

Les utilisateurs de base de données peuvent être définis dans la variable mysql_users. Les valeurs possibles pour chaque entrée dans mysql_users sont, avec des valeurs par défaut :

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

Informations d'identification

Les clés name et password définissent les informations d'identification de l'utilisateur. L'utilisateur ne peut accéder au serveur que depuis l'hôte défini dans host. Une valeur de % permettra l'accès depuis n'importe quel hôte.

Privilèges

Les privilèges peuvent être définis dans privileges sous forme de chaîne, voir le manuel de MySQL ou MariaDB pour plus d'informations. Si append_privileges est défini sur oui, les privilèges définis seront ajoutés à ceux déjà existants.

Dépendances

Aucune

Exemple 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"

Licence

MIT

À propos du projet

Installs MySQL or MariaDB

Installer
ansible-galaxy install mjanser.mysql
Licence
mit
Téléchargements
1.2k
Propriétaire