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设置供应商,该变量支持mysqlmariadb两个值。 默认供应商是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_camysql_ssl_certmysql_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中,可以设置数据库的名称。

排序规则和编码

要调整排序规则和编码,可以在collationencoding中设置它们。

导入

可以在import_file中设置SQL文件的路径,该文件将在创建数据库后导入。 这可用于导入备份。

如果数据库已经存在,则不会导入任何内容。

用户

数据库用户可以在变量mysql_users中定义。 每个mysql_users条目的可能值及其默认值如下:

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

凭据

namepassword定义用户的凭据。 用户只能从设置在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

关于项目

Installs MySQL or MariaDB

安装
ansible-galaxy install mjanser.mysql
许可证
mit
下载
1.2k
拥有者