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
ansible-galaxy install mjanser.mysql