设为首页 收藏本站
查看: 1655|回复: 0

[经验分享] Centos7-Ansible-Nginx自动化部署

[复制链接]

尚未签到

发表于 2018-11-11 07:03:11 | 显示全部楼层 |阅读模式
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
DSC0000.jpg

DSC0001.jpg

  2、检查ansible版本:   ansible –version
DSC0002.jpg

三、设置节点授权的ssh密钥
  1、在Ansible服务端生成密钥     ssh-keygen
DSC0003.jpg

  2、使用ssh-copy-id命令来复制Ansible公钥到节点web1和web2
  1)复制Ansible公钥到节点web1    ssh-copy-id  -i  root@192.168.152.159
DSC0004.jpg

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

四、配置Ansible定义文件
  1、编辑ansible配置文件   vi /etc/ansible/hosts
DSC0006.jpg

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

五、执行shell命令
  1)查看ansible节点运行时间(uptime)
  ansible -m command -a "uptime"  'web-servers'
DSC0008.jpg

  2)查看节点内核版本(uname -r)
  ansible -m command -a "uname -r"  'web-servers'
DSC0009.jpg

  注:以上操作部署已完成ansible服务搭建
六、批量部署nginx服务器
  两种Ansible批量部署nginx服务器方式
  方式一:yum安装nginx,使用的是epel-release源
  方式二:使用nginx.tar压缩包解压安装nginx
  1、在/root/目录下创建Ansible YAML文件    vi nginx.yaml
DSC00010.jpg

  注释:
  第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
DSC00011.jpg

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

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

  5、给两个节点安装epel-release源
  ansible web-servers -m shell -a 'yum -y install epel-release' -i /etc/ansible/hosts
DSC00014.jpg

DSC00015.jpg

DSC00016.jpg

DSC00017.jpg

  6、给两个节点安装nginx
  ansible web-servers -m shell -a 'yum -y install nginx' -i /etc/ansible/hosts
DSC00018.jpg

DSC00019.jpg

DSC00020.jpg

DSC00021.jpg

DSC00022.jpg

DSC00023.jpg

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

  注:根据实际情况要求修改(我这里使用的默认)
  8、确认信息是否正确
  ansible-playbook -i /etc/ansible/hosts nginx.yaml -f 2
  1)下图是nginx.conf.j2配置文件未修改,默认执行命令的状态
DSC00025.jpg

DSC00026.jpg

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

DSC00028.jpg

  9、这样我们就完成了 3台机器的Nginx安装部署,下面需要对主机的Nginx服务进行核查,并且确认生成后nginx.conf中的worker_processes参数的值是否正确,执行命令:
  ansible -i /etc/ansible/hosts all -m shell -a 'netstat -utpln |grep 80' -f 2
DSC00029.jpg

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

  10、验证:浏览器访问两个节点IP
  Web1:http://192.168.152.159
DSC00031.jpg

  Web2:http://192.168.152.160
DSC00032.jpg

  注:nginx自动化部署完成!


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-633423-1-1.html 上篇帖子: Consul+Registrator+Consul-template实现动态修改nginx配置文件 下篇帖子: nginx+php-fpm性能参数优化原则
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表