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

##主要过程##

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

##最终效果##
用户可多选应用组,设置维护时长,最终确认操作。

##具体实现##
1.一些安全选项,和丢弃策略:

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

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

4.设置布尔型参数Confirm,用于让用户确认操作。

5.选择构建环境,这里配置了颜色方案xterm

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插件的选项:

b. --private-key

这里面可选的key,都是在jenkins Credentials 中定义好的,我们在这里统一管理jenkins所有的key;至于,为何是/tmp/xxxx.key ,这是jenkins的安全机制;

c. -u root
ansible 的执行用户在这里设置,如果不设置,默认是用root执行。

d. -e period=60
这是我前面设置的文本参数Periods,在这里映射成为ansible的一个变量,ansible插件可以指定key:value,将前面的自定义变量映射过来。
最终,也就是使他能够接收用户构建时的所填的时间。

e. --extra-vars @tmp.json
这个参数的意思,是从json文件中导入值,作为ansible的变量参数。(因为我们有可能指定多个参数,这里方便统一格式。)
上面的变量映射,目前只支持 -e ,要想自定义一些选项,ansible 插件已经帮你想好了:

f. 以上,我们解决了ansible-playbook 整条命令的构成,但是,距离我们最终的目标还差2个东西:
“确认”操作怎么实现,tmp.json文件怎么组成? 而这两个操作必须要在ansible-playbook 执行之前就组织好。
这里,我们借助jenkins 的 shell工具:

脚本的意思很明了:接收Boolean 变量$Confirm的结果,如果是true,就开始接收Influence变量的结果,并组织成json格式,写入tmp.json
这样,构建过程就设置好了。
7.构建后操作。
因为我们每次构建的时候,tmp.json 都应该是新生成的,所以每次构建完,都要删除tmp.json。

###ansible-playbook###
下面是我们具体的playbook:
[email protected]:/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: https://www.zabbix.example.com
      login_user: sa_zabbix
      login_password: adsadas
      ###总结###
      这个任务的构建思路是:
      1.先编写ansible-playbook,在写的过程中,考虑哪些作为变量,从用户端去接收变量值。
      2.在jenkins中,把ansible的变量映射出来,并组织好格式,添加一些自己想要的功能,最终形成一个完整的构建。

本qq:570836653 欢迎一起交流

原文地址:https://blog.51cto.com/570836653/2375548

时间: 2024-10-11 21:52:58

ansible+jenkins实现zabbix维护模式添加的相关文章

zabbix api 设置维护模式

通过zabbix提供的api进行维护模式的设置 #!/usr/bin/env python # -*-coding:utf-8-*- import urllib import urllib2 import json import sys import platform import time def auth(uid, username, password, api_url): """ zabbix认证 :param uid: :param username: :param

zabbix主动模式与被动模式、添加监控主机、添加自定义模板

zabbix主动模式与被动模式 添加监控主机 添加自定义模板 1.将原来的模板下载下来,删除自己不需要的,导入时要更改名字. 2.创建一个链接的模板,取消链接后,在删除模板中不想要的选项. 处理图形中的乱码 原文地址:http://blog.51cto.com/13515599/2103004

zabbix监控模式、分布式、自动化

1.监控主机多,性能瓶颈 2.多机房,防火墙 zabbix监控模式 针对agent来说 - 被动模式 - 主动模式(主动汇报服务端) 1)当监控主机超过300台,建议使用主动模式 2)当队列中有大量延迟的item 监控项主动模式更改,如下图 监控主机修改主动模式 vim /etc/zabbix/zabbix_agentd.conf 屏蔽被动模式的Server 重启服务 systemctl restart zabbix-agent WEB页面添加192.168.137.12主机的监控项 1)创建主

通过CLI命令使ESXi主机进入、退出维护模式

1.进入维护模式: 方法一:# vim-cmd /hostsvc/maintenance_mode_enter 方法二:# esxcli system maintenanceMode set --enable yes 方法三:# vimsh -n -e /hostsvc/maintenance_mode_enter 2.退出维护模式:方法一:# vim-cmd /hostsvc/maintenance_mode_exit 方法二:# esxcli system maintenanceMode s

把浏览器的私有模式添加到VS中

题记:在用VS进行Web开发的时候,常常希望VS的调试不会对浏览器造成固定的影响,那么使用浏览器的私有模式来启动就很有必要. 前几天SCOTT HANSELMAN分享了一个开发Web应用程序的小技巧,就是如何把浏览器的私有模式添加到VS中. 就是在VS的调试下拉菜单中选择"Browse With-"可以添加自己的自定义配置. 对于Chrome就是,在设置参数的时候添加"-incognito",对于Firefox和IE都是添加参数"-private"

SM30维护视图添加按钮

遇到某需求,要求维护sm30的视图时,能加上排序按钮. [转自http://blog.csdn.net/tsj19881202/article/details/7517232] 1. se11       点击修改,进入对应的表,然后点击“表格维护生成器” 2.进入后,点击 环境-修改-用户界面 3 点控制信息,创建控制信息. 4. 此时对应的程序应当为你的表名.5. se80 去打开程序,发现跟正常程序一样有“gui状态”,和“gui标题” 6.点开gui状态会发现有很多状态,这时候应该用哪一

批量启用SCOM代理的维护模式

一.单台设置维护模式 $MachineName = "a.b.local" #获取所有SCOM组件的类的实力 Get-SCOMClass -Name "*Windows*" | Get-SCOMClassInstance #获取名称为$MachineName的SCOM组件类的实例 $Instance = Get-SCOMClassInstance -Name $MachineName #设置维护时间持续10分钟 $Time = ((Get-Date).AddMinu

ZABBIX配置自动添加端口监控,并触发重启服务

1.配置自动发现脚本 #!/bin/bash # ------------------------------------------------------------------------------- # Script_name: discovery_port.sh # Revision: 1.0 # Date: 2017/05/08 # Author: kbsonlong # Email: [email protected] # Website: www.along.party # -

WSFC 维护模式操作粒度控制

之前曾经在WSFC日常管理操作篇和大家介绍过WSFC的维护模式,简单来说,从WSFC 2012开始,通过维护模式可以帮我们完成暂停节点,自动排水,自动回复的半自动化维护 回顾一下WSFC的维护模式运作流程,此处以WSFC 2012开始为例,在WSFC 2012之前,群集的维护模式仅能暂停节点,但无法自动移动负载 1.手动放置节点为暂停模式 2.节点根据群集角色优先级,参考放置策略,依次排水处理群集负载至合适节点 3.负载都排水到该去的节点后,节点宣告为暂停,不接受任何负载的迁移 4.维护完成后参