Centos7-Ansible-Nginx自动化部署
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Centos7-Ansible-Nginx自动化部署相关的知识,希望对你有一定的参考价值。
Ansible自动化批量部署nginx服务器
搭建环境:
主机 系统 网卡 IP
Ansible Centos7 64Bit Vmnet0桥接 192.168.152.158
Web1 Centos7 64Bit Vmnet0桥接 192.168.152.159
Web2 Centos7 64Bit Vmnet0桥接 192.168.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
2、检查ansible版本: ansible –version
三、设置节点授权的ssh密钥
1、在Ansible服务端生成密钥 ssh-keygen
2、使用ssh-copy-id命令来复制Ansible公钥到节点web1和web2
1)复制Ansible公钥到节点web1 ssh-copy-id -i [email protected]
2)复制Ansible公钥到节点web2 ssh-copy-id -i [email protected]
四、配置Ansible定义文件
1、编辑ansible配置文件 vi /etc/ansible/hosts
注:将需要ansible自动化的节点IP添加到这里
2、测试在ansible服务端运行命令(在互相能ping通的情况下)
ansible -m ping ‘web-servers‘
五、执行shell命令
1)查看ansible节点运行时间(uptime)
ansible -m command -a "uptime" ‘web-servers‘
2)查看节点内核版本(uname -r)
ansible -m command -a "uname -r" ‘web-servers‘
注:以上操作部署已完成ansible服务搭建
六、批量部署nginx服务器
两种Ansible批量部署nginx服务器方式
方式一:yum安装nginx,使用的是epel-release源
方式二:使用nginx.tar压缩包解压安装nginx
1、在/root/目录下创建Ansible YAML文件 vi nginx.yaml
注释:
第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
3、查看YAML文件任务列表 ansible-playbook nginx.yaml --list-task
4、查看针对哪些主机做操作 ansible-playbook nginx.yaml --list-hosts
5、给两个节点安装epel-release源
ansible web-servers -m shell -a ‘yum -y install epel-release‘ -i /etc/ansible/hosts
6、给两个节点安装nginx
ansible web-servers -m shell -a ‘yum -y install nginx‘ -i /etc/ansible/hosts
7、编辑本地nginx.conf.j2文件(因为本地没有安装nginx所以没有这个文件需要从节点拷贝到当前/root/下再修改,并以这个修改过的模板来下发给节点)
注:根据实际情况要求修改(我这里使用的默认)
8、确认信息是否正确
ansible-playbook -i /etc/ansible/hosts nginx.yaml -f 2
1)下图是nginx.conf.j2配置文件未修改,默认执行命令的状态
2)这是修改过nginx.conf.j2配置文件执行命令的状态
9、这样我们就完成了 3台机器的Nginx安装部署,下面需要对主机的Nginx服务进行核查,并且确认生成后nginx.conf中的worker_processes参数的值是否正确,执行命令:
ansible -i /etc/ansible/hosts all -m shell -a ‘netstat -utpln |grep 80‘ -f 2
注:上图红色字体说明并没有自动重启nginx,原因是nginx.conf.j2这文件默认没有修改的情况不满足执行条件,所以如果想得到下图,随意修改点东西即可。
10、验证:浏览器访问两个节点IP
Web1:http://192.168.152.159
Web2:http://192.168.152.160
注:nginx自动化部署完成!
以上是关于Centos7-Ansible-Nginx自动化部署的主要内容,如果未能解决你的问题,请参考以下文章