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

[经验分享] ansible + jenkins + 邮件

[复制链接]

尚未签到

发表于 2018-1-2 15:35:07 | 显示全部楼层 |阅读模式
基础知识介绍
  1 什么是ansible
  ansible 是一种自动化运维工具 , 基于Python研发 。 糅合了众多老牌运维工具的优点实现了批量操作系统配置、批量部署、批量运行命令等功能。 仅需在管理工作站上安装 ansible 程序配置被管控主机的 IP 信息,被管控的主机无客户端。 ansible 应用程序存在于 epel( 第三方社区 ) 源,依赖于很多 python 组件。
  2、优点和特性
  (1)、agentless:不需要在被管控主机上安装任何客户端;
  (2)、ssh by default:基于SSH工作;
  (3)、no server:无服务器端,使用时直接运行命令即可;
  (4)、modules in any languages:模块化涉及,基于模块工作,可使用任意语言开发自定义模块;
  (5)、yaml,not code:使用yaml语言定制剧本playbook,只需要告诉被监控端的期望状态,不需要关注过程;
  (6)   具有幂等性,不会重复执行相同的指令。例如不会重复安装软件  。
  3. 配置 文件:
  (1)ansible 应用程序的 主配置文件:/etc/ansible/ansible.cfg
  (2) Host定义管控主机 :/etc/ansible/hosts
  4.为何使用。
  1> 层级管理iplists.批量执行命令时,不用再花时间准备ip列表,以及进行ip处理。
  2> 比起手动编写脚本,不需要手动打印输出,及判断返回值。
  3 > 按分组做支付系统初始化,配置管理。
  5.安装方式
  配置fedora  epel 源后yum install -y ansible
  6.ansible 命令基本格式
  ansible  <host-pattern>   [-m module_name]  [-a args]
  <host-pattern>
  指明需要操作的主机,以模式形式表示或者直接给定 IP ,必须事先定义在/etc/ansible/hosts文件中; all 设置所有
[-m module_name]

  使用何种模块进行操作,所有的操作都需要通过模块来指定
[-a args]

  指明模块专用参数; args 一般为 key=value 格式
  如 ansible all -m shell -a "uptime"
  获取所有主机已运行时间。
详细配置过程
一 > 整合zodiac ansible
  安装ansible
  编写shell脚本从 借贷宝 zodiac 运维管理系统 api接口获取当前 appid 与ip对应关系。
  并转化为ansible inventory 主机组配置文件格式。
  脚本会从api获取到所有appid中 状态为"online"的 iplist。
  配置cron自动执行,使ansible inventory与 zodiac中appid信息一致。


  脚本执行后会生成 分组策略inventory文件(文件路径/etc/ansible/hosts)
  从 zodiac自动同步a.b.c.d 层级结构。额外再加一级idc为五级结构。调用父主机组可以把下属子主机组IP调出来。
  结构类似 jdb.paycenter.payapi.tomcat.xy  代表 支付中心- 支付网关-tomcat-晓月 所有机器
  备注:
  使用[]声明一个组名
  使用:children 关键字 声明下属的子组
  第一层 公司名称
[jdb]

  jdb.paycenter
  jdb.paycenter-beta (支付beta环境)
  .......
  第二层 公司名称-部门小组
[jdb.paycenter:children]

  jdb.paycenter.acmcore
  jdb.paycenter.actcore
  ........
  第三层 公司名称-部门小组-业务系统
[jdb.paycenter.precard:children]

  jdb.paycenter.precard.nginx
  jdb.paycenter.precard.tomcat
  第四层 公司名称-部门小组-业务系统-应用种类
  jdb.paycenter.precard.nginx:children]
  jdb.paycenter.precard.nginx.xy
  jdb.paycenter.precard.nginx.yz
  第五层 公司名称-部门小组-业务系统-应用种类-idc信息
[jdb.paycenter.precard.nginx.xy]

  100.95.0.55
  100.95.0.58
  .......
[jdb.paycenter.precard.nginx.yz]

  100.95.0.55
  100.95.0.58
  可以结合常用模块,批量执行系统操作
  模块名:ping 不解释
  如 ansible all -m ping  (ping模块不需要加-a 指定参数)
  解释:探测已配置在/etc/ansible/hosts里所有主机是否存活
  模块名:setup  采集主机信息
  如 ansible jdb.paycenter  -m setup -a 'filter=ansible_processor'
  解释:获取支付中心所有主机CPU核数。
  模块名 shell/cmd/raw   三个模块都可执行shell命令 (区别:cmd模块为基本命令执行模块,不支持变量,shell模块 为/bin/sh环境下执行。raw模块可使用管道"|")
  如 ansible jdb.paycenter.payorder.nginx -m shell  -a 'hostname'
  解释:获取所有支付中心-订单系统 nginx主机名。
  模块名 script  在每个远程主机执行本地脚本
  ansible jdb.paycenter.*.tomcat  -m script -a '/opt/test.sh'
  解释:在支付中心-所有tomcat机器 执行本地/opt/test.sh 的脚本。
  模块名 copy 文件拷贝到远程主机
  ansible jdb.paycenter.payorder.nginx[1-5].xy  -m copy -a 'src=/etc/resolv.conf dest=/etc/resolv.conf'
  解释:把本地/etc/resolv.conf 拷贝到 支付订单中心-nginx【1-5】晓月所有机器对应位置。
  ps ;主机组名支持正则匹配。
  ansible jdb.paycenter.*.*.xy   "free -g"
  在支付中心-所有idc为晓月机器 统计内存使用。
  ansible 100.93.1.8* -a "ntpdate xxip"
  批量同步100.93.1.80~89 的系统时间。
  按机器分组,编写playbook, 做状态统一。
  支付运维 部分play-book 解析
  1>  初始密码,公钥,目录权限 配置统一                                                                执行效果
      

  2> falcon监控客户端配置管理
  完成以下功能:
  1 未安装falcon-agent 主机自动安装falcon-agent,并启动。
  2 已安装falcon-agent,但未启动进程的主机,自动启动进程。
  3 rsync falcon插件目录到所有机器。
  4 发现主机存在多falcon-agent进程的异常状态,杀掉所有falcon-agent 进程并重启服务。
      

二> 配置jenkins,整合jenkins ansible。
  部署jenkins。以管理员登入后,进入插件管理,安装ansible_plugin插件。

  把每个运维日常周期性工作(如 falcon,elk客户端部署,密码,公钥,文件权限,配置统一,日志备份,切割,系统校时相关任务的执行与检测等)
  配置成单独jenkins project。指定已写好的ansible-playbook路径。
  并在“构建触发器“栏选择 Build periodically 配置计划任务。让每个ansible 剧本 自动运行

  3> 配置邮件通知
  配置
Editable Email Notification  日常运维任务 构建后,将结果邮件通知给运维支付组每个成员。
  日常运维 ansible-playbook 任务构建后效果

  如此便实现了一个 轻量级的支付系统配置管理平台。

运维网声明 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.yunweiku.com/thread-430851-1-1.html 上篇帖子: ansible批量部署tomcat 下篇帖子: ansible 自动ssh
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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