mjanser.mysql
Ansible角色: mysql
这是一个在Fedora、Debian和Ubuntu上安装MySQL或MariaDB服务器的Ansible角色。
对Debian和Ubuntu的MySQL上游版本将从https://dev.mysql.com/downloads/repo/apt/安装, 而对Fedora的安装将来自https://dev.mysql.com/downloads/repo/yum/。
对于上游的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: "我的 $3cr3t 密码"
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: "我的 $3cr3t 密码"
mysql_firewall_zones: []
mysql_databases: []
mysql_users: []
供应商和来源
这个Ansible角色支持从发行版或上游软件包安装MySQL和MariaDB。
可以通过变量mysql_vendor
设置供应商,该变量支持mysql
和mariadb
两个值。
默认供应商是mysql
。
变量mysql_origin
定义软件包的来源。
默认值distribution
表示将安装来自发行版的软件包。
在这种配置下,发行版定义了版本,无法更改。
如果将变量mysql_origin
设置为upstream
,则将安装来自MySQL/MariaDB的软件包。
这将通过https://downloads.mariadb.org/mariadb/repositories/的存储库完成。
在这种设置中,可以在变量mysql_upstream_version
中指定版本。
根用户
变量mysql_root_password
中定义的密码将在安装过程中设置为根密码。
建议将其更改为安全的密码。
根用户只能从本地主机连接。所有远程主机条目将被删除。
此外,匿名用户和测试数据库也将被删除。
时区导入
默认情况下将导入时区数据(见 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
中,可以设置数据库的名称。
排序规则和编码
要调整排序规则和编码,可以在collation
和encoding
中设置它们。
导入
可以在import_file
中设置SQL文件的路径,该文件将在创建数据库后导入。
这可用于导入备份。
如果数据库已经存在,则不会导入任何内容。
用户
数据库用户可以在变量mysql_users
中定义。
每个mysql_users
条目的可能值及其默认值如下:
name: ~
password: ~
host: localhost
privileges: "*.*:USAGE"
append_privileges: no
凭据
键name
和password
定义用户的凭据。
用户只能从设置在host
中的主机访问服务器。值为%
将允许任意主机访问。
权限
权限可以作为字符串在privileges
中定义,具体信息请参见MySQL或MariaDB手册。
如果将append_privileges
设置为yes
,则定义的权限将添加到已有的权限中。
依赖项
无
示例剧本
- 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