mjanser.mysql

Rola Ansible: mysql

Rola Ansible, która instaluje serwer MySQL lub MariaDB na systemach Fedora, Debian i Ubuntu.

Wersje MySQL będą instalowane z https://dev.mysql.com/downloads/repo/apt/ dla Debian i Ubuntu oraz z https://dev.mysql.com/downloads/repo/yum/ dla Fedory.

Dla MariaDB użyte będą repozytoria z https://downloads.mariadb.org/mariadb/repositories/.

Wymagania

Aby skonfigurować zaporę ogniową, musi działać usługa firewalld, a pakiet python-firewall musi być zainstalowany.

Zmienne roli

Dostępne zmienne są wymienione poniżej, wraz z wartościami domyślnymi:

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

mysql_root_password: "Moje $3cr3t hasło"

mysql_import_timezones: tak

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: nie
mysql_backup_destination: /var/lib/backup/database
mysql_backup_password: "Moje $3cr3t hasło"

mysql_firewall_zones: []

mysql_databases: []
mysql_users: []

Wykonawca i źródło

Ta rola Ansible obsługuje instalację MySQL i MariaDB z pakietów systemowych lub upstream.

Wykonawcę można ustawić w zmiennej mysql_vendor, która obsługuje wartości mysql i mariadb. Wykonawcą domyślnym jest mysql.

Zmienna mysql_origin definiuje, skąd pochodzą pakiety. Wartość domyślna distribution oznacza, że pakiety z dystrybucji będą instalowane. Przy tej konfiguracji wersja nie może być zmieniana.

Jeśli zmienna mysql_origin jest ustawiona na upstream, pakiet z MySQL/MariaDB zostanie zainstalowany. Używane będą repozytoria z https://downloads.mariadb.org/mariadb/repositories/. W tej konfiguracji wersję można określić w zmiennej mysql_upstream_version.

Użytkownik root

Hasło zdefiniowane w zmiennej mysql_root_password będzie ustawione jako hasło roota podczas instalacji. Należy je zmienić na bezpieczne.

Użytkownik root będzie mógł łączyć się tylko z lokalnego hosta. Wszystkie wpisy zdalnych hostów zostaną usunięte.

Dodatkowo usunięci zostaną anonimowi użytkownicy oraz baza testowa.

Import strefy czasowej

Dane strefy czasowej będą importowane domyślnie (zobacz https://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.html). Aby zmienić to zachowanie, należy ustawić zmienną mysql_import_timezones na nie.

Sieć

Domyślnie serwer nasłuchuje na wszystkich interfejsach IPv4 na hoście. Można to zmienić, ustawiając zmienną mysql_bind_address na inny adres niż 0.0.0.0.

Opcje

Istnieje kilka opcji, które można dostosować i mają wartości domyślne. Zobacz powyżej lub w defaults/tasks.yml oraz w dokumentacji, aby uzyskać więcej informacji.

SSL

Aby włączyć wsparcie SSL, należy skonfigurować zmienne mysql_ssl_ca, mysql_ssl_cert i mysql_ssl_key.

Niestandardowa konfiguracja

Dodatkowa konfiguracja może być zdefiniowana w zmiennej mysql_custom_config, na przykład:

mysql_custom_config: |
                     skip_name_resolve
                     skip-locking

Kopia zapasowa

Chociaż kopie zapasowe są domyślnie wyłączone, można włączyć automatyczny skrypt do codziennych kopii zapasowych, ustawiając mysql_backup na tak.

Skrypt po prostu tworzy kopię wszystkich baz danych w katalogu określonym w mysql_backup_destination jako plik SQL z datą. Dodatkowo łączy najnowszy plik kopii zapasowej dla każdej bazy danych do [database]_latest.sql.

Automatycznie zostanie utworzony użytkownik bazy danych dla kopii zapasowej z hasłem ustawionym w zmiennej mysql_backup_password. Upewnij się, że ustawisz tę zmienną na sensowne hasło, ponieważ jest domyślnie pusta, a pojawi się błąd, jeśli kopie zapasowe są włączone, a to hasło nie jest ustawione.

Zaporę ogniową

Zmienna mysql_firewall_zones może być użyta do zadeklarowania stref zapory, w których nginx powinien być dostępny. Oznacza to, że porty 3306/tcp zostaną otwarte.

Obecnie obsługiwany jest tylko firewalld, który jest domyślny w Fedory.

Bazy danych

Bazy danych do utworzenia można zdefiniować w zmiennej mysql_databases. Możliwe wartości dla każdego wpisu w mysql_databases to, wraz z wartościami domyślnymi:

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

Nazwa

W kluczu name można ustawić nazwę bazy danych.

Kolejność i kodowanie

Aby dostosować kolejność i kodowanie, można je ustawić w collaction i encoding.

Import

Istnieje możliwość ustawienia ścieżki do pliku SQL w import_file, który zostanie zaimportowany po utworzeniu bazy danych. Może to być użyte do importowania kopii zapasowych.

Jeśli baza danych już istnieje, nic nie zostanie zaimportowane.

Użytkownicy

Użytkownicy bazy danych mogą być zdefiniowani w zmiennej mysql_users. Możliwe wartości dla każdego wpisu w mysql_users to, wraz z wartościami domyślnymi:

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

Poświadczenia

Klucze name i password definiują poświadczenia użytkownika. Użytkownik może uzyskiwać dostęp do serwera tylko z hosta ustawionego w host. Wartość % pozwoli mu z każdego hosta.

Uprawnienia

Uprawnienia można zdefiniować w privileges jako ciąg znaków, zobacz dokumentację MySQL lub MariaDB, aby uzyskać więcej informacji. Jeśli append_privileges jest ustawione na tak, zdefiniowane uprawnienia zostaną dodane do już istniejących.

Zależności

Brak

Przykład playbooka

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

Licencja

MIT

O projekcie

Installs MySQL or MariaDB

Zainstaluj
ansible-galaxy install mjanser.mysql
Licencja
mit
Pobrania
1.2k
Właściciel