bertvv.mariadb
Ansible角色 mariadb
这是一个用于管理RedHat系列发行版中MariaDB的Ansible角色。该角色的主要职责包括:
- 从MariaDB官方仓库安装MariaDB软件包
- 移除不安全的默认设置:
- 设置数据库根用户密码(注意:设置后,此角色不能更改数据库根密码)
- 删除匿名用户
- 删除测试数据库
- 创建用户和数据库
- 管理配置文件
server.cnf
和custom.cnf
- 上传SSL证书并配置服务器使用它们
请参阅更改日志以获取每个版本的显著变化。
您是否在使用/喜欢此角色?请考虑为它点个星。如果您在Ansible Galaxy上给这个角色评分,并发现其不足之处,请考虑提出问题或提交PR,以便我们进行改进。谢谢!
要求
没有特定要求
角色变量
下面的变量均不是必需的。当用户未定义时,将使用默认值。
基本配置
变量 | 默认值 | 备注 |
---|---|---|
mariadb_bind_address |
'127.0.0.1' | 设置该值为监听的网络接口的IP地址,或设置为'0.0.0.0'以监听所有接口。 |
mariadb_configure_swappiness |
true | 当设置为true ,此角色将设置"swappiness"值(见 mariadb_swappiness )。 |
mariadb_custom_cnf |
{} | 自定义配置的字典。 |
mariadb_databases |
[] | 指定要添加的数据库的字典列表。详细信息见下文。 |
mariadb_mirror |
yum.mariadb.org | .rpm包的下载镜像(1) |
mariadb_port |
3306 | 监听客户请求的端口号 |
mariadb_root_password |
'' | MariaDB根用户密码(2) |
mariadb_server_cnf |
{} | 服务器配置的字典。 |
mariadb_service |
mariadb | 服务名称(例如在CentOS 5.5中应为'mysql') |
mariadb_swappiness |
'0' | "Swappiness"值(字符串)。系统默认值为60。值为0表示尽量避免进程交换。 |
mariadb_users |
[] | 指定要添加的用户的字典列表。详细信息见下文。 |
mariadb_version |
'10.5' | 要安装的MariaDB版本。默认为当前稳定版本。 |
mariadb_ssl_ca_crt |
null | 证书颁发机构根证书的路径 |
mariadb_ssl_server_crt |
null | 服务器SSL证书的路径 |
mariadb_ssl_server_key |
null | 服务器SSL证书密钥的路径 |
备注
(1) 从官方仓库安装MariaDB可能非常慢(一些用户报告超过10分钟)。变量 mariadb_mirror
允许您指定一个靠近您地理位置的自定义下载镜像,可以加快安装过程。例如:
# 对于RHEL/Fedora
mariadb_mirror: 'mariadb.mirror.nucleus.be/yum'
# 对于Debian
mariadb_mirror: 'mirror.mva-n.net/mariadb/repo'
(2) 强烈建议设置数据库根用户密码! 保留密码为空是严重的安全风险。如果该变量未设置,角色将发出警告。
服务器配置
您可以通过提供键值对的字典在变量 mariadb_server_cnf
中指定 /etc/my.cnf.d/server.cnf
(在RHEL/Fedora中,在Debian中为 /etc/mysql/conf.d/server.cnf
)中的配置,特别是在 [mariadb]
部分。有关可能的设置,请参阅MariaDB服务器系统变量文档。
对于没有 = value
的设置,请将值留空。所有值都应作为字符串给出,因此数值应加引号。
在以下示例中,slow-query-log
的值被留空:
mariadb_server_cnf:
slow-query-log:
slow-query-log-file: 'mariadb-slow.log'
long-query-time: '5.0'
这将生成以下 server.cnf
:
[mariadb]
slow-query-log
slow-query-log-file = mariadb-slow.log
long-query-time = 5.0
自定义配置
除了 [mariadb]
部分之外的其他部分的设置,可以使用 mariadb_custom_cnf
设置。这些设置将写入 /etc/mysql/my.cnf.d/custom.cnf
(在RHEL/Fedora中,在Debian中为 /etc/mysql/conf.d/custom.cnf
)。
像 mariadb_server_cnf
一样,变量 mariadb_custom_cnf
应该是一个字典。键是部分名称,值是带有单个设置的键值映射的字典。
以下示例启用一般查询日志:
mariadb_custom_cnf:
mysqld:
general-log:
general-log-file: queries.log
log-output: file
生成的配置文件将如下所示:
[mysqld]
general-log-file=queries.log
general-log
log-output=file
添加数据库
数据库是通过包含字段 name:
(必需)和 init_script:
(可选)的字典来定义的。初始化脚本是一个SQL文件,在创建数据库时执行以初始化表并填充数据。
mariadb_databases:
- name: appdb1
- name: appdb2
init_script: files/init_appdb2.sql
添加用户
用户是通过包含字段 name:
、password:
、priv:
,以及可选的 host:
和 append_privs
的字典来定义的。密码为明文,priv:
指定该用户的权限,如Ansible文档中所述。
示例:
mariadb_users:
- name: john
password: letmein
priv: '*.*:ALL,GRANT'
- name: jack
password: sekrit
priv: 'jacksdb.*:ALL'
append_privs: 'yes'
host: '192.168.56.%'
依赖
无依赖项。
示例剧本
测试
可以使用Ansible Molecule测试此角色。Molecule配置将:
- 运行Yamllint和Ansible Lint
- 创建一个名为
db
的Docker容器 - 运行语法检查
- 使用test playbook应用角色
- 使用BATS运行验收测试
此过程将为每个支持的Linux发行版重复进行。
本地Docker测试环境
如果您想设置本地测试环境,可以使用基于Vagrant+VirtualBox的可重复设置:https://github.com/bertvv/ansible-testenv。手动安装必要工具的步骤:
- 您的机器上应该安装Docker和BATS(假定运行Linux)。测试开始时不应有Docker容器运行。
- 按照Molecule的建议,创建一个python虚拟环境
- 安装软件工具
python3 -m pip install molecule docker netaddr yamllint ansible-lint
- 导航到角色目录的根目录,并运行
molecule test
Molecule会在测试后自动删除容器。如果您想自己查看容器,可以先运行 molecule converge
然后再运行 molecule login --host HOSTNAME
。
Docker容器基于Jeff Geerling为Ansible测试创建的映像(查找名为 geerlingguy/docker-DISTRO-ansible
的映像)。您可以使用他的任何映像,但只有在meta/main.yml中提到的发行版才受支持。
默认配置将启动一个Centos 7容器(目前主要支持的平台)。通过设置 MOLECULE_DISTRO
变量,可以选择其他发行版,例如:
MOLECULE_DISTRO=fedora32 molecule test
或
MOLECULE_DISTRO=fedora32 molecule converge
您可以在两台服务器上运行验收测试,使用 molecule verify
或手动执行:
SUT_IP=172.17.0.2 bats molecule/common/mariadb.bats
您需要初始化变量 SUT_IP
,即待测试系统的IP地址。 db
容器应具有IP地址172.17.0.2。
本地Vagrant测试环境
或者,您也可以使用完整的虚拟机而不是Docker容器来运行Molecule测试。运行测试的系统上需要安装Vagrant、VirtualBox、Ansible、Molecule和BATS。
molecule test -s vagrant
这将为受支持的平台创建VirtualBox虚拟机,基于Bento项目的基础箱,应用测试剧本并运行验收测试。
许可证
2条款BSD
贡献者
ansible-galaxy install bertvv.mariadb