一、概述
本文的任务是利用Ansible自动化部署远端的服务器,目标服务器可以是1到N台,主要部署任务为,Apache、Mariadb、FreeRadius、DaloRadius、PHP,其中Mairadb用于承载FreeRadius和DaloRadius的数据结构,Apache+PHP用于部署DaloRadius。Apache与PHP利用目标服务器的包管理器安装,FreeRadius和DaloRadius使用源码模式安装,一到四节主要是用于准备工作及自动化剧本资源的相关介绍,5.4节中为完整的自动化部署剧本,第五节中为自动化部署过程及部署结果。
整体部署剧本中包含多个部署任务,其中FreeRadius和DaloRadius使用源码模式安装,会涉及到MakeFile构建,源码编译,源码安装等过程,执行过程相对较慢,Ansible不会及时给出响应,请耐心等待,切勿人为终止。
二、环境介绍
2.1、本地终端
本地终端用于管理员操作所需,可以使用Ubuntu、Centos以及其他的Linux环境,其上需要安装Ansible自动化部署工具,安装方法如下:
- utuntu安装ansible
sudo apt-get install ansible
- Centos7 安装ansible
sudo yum install ansible
2.2、目标服务器
目标服务器使用Centos7,此文档中不涉及自动化部署目标服务器的SElinux和防火墙的配置,请根据实际情况自行调整,建议部署前先关闭SElinux和防火墙,以免对部署结果造成影响,部署完成后再根据实际情况调整相应的配置。
三、配置远端服务器ssh免密登录
3.1、本地终端中生成私/公密钥对
- 命令
ssh-keygen -N "" -b 4096 -t rsa
- 命令效果
3.2、同步公钥到目标服务器
- 命令
ssh-copy-id root@192.168.123.221
- 命令效果
四、部署脚本说明
4.1、本地终端中配置目标服务器组
本地终端中配置目标服务器组,通常需要将一台或多台拥有相同部署计划的服务器编辑成一个目标服务器组,这样执行一次部署剧本目标服务器组中的所有目标服务器将都按照剧本完成部署任务,Ansible管理主机的配置叫做Inventory(清单),配置文件的存放位置默认为/etc/ansible/hosts,也可以在执行剧本时使用-i参数来指定inventory,本文中使用默认的位置对目标服务器进行配置。
4.2、清单配置文件内容
- 命令
vi /etc/ansible/hosts
- 配置内容
;服务器组名称,请根据实际情况换成自己的信息
[testwebserver]
;服务器地址列表,请根据实际情况换成自己的信息
192.168.123.221
4.3、特别提示
本部分的调整全部时在本地终端中的调整,不涉及远程服务器
五、部署剧本的结构说明
5.1、结构截图
5.2、剧本包文件说明
- 目录files
用于存放部署任务涉及的源码包、服务文件、数据库脚本等资源文件
- 目录tmps
用于存放部署任务所涉及的模板文档
- 目录variables
用于存放部署剧本中引用的变量文件
- 文件./files/daloradius.tar.gz
该文件为DaloRadius的源码包,其版本为1.1-2,自动部署剧本将使用该包在目标服务器中实现源码安装
- 文件./files/freeradius-server-3.2.3.tar.gz
该文件为freeradius服务的源码包,其版本为3.2.3,自动化部署剧本将使用该包在目标服务器实现源码安装
- 文件./files/radiusd.service
该文件是已经编辑好的freeradius的服务管理文件,用于目标机器的systemd,实现服务管理
- 文件./files/radius.sql
该文件是结合了freeradius和daloradius两个软件所需的全部数据库表结构,用于构建freeradius和daloradius所需的数据库
- 文件./tmps/daloradius.j2
该文件是daloradius软件的配置文件模版,用于部署完成后的配置
- 文件./tmps/sql.j2
该文件是freeradius服务的配置文件,用于服务安装完成后的配置
- 文件./variables/commonent.yaml
该文件为剧本文件所需的所有变量清单
- 文件./webserver.yaml
该文件为自动化部署的剧本主文件
5.3、变量调整及说明
在变量清单文件中的一些变量,需要根据实际情况进行调整,比如数据库的相关参数,一下截取部分参数截图做说明,在自动化部署前一定记得调整
5.4、自动化剧本文件包
六、执行部署任务
6.1、解压下载好的自动化剧本文件包
tar -xvf ./play_radius_dalo.tar.gz
6.2、执行部署剧本
- 命令
ansible-playbook webserver.yaml -v
- 开始执行时的部分结果截图
- 执行结束后的部分截图
上图为部署完成的结果,由于我的机器调试过程中多次部署,存在1个失败的,正常失败为0。
七、验证部署结果
7.1、查看服务状态
ansible testwebserver -m shell -a "systemctl status httpd mariadb php-fpm" -u root