bbatsche.MySQL
Ansible MySQL 角色
这个角色将安装并配置 MySQL、MariaDB 或 Percona 服务器,并/或为这些服务器创建数据库和用户。
请注意,在任何给定时间只能安装一个服务器,并且此角色不支持在不同类型的服务器之间切换。
角色变量
db_admin
— 要创建的管理员用户名。默认值为 "vagrant"db_pass
— 要创建的管理员用户密码。默认值为 "vagrant"env_name
— 此服务器将用于 "开发"、"生产" 等。默认值为 "dev"install_mysql
— 安装 MySQL 服务器。默认值为否install_mariadb
— 安装 MariaDB 服务器。默认值为否install_percona
— 安装 Percona 服务器。默认值为否。new_db_name
— 要创建的数据库名称。默认值未定义(跳过)new_db_user
— 要创建的新用户用户名。默认值未定义(跳过)new_db_pass
— 要创建的新用户密码。默认值未定义(跳过)new_db_priv
— 授予新用户的权限。默认值是给予他们对服务器或数据库(如果定义)完全控制remove_root_user
— 在安装时删除根用户。默认值是删除它。mysql_deb
— 要添加到 APT 的 MySQL 仓库 URL。默认值为 "https://dev.mysql.com/get/mysql-apt-config_0.8.9-1_all.deb"mariadb_apt_key.trusty
— 用于在 Trusty Tahr 上安装 MariaDB 的 APT 密钥。默认值为 "0xcbcb082a1bb943db"mariadb_apt_key.xenial
— 用于在 Xenial Xerus 上安装 MariaDB 的 APT 密钥。默认值为 "0xF1656F24C74CD1D8"mariadb_version
— 要安装的 MariaDB 版本。默认值为 "10.2"mariadb_apt_mirror
— 下载 MariaDB 的镜像。默认值为 "http://nyc2.mirrors.digitalocean.com"percona_deb
— 要添加到 APT 的 Percona 服务器仓库的 URL。默认值为 "https://repo.percona.com/apt/percona-release_0.1-4.{{ ansible_distribution_release }}_all.deb
"percona_version
— 要安装的 Percona 服务器版本。默认值为 "5.7"mysql_socket
— MySQL 套接字的路径。默认值为 "/var/run/mysqld/mysqld.sock"mysql_enable_network
— 是否监听外部网络连接。默认值为否mysql_sql_mode
— 使用的 SQL 模式。默认值为 "ANSI,TRADITIONAL"mysql_max_connections
— 允许的最大连接数。默认值为 "300"mysql_wait_timeout
— 等待超时。默认值为 "300"
调优变量
MySQL 当然有许多设置可以调整其性能和资源使用。此角色支持设置或计算一些最相关的变量。
mysql_mem_percent
— MySQL 应使用的总内存百分比。这并不是上限或强制执行的,更像是用于计算其他变量的目标。默认值为 "40"innodb_buffer_pool_percent
— 用于 InnoDB 缓冲池的 MySQL 内存百分比。默认值为 "90"innodb_buffer_pool_size
— 用于 InnoDB 缓冲池的总内存量。默认值根据mysql_mem_percent
和innodb_buffer_pool_percent
计算innodb_buffer_pool_chunk_size
— InnoDB 缓冲池的块大小。默认值为 "128M"mysql_key_buffer_percent
— 用于键缓冲区的 MySQL 内存百分比。默认值为 "40"mysql_key_buffer_size
— 用于 MySQL 键缓冲区的总内存量。默认值根据mysql_mem_percent
和mysql_key_buffer_percent
计算mysql_max_heap_table_size
— 最大堆表大小。默认值根据总内存计算mysql_open_files_limit
— 打开的文件限制。默认值为每 MB 总内存 32 个mysql_tmp_table_size
— 临时表大小。默认值根据总内存计算
密码验证变量
此角色允许您定义服务器的密码验证要求。此配置在开发环境中被跳过。
mysql_password_policy
— MySQL 密码策略。默认值为 "MEDIUM"(在 MariaDB 中被忽略)mysql_password_check_username
— 检查用户的密码是否包含其用户名。默认值为 "OFF"(在 MariaDB 中被忽略)mysql_password_length
— 密码长度要求。默认值为 "5"mysql_password_mixed_case_count
— 所需的混合大小写字符数。默认值为 "0"mysql_password_number_count
— 所需的数字数量。默认值为 "0"mysql_password_special_char_count
— 所需的非字母数字字符数量。默认值为 "0"
其他调节变量
innodb_io_capacity
— InnoDB IO 容量。默认值为 "400"innodb_log_buffer_size
— InnoDB 日志缓冲区大小。默认值为 "16M"myisam_sort_buffer_size
— MyISAM 排序缓冲区大小。默认值为 "128M"mysql_bulk_insert_buffer_size
— 批量插入缓冲区大小。默认值为 "16M"mysql_max_allowed_packet
— 允许的最大数据包大小。默认值为 "16M"mysql_query_cache_type
— 是否启用 MySQL 查询缓存。默认值为 "ON"mysql_query_cache_size
— 查询缓存大小。默认值为 "32M"(如果启用查询缓存,否则为 "0")mysql_query_cache_limit
— 缓存的查询大小限制。默认值为 "1M"mysql_read_buffer_size
— 读取缓冲区大小。默认值为 "2M"mysql_read_rnd_buffer_size
— 随机读取缓冲区大小。默认值为 "2M"mysql_sort_buffer_size
— 排序缓冲区大小。默认值为 "2M"mysql_table_open_cache
— 表打开缓存。默认值为 "2000"
示例剧本
安装一个服务(MariaDB):
- hosts: servers
roles:
- role: bbatsche.MySQL
install_mariadb: yes
创建一个新用户(假设服务已经安装并运行):
- hosts: servers
roles:
- role: bbatsche.MySQL
new_db_user: my_new_user
new_db_pass: n0tV3ry$ecuRe
许可证
MIT
测试
此角色中包含一组规格,用于单独或整体测试每个任务。要运行这些测试,您首先需要安装 Vagrant 和 VirtualBox。规格文件是使用 Serverspec 编写的,因此您需要 Ruby 和 Bundler。
要运行完整的规格套件:
$ gem install bundler
$ bundle install
$ rake
规格套件将针对 Ubuntu Trusty Tahr (14.04)、Xenial Xerus (16.04) 和 Bionic Bever (18.04)。
要查看可用的 rake 任务(和规格):
$ rake -T
这些规格不是用于测试幂等性。它们旨在检查指定的任务是否执行其预期步骤。幂等性通过集成测试独立进行测试。