mysql
Ansible Роль: mysql
Ansible роль, которая устанавливает сервер MySQL или MariaDB на Fedora, Debian и Ubuntu.
Версии MySQL будут устанавливаться из https://dev.mysql.com/downloads/repo/apt/ для Debian и Ubuntu и из https://dev.mysql.com/downloads/repo/yum/ для Fedora.
Для MariaDB будут использоваться репозитории из https://downloads.mariadb.org/mariadb/repositories/.
Требования
Для настройки брандмауэра должна работать служба firewalld
, и необходимо установить пакет python-firewall
.
Переменные роли
Доступные переменные перечислены ниже, с умолчательными значениями:
mysql_vendor: mysql
mysql_origin: distribution
mysql_upstream_version: ~ # MariaDB: 10.2, MySQL: 5.7
mysql_root_password: "My $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: "My $3cr3t password"
mysql_firewall_zones: []
mysql_databases: []
mysql_users: []
Вендор и источник
Эта Ansible роль поддерживает установку MySQL и MariaDB из распределения или из upstream пакетов.
Вендор можно задать в переменной mysql_vendor
, поддерживающей значения mysql
и mariadb
.
По умолчанию используется вендор mysql
.
Переменная mysql_origin
определяет источник установки пакетов.
По умолчанию, значение distribution
означает, что будут установлены пакеты из распределения.
При этой конфигурации версия определяется распределением и не может быть изменена.
Если переменная mysql_origin
установлена в upstream
, будет установлен пакет из MySQL/MariaDB.
Это делается с использованием репозиториев из https://downloads.mariadb.org/mariadb/repositories/.
В этом случае версию можно указать в переменной mysql_upstream_version
.
Пользователь root
Пароль, указанный в переменной mysql_root_password
, будет установлен как пароль root-пользователя во время установки.
Его следует заменить на надежный пароль.
Пользователь root сможет подключаться только с локального хоста. Все записи удаленных хостов будут удалены.
Кроме того, будут удалены анонимные пользователи и тестовая база данных.
Импорт часовых поясов
Данные о часовых поясах будут импортированы по умолчанию (см. https://dev.mysql.com/doc/refman/5.7/en/mysql-tzinfo-to-sql.html).
Чтобы изменить это поведение, измените переменную mysql_import_timezones
на no
.
Сеть
По умолчанию сервер слушает на всех IPv4 интерфейсах хоста.
Это можно изменить, установив переменную mysql_bind_address
на другой адрес, а не на 0.0.0.0
.
Опции
Есть некоторые параметры, которые могут быть изменены и имеют умолчания. Смотрите выше или в defaults/tasks.yml и документации для получения дополнительной информации.
SSL
Чтобы включить поддержку SSL, необходимо настроить переменные mysql_ssl_ca
, mysql_ssl_cert
и mysql_ssl_key
.
Пользовательская конфигурация
Дополнительную конфигурацию можно задать в переменной mysql_custom_config
, например:
mysql_custom_config: |
skip_name_resolve
skip-locking
Резервное копирование
Хотя резервное копирование по умолчанию отключено, автоматический скрипт ежедневного резервного копирования можно включить, установив mysql_backup
в yes
.
Он просто делает дамп всех баз данных в папку, определенную в mysql_backup_destination
, как SQL файл с меткой времени.
Кроме того, он ссылается на последний файл резервной копии для каждой базы данных в [database]_latest.sql
.
Пользователь базы данных для резервного копирования будет создан автоматически с паролем, заданным в переменной mysql_backup_password
.
Обязательно задайте эту переменную на надежный пароль, так как по умолчанию она пустая, и возникнет ошибка, если резервное копирование включено, и этот пароль не установлен.
Брандмауэр
Переменная mysql_firewall_zones
может быть использована для объявления зон брандмауэра, в которых должен быть доступен nginx.
Это означает, что порты 3306/tcp
будут открыты.
В настоящее время поддерживается только firewalld
, что является стандартным для Fedora.
Базы данных
Базы данных для создания можно определить в переменной mysql_databases
.
Возможные значения для каждой записи в mysql_databases
следующие, вместе с умолчаниями:
name: ~
collation: utf8_general_ci
encoding: utf8
import_file: ~
Имя
В ключе name
можно установить имя базы данных.
Сортировка и кодировка
Чтобы настроить сортировку и кодировку, их можно задать в collaction
и encoding
.
Импорт
Есть возможность указать путь к SQL файлу в import_file
, который будет импортирован после создания базы данных.
Это может быть использовано для импорта резервных копий.
Если база данных уже существует, ничего не будет импортировано.
Пользователи
Пользователи базы данных могут быть определены в переменной mysql_users
.
Возможные значения для каждой записи в mysql_users
следующие, вместе с умолчаниями:
name: ~
password: ~
host: localhost
privileges: "*.*:USAGE"
append_privileges: no
Учетные данные
Ключи name
и password
определяют учетные данные пользователя.
Пользователь может получить доступ к серверу только с хоста, указанного в host
. Значение %
позволит подключение с любого хоста.
Привилегии
Привилегии могут быть определены в privileges
в виде строки, смотрите руководство MySQL или MariaDB для получения дополнительной информации.
Если append_privileges
установлено на yes
, определенные привилегии будут добавлены к уже существующим.
Зависимости
Нет
Пример 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"
Лицензия
MIT
ansible-galaxy install mjanser/ansible-role-mysql