码迷,mamicode.com
首页 > 其他好文 > 详细

Centos7-Ansible-Nginx自动化部署

时间:2018-05-24 11:53:11      阅读:606      评论:0      收藏:0      [点我收藏+]

标签: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 root@192.168.152.159
技术分享图片

2)复制Ansible公钥到节点web2 ssh-copy-id -i root@192.168.152.160
技术分享图片

四、配置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自动化部署

标签:Ansible-部署nginx自动化

原文地址:http://blog.51cto.com/13043516/2119745

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!