博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible+jenkins实现zabbix维护模式添加
阅读量:7052 次
发布时间:2019-06-28

本文共 1956 字,大约阅读时间需要 6 分钟。

##主要过程##

1. zabbix 维护模式通过ansible的 zabbix_maintenance 模块来实现2. jenkins 调用ansible执行playbook

##最终效果##

用户可多选应用组,设置维护时长,最终确认操作。
ansible+jenkins实现zabbix维护模式添加

##具体实现##

1.一些安全选项,和丢弃策略:
ansible+jenkins实现zabbix维护模式添加

2.设置参数Influence,用来提供多选项,最终用户可选择业务范围,此处插件名称是:Extended Choice Parameter

ansible+jenkins实现zabbix维护模式添加

3.设置文本参数Periods,用来提供时长,文本参数的用意在于让用户可以自己填数值。

ansible+jenkins实现zabbix维护模式添加
4.设置布尔型参数Confirm,用于让用户确认操作。
ansible+jenkins实现zabbix维护模式添加
5.选择构建环境,这里配置了颜色方案xterm
ansible+jenkins实现zabbix维护模式添加
6.设置构建过程。
本次构建的最终目的,是为了执行一条ansible-playbook 的命令,该命令将Influence ,Periods 作为其参数,最终执行。
命令是这样的: /usr/local/bin/ansible-playbook /data/ansible/playbooks/zabbix_maintenance.yml -f 5 --private-key /tmp/ssh1823040893798812862.key -u root -e period=60 --extra-vars @tmp.json
所以, 我们来看看上述命令中的参数都怎么来的:
a. -f 5
这个参数来自ansible插件的选项:
ansible+jenkins实现zabbix维护模式添加
b. --private-key
ansible+jenkins实现zabbix维护模式添加
这里面可选的key,都是在jenkins Credentials 中定义好的,我们在这里统一管理jenkins所有的key;至于,为何是/tmp/xxxx.key ,这是jenkins的安全机制;
ansible+jenkins实现zabbix维护模式添加
c. -u root
ansible 的执行用户在这里设置,如果不设置,默认是用root执行。
ansible+jenkins实现zabbix维护模式添加
d. -e period=60
这是我前面设置的文本参数Periods,在这里映射成为ansible的一个变量,ansible插件可以指定key:value,将前面的自定义变量映射过来。
最终,也就是使他能够接收用户构建时的所填的时间。
ansible+jenkins实现zabbix维护模式添加
e. --extra-vars @tmp.json
这个参数的意思,是从json文件中导入值,作为ansible的变量参数。(因为我们有可能指定多个参数,这里方便统一格式。)
上面的变量映射,目前只支持 -e ,要想自定义一些选项,ansible 插件已经帮你想好了:
ansible+jenkins实现zabbix维护模式添加
f. 以上,我们解决了ansible-playbook 整条命令的构成,但是,距离我们最终的目标还差2个东西:
“确认”操作怎么实现,tmp.json文件怎么组成? 而这两个操作必须要在ansible-playbook 执行之前就组织好。
这里,我们借助jenkins 的 shell工具:
ansible+jenkins实现zabbix维护模式添加
脚本的意思很明了:接收Boolean 变量$Confirm的结果,如果是true,就开始接收Influence变量的结果,并组织成json格式,写入tmp.json
这样,构建过程就设置好了。
7.构建后操作。
因为我们每次构建的时候,tmp.json 都应该是新生成的,所以每次构建完,都要删除tmp.json。
ansible+jenkins实现zabbix维护模式添加

###ansible-playbook###
下面是我们具体的playbook:
root@nj-jenkins-make-st:/data/ansible/playbooks# vi zabbix_maintenance.yml

  • hosts:
    localhost
    tasks:
    • name: Create a named maintenance window for SCM
      zabbix_maintenance:
      name: routine_update
      host_groups: "{
      { zabbix_hosts_groups }}"
      state: present
      collect_data: false
      minutes: "{
      { period }}"
      validate_certs: no
      server_url:
      login_user: sa_zabbix
      login_password: adsadas
      ###总结###
      这个任务的构建思路是:
      1.先编写ansible-playbook,在写的过程中,考虑哪些作为变量,从用户端去接收变量值。
      2.在jenkins中,把ansible的变量映射出来,并组织好格式,添加一些自己想要的功能,最终形成一个完整的构建。

本qq:570836653 欢迎一起交流

转载于:https://blog.51cto.com/570836653/2375548

你可能感兴趣的文章
Eclipse的Spring库导入
查看>>
velocity 判断 变量 是否不是空或empty
查看>>
【leetcode】123. Best Time to Buy and Sell Stock III
查看>>
角色设计的特点
查看>>
sublime text格式化json快捷键
查看>>
获得数据库自动生成的主键
查看>>
磁盘阵列
查看>>
y轴数据变换利器——yaxis-transformer
查看>>
Hibernate缓存机制
查看>>
分享几个组合Git+Shell提升工作效率的小技巧
查看>>
从头开始复习css之动画
查看>>
sed常见用法,删除匹配行的上2行,下3行
查看>>
【BZOJ】1415 [Noi2005]聪聪和可可 期望DP+记忆化搜索
查看>>
android 7.1 调用相机崩溃解决办法
查看>>
等待时间的三种方式以及解释
查看>>
Arduino语音天气预报(一)
查看>>
转 廖雪峰 urllib
查看>>
直播源码有哪两种开发模式?
查看>>
判断两个字符串是否是变位词
查看>>
webservices 服务器未能识别 HTTP 头 SOAPAction 的值:.
查看>>