mjanser.mysql

Ansible Rolle: mysql

Eine Ansible-Rolle, die den MySQL- oder MariaDB-Server auf Fedora, Debian und Ubuntu installiert.

Die Upstream-Versionen von MySQL werden für Debian und Ubuntu von https://dev.mysql.com/downloads/repo/apt/ und für Fedora von https://dev.mysql.com/downloads/repo/yum/ installiert.

Für MariaDB werden die Repositories von https://downloads.mariadb.org/mariadb/repositories/ verwendet.

Anforderungen

Um die Firewall zu konfigurieren, muss der Dienst firewalld laufen und das Paket python-firewall installiert sein.

Rollenvariablen

Verfügbare Variablen sind unten aufgelistet, zusammen mit den Standardwerten:

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

mysql_root_password: "Mein $3cr3t Passwort"

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: "Mein $3cr3t Passwort"

mysql_firewall_zones: []

mysql_databases: []
mysql_users: []

Anbieter und Ursprung

Diese Ansible-Rolle unterstützt die Installation von MySQL und MariaDB aus den Distributionen oder von Upstream-Paketen.

Der Anbieter kann in der Variable mysql_vendor festgelegt werden, die die Werte mysql und mariadb unterstützt. Der Standardanbieter ist mysql.

Die Variable mysql_origin bestimmt, woher die Pakete stammen. Der Standardwert distribution bedeutet, dass die Pakete aus der Distribution installiert werden. Bei dieser Konfiguration bestimmt die Distribution die Version und kann nicht geändert werden.

Wenn die Variable mysql_origin auf upstream gesetzt wird, werden die Pakete von MySQL/MariaDB installiert. Dies geschieht über die Repositories von https://downloads.mariadb.org/mariadb/repositories/. In diesem Setup kann die Version in der Variablen mysql_upstream_version angegeben werden.

Root-Benutzer

Das in der Variablen mysql_root_password festgelegte Passwort wird während der Installation als Root-Passwort gesetzt. Dies sollte auf ein sicheres Passwort geändert werden.

Der Root-Benutzer kann nur von localhost aus eine Verbindung herstellen. Alle Einträge von entfernten Hosts werden entfernt.

Zusätzlich werden anonyme Benutzer und die Testdatenbank entfernt.

Zeitzonenimport

Die Zeitzonendaten werden standardmäßig importiert (siehe https://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.html). Um dieses Verhalten zu ändern, kann die Variable mysql_import_timezones auf no gesetzt werden.

Netzwerke

Standardmäßig hört der Server auf allen IPv4-Interfaces des Hosts. Dies kann geändert werden, indem die Variable mysql_bind_address auf eine andere Adresse als 0.0.0.0 gesetzt wird.

Optionen

Es gibt einige Optionen, die angepasst werden können und Standardwerte haben. Weitere Informationen finden Sie oben oder in defaults/tasks.yml und der Dokumentation.

SSL

Um SSL-Unterstützung zu aktivieren, müssen die Variablen mysql_ssl_ca, mysql_ssl_cert und mysql_ssl_key konfiguriert werden.

Benutzerdefinierte Konfiguration

Zusätzliche Konfigurationen können in der Variablen mysql_custom_config definiert werden, zum Beispiel:

mysql_custom_config: |
                     skip_name_resolve
                     skip-locking

Backup

Obwohl Backups standardmäßig deaktiviert sind, kann ein automatisches tägliches Backup-Skript aktiviert werden, indem mysql_backup auf yes gesetzt wird.

Es werden einfach alle Datenbanken in das Verzeichnis geschrieben, das in mysql_backup_destination als SQL-Datei mit einem Zeitstempel definiert ist. Zusätzlich wird die neueste Backup-Datei pro Datenbank mit [database]_latest.sql verlinkt.

Ein Datenbankbenutzer für das Backup wird automatisch mit dem in der Variablen mysql_backup_password festgelegten Passwort erstellt. Achten Sie darauf, diese Variable auf ein sicheres Passwort zu setzen, da sie standardmäßig leer ist und ein Fehler auftritt, wenn Backups aktiviert sind und dieses Passwort nicht gesetzt ist.

Firewall

Die Variable mysql_firewall_zones kann verwendet werden, um Firewall-Zonen zu deklarieren, in denen Nginx erreichbar sein soll. Das bedeutet, dass die Ports 3306/tcp geöffnet werden.

Derzeit wird nur firewalld unterstützt, das standardmäßig auf Fedora vorinstalliert ist.

Datenbanken

Zu erstellende Datenbanken können in der Variablen mysql_databases definiert werden. Mögliche Werte für jeden Eintrag in mysql_databases sind, zusammen mit Standardwerten:

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

Name

Im Schlüssel name können Sie den Namen der Datenbank festlegen.

Sortierung und Kodierung

Um die Sortierung und Kodierung anzupassen, können Sie diese in collaction und encoding setzen.

Import

Es besteht die Möglichkeit, einen Pfad zu einer SQL-Datei in import_file festzulegen, die nach der Erstellung der Datenbank importiert wird. Dies kann für den Import von Backups verwendet werden.

Wenn die Datenbank bereits existiert, wird nichts importiert.

Benutzer

Datenbankbenutzer können in der Variablen mysql_users definiert werden. Mögliche Werte für jeden Eintrag in mysql_users sind, zusammen mit Standardwerten:

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

Anmeldedaten

Die Schlüssel name und password definieren die Anmeldedaten des Benutzers. Der Benutzer kann nur vom Host aus, der in host festgelegt ist, auf den Server zugreifen. Ein Wert von % erlaubt es ihm, von jedem Host zuzugreifen.

Berechtigungen

Berechtigungen können in privileges als String definiert werden, siehe MySQL- oder MariaDB-Handbuch für weitere Informationen. Wenn append_privileges auf yes gesetzt ist, werden die definierten Berechtigungen zu den bereits vorhandenen hinzugefügt.

Abhängigkeiten

Keine

Beispiel-Playbook

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

Lizenz

MIT

Über das Projekt

Installs MySQL or MariaDB

Installieren
ansible-galaxy install mjanser.mysql
Lizenz
mit
Downloads
1.2k
Besitzer