Ansible自动化批量部署nginx服务器

搭建环境:

主机: Ansible Web1 Web2
系统: Centos7 64Bit
网卡: Vmnet0桥接
IP: Ansible-152.158 Web1-152.159 Web2-152.160
注:清空并关闭以上环境所有主机的防火墙和selinux

关闭防火墙 systemctl stop firewalld.service
禁止防火墙开机自启 systemctl disable firewalld.service

关闭selinux sed -i 's/SELINUX=enforcing /SELINUX=disabled/g'
/etc/sysconfig/selinux

重启 reboot
注:重启后如果可以互相ping通,那么就开始搭建ansible服务器

一、Ansible-server安装

安装方式:
1、从Ansible项目的GitHub源码库提取出来安装,运行Ansible不需root 权限,也不依赖于其他软件,没有后台进程运行,不需要数据库支撑。

2、使用yum安装,需要有合适的yum源,对于RHEL、CentOS的官方yum源中没有 Ansible安装包,这就需要先安装支持第三方的yum仓库组件,最常用的有EPEL、 Remi、RPMForge等。可国内速度较快的高质量yum源网易 163(http://mirrors.163.com)、阿里源(https://opsx.alibaba.com/mirror
注:这里实验使用的是默认的centos7自带的源,并使用yum直接安装

二、使用yum安装ansible

1、安装ansible yum –y install ansible

在centos上comfyUI部署_在centos上comfyUI部署


在centos上comfyUI部署_在centos上comfyUI部署_02

2、检查ansible版本: ansible –version

在centos上comfyUI部署_nginx_03

三、设置节点授权的ssh密钥

1、在Ansible服务端生成密钥 ssh-keygen

在centos上comfyUI部署_运维_04

2、使用ssh-copy-id命令来复制Ansible公钥到节点web1和web2

1)复制Ansible公钥到节点web1 ssh-copy-id -i root@192.168.152.159

在centos上comfyUI部署_数据库_05

2)复制Ansible公钥到节点web2 ssh-copy-id -i root@192.168.152.160

在centos上comfyUI部署_shell_06

四、配置Ansible定义文件

1、编辑ansible配置文件 vi /etc/ansible/hosts

在centos上comfyUI部署_nginx_07


注:将需要ansible自动化的节点IP添加到这里2、测试在ansible服务端运行命令(在互相能ping通的情况下)

ansible -m ping 'web-servers'

在centos上comfyUI部署_数据库_08

五、执行shell命令

1)查看ansible节点运行时间(uptime)

ansible -m command -a "uptime" 'web-servers'

在centos上comfyUI部署_在centos上comfyUI部署_09

2)查看节点内核版本(uname -r)

ansible -m command -a "uname -r" 'web-servers'

在centos上comfyUI部署_运维_10


注:以上操作部署已完成ansible服务搭建

六、批量部署nginx服务器

两种Ansible批量部署nginx服务器方式

方式一:yum安装nginx,使用的是epel-release源
方式二:使用nginx.tar压缩包解压安装nginx

1、在/root/目录下创建Ansible YAML文件 vi nginx.yaml

在centos上comfyUI部署_运维_11


注释:

第1行表示该文件是YAML文件,非必须

第2行定义该playbook针对的目标主机,all表示针对所有主机

第3行定义该playbook所有的tasks集合,比如下面我们定义的3个task

第4行定义一个task的名称,非必须,建议根据task实际任务命名

第5行定义一个状态的action,比如这里使用yum模块实现Nginx软件包的安装

第6行到第9行使用template模板去管理/etc/nginx/nginx.conf文件,owner group定义该文件的属主以及属组,使用validate参数指文件生成后使用nginx -t -c %s命令去做Nginx文件语法验证,notify是触发handler状态,如果同步后,文件 的MD5值有变化会触发ReStart Nginx Service这个handler

第10行到第12行是定义一个handler状态让Nginx服务重启,handler的名称是 ReStart Nginx Service

注:书写yaml文件时,注意左对齐,同级别应在同一列下,并且不能使用Tab键,可以使用空格(随便空格几个都行,但是同一级别必须对齐)

2、检测YAML文件

ansible-playbook nginx.yaml --syntax-check nginx.yaml

在centos上comfyUI部署_在centos上comfyUI部署_12

3、查看YAML文件任务列表 ansible-playbook nginx.yaml --list-task

在centos上comfyUI部署_在centos上comfyUI部署_13

4、查看针对哪些主机做操作 ansible-playbook nginx.yaml --list-hosts

在centos上comfyUI部署_数据库_14

5、给两个节点安装epel-release源

ansible web-servers -m shell -a 'yum -y install epel-release' -i /etc/ansible/hosts

在centos上comfyUI部署_在centos上comfyUI部署_15


在centos上comfyUI部署_在centos上comfyUI部署_16


在centos上comfyUI部署_数据库_17


在centos上comfyUI部署_运维_18

6、给两个节点安装nginx

ansible web-servers -m shell -a 'yum -y install nginx' -i /etc/ansible/hosts

在centos上comfyUI部署_shell_19


在centos上comfyUI部署_运维_20


在centos上comfyUI部署_nginx_21


在centos上comfyUI部署_nginx_22


在centos上comfyUI部署_数据库_23


在centos上comfyUI部署_nginx_24

7、编辑本地nginx.conf.j2文件(因为本地没有安装nginx所以没有这个文件需要从节点拷贝到当前/root/下再修改,并以这个修改过的模板来下发给节点)

在centos上comfyUI部署_数据库_25


注:根据实际情况要求修改(我这里使用的默认)8、确认信息是否正确

ansible-playbook -i /etc/ansible/hosts nginx.yaml -f 2

1)下图是nginx.conf.j2配置文件未修改,默认执行命令的状态

在centos上comfyUI部署_在centos上comfyUI部署_26


在centos上comfyUI部署_shell_27

2)这是修改过nginx.conf.j2配置文件执行命令的状态

在centos上comfyUI部署_数据库_28


在centos上comfyUI部署_数据库_29

9、这样我们就完成了 3台机器的Nginx安装部署,下面需要对主机的Nginx服务进行核查,并且确认生成后nginx.conf中的worker_processes参数的值是否正确,执行命令:

ansible -i /etc/ansible/hosts all -m shell -a 'netstat -utpln |grep 80' -f 2

在centos上comfyUI部署_运维_30


注:上图红色字体说明并没有自动重启nginx,原因是nginx.conf.j2这文件默认没有修改的情况不满足执行条件,所以如果想得到下图,随意修改点东西即可。

在centos上comfyUI部署_运维_31

10、验证:浏览器访问两个节点IP

Web1:http://192.168.152.159

在centos上comfyUI部署_nginx_32

Web2:http://192.168.152.160

在centos上comfyUI部署_nginx_33


注:nginx自动化部署完成!

转载于:https://blog.51cto.com/13043516/2119745