ansible-playbook实现MySQL的二进制部署
Posted JohnnyFang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ansible-playbook实现MySQL的二进制部署相关的知识,希望对你有一定的参考价值。
在第十周作业的《通过编译、二进制安装mysql5.7》一篇中,笔者演示了如何利用二进制来完成指定版本的MySQL安装,但此种方法仅适用于单台主机,如果是企业中,要安装MySQL的主机数量很多,则费时费力。借助于运维自动化软件ansible软件包中的ansible-plabook,可以定制自动化任务,编排剧本工具,相当于脚本,可从而实现MySQL等服务的批量部署。
本次实验,笔者准备了5台虚拟机,ip分别为10.0.0.152-156,其中ip为10.0.0.152的虚拟机作为ansible主控制端,取名为ansible;ip10.0.0.154-156的三台虚拟机是需要进行部署MySQL的被控制端,分别取名db1、db2和db3。
- 主控制端安装ansible
ansible的安装方法包括官网(下载选择界面:https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html)下载包安装,或者直接利用yum/apt来进行安装等,目前官网已更新到3.0版本,考虑到最新版本可能会有不稳定的现象,而直接在虚拟机中安装的ansible版本够用,笔者这边就直接在CentOS虚拟机中利用yum来安装。要注意的是,下载时走的是epel源,要保证epel可用。
- 基于key验证
ansible要求主控制端与被控制端直接能实现互联互通,因此要做好基于key验证。笔者在《总结ssh常用参数、用法》(链接:https://blog.51cto.com/u_15473594/5023550)一篇中提到了如何做好基于key验证,这里要做好基于key验证的主机较多,因此可以使用脚本(如下图)。
- 设置主机清单
打开/etc/ansible/hosts文件,添加主机清单,主机清单多为分组的形式,将使用目的不同的主机进行分类,同一台主机可以添加到不同的分组中。local分组中的ansible_connection=local指的是指定本地连接,无需ssh配置(如下图)。
执行 ansible all --list-hosts 命令可以查看主机清单中一共有哪些主机,也可以将all替换成具体的分组名称来查看,例如针对本次实验的三台虚拟机所规划的dbsrvs分组(如下图)。
设置完主机清单,建议先用ansible的ping模块来测试ansible主控制端与被控制端之间是否可通,如果返回结果是绿色的,并有pong的回应,即为可通(如下图)。
- 下载MySQL压缩包
MySQL二进制安装的压缩包可从官网(下载选择页面:https://downloads.mysql.com/archives/community/)下载,目前最新版为8.0.27,更新时间已超过半年,相对会比较稳定,那笔者就直接下载最新版本。
- 创建playbook剧本
playbook剧本是由一个或多个"play"组成的列表,其主要功能在于将预定义的一组主机装扮成事先通过ansible中的task定义好的角色。task实际是调用ansible的一个module,将多个play组织在一个playbook中,即可以让它们联合起来,按事先编排的机制执行预定义的动作。playbook文件是采用YAML语言编写的,根据此次实验的要求,笔者创建了install_mysql.yml文件,具体内容如下:
yaml文件中:
①“hosts”部分限定对象为dbsrvs分组,变量“remote_user”使用root避免执行时出现权限问题,“gather_facts”设为no,即不开启搜集功能,如果开启会影响执行速度;
②“vars”部分将MySQL压缩包分成版本和后缀两部分,方便后面创建软链接,同时“root_password”部分将MySQL数据的登录密*码设置为变量;
③“tasks”部分从上到下分别表示安装依赖包、创建mysql组、创建mysql用户、解压ansible主机压缩包到目标主机并修改文件权限、创建软链接、生成数据库文件存放路径、拷贝MySQL配置文件至目标主机、生成启动脚本文件并添加到启动项、生成PATH变量、开启MySQL服务、设置MySQL登录密*码。
由于规划中的my.cnf文件并不存在,我们需在ansible主机上手动创建一个(如下图)。
- 检查语法并运行
执行 ansible-playbook --syntax-check install_mysql.yml 命令可检查是否有语法错误,如果只是检查而不执行的话可以执行 ansible-playbook -C install_mysql.yml 命令,因为时间会较长,笔者就不演示了,在语法没错的情况下笔者就直接运行脚本(如下图)。
- 测试环节
如果是利用xshell等远程终端进行登录,利用ansible-playbook部署安装MySQL后,需退出并重新登录后再使用,因笔者在yaml文件中并未设置开机自启动,因此还需开启mysql服务后才能通过指定密*码进行登录(如下图)。
以上是关于ansible-playbook实现MySQL的二进制部署的主要内容,如果未能解决你的问题,请参考以下文章
ansible-playbook Windows Mysql Install
安装zabbix-server之ansible-playbook