OK,上一个项目中用到了ansible,来个小结
不用不知道,一用吓一跳,这玩意儿真的是很强大,很好用!
ansible是什么?
它是一款运维自动化部署工具,通常用在集群环境中,基本上能够实现一键部署。举个栗子,现在有10个微服务运行在一台机器上面,等到上线了,需要部署100台去实现分布式架构,你不可能去一台机器一台机器的去部署、修改对应的配置文件吧。这样不得累死,而且其中某一台配置错了,都找不到错误在哪里。
在这种场景下,ansible诞生了,你只需要部署一台主控机Host(包含写好的应用,配置,脚本等等),然后以这个主控机为模板,批量拷贝到对应的100台机器中。是不是很完美
核心概念:
- hosts文件,100台机器对应IP,端口配置都写在这个文件里面,是运行的入口
- 剧本,执行哪个yml文件
- yml脚本,例如主任务文件main.yml
- template模板 ,板j2基础文件,例如xml配置文件对应j2文件
hosts主文件入口
它依赖于python语言,需要提前安装好python环境,在此基础上操作,
由于我的虚拟机环境用不了了,下面就直接上命令行操作,就不给大家演示运行环境了。
//所有主机执行app.yml 即lcpt分组ansible-playbook lcpt/app.yml
//指定主机执行app.ymlansible-playbook --limit=lcpt6 lcpt/app.yml
//nginx配置文件改动需要改动以下目录配置文件/home/deploy/ansible/lcpt/roles/nginx/templates/nginx.conf.j2
//替换所有服务nginx配置文件 nginx.yml的入口/home/deploy/ansible/lcpt/roles/nginx/tasks/main.yml ansible-playbook lcpt/nginx.yml
ansible shell模块
指定服务器启停服务ansible lcpt6 -m shell -a "bin/lc.sh stop trans"
ansible lcpt6 -m shell -a "bin/lc.sh start trans"
//指定主机启停nodeansible lcpt4 -m shell -a "chdir=LCPT/WEB_NODE/fms pm2 stop app.js"
ansible lcpt4 -m shell -a "chdir=LCPT/WEB_NODE/fms pm2 -i 4 start app.js"
执行剧本部分tagsansible-playbook app.yml --tags "app,cfg"
#run 多个tagsansible-playbook app.yml --tags app
# 只run 一个tag
跳过某个taskansible-playbook app.yml --skip-tags cfg
-------------------所有的yml和远程模块执行都需要在ansible目录下执行
常用到也就是ansible-playbook --limit 按分组执行部署命令,基本上一次脚本整理好之后,后面的批量部署就变得非常简单省事儿。