02-日常管理脚本-ansible 程序断电修复;
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了02-日常管理脚本-ansible 程序断电修复;相关的知识,希望对你有一定的参考价值。
1.起因:
(1).公司内网机房很(操蛋) 时不时机房意外断电,所有内网研发环境和devops 平台运行 VMware vCenter 平台上;;
(2).公司研发环境复杂: nginx Tomcat Zookeeper mysql Eureka Rocketmq Codis 以及各个模块的应用
(3).每一次断电人肉运维启动程序流程: 1.Vcenter--->虚拟机——>基础服务Mysql/codis/Zk/Eureka/Rocketmq/监控---->Docker/k8s-->各个模块应用
内网环境整体架构如下
2.优化方案思路如下;
1.程序和对应的基础运维服务程序以及完全记录在CMDB中,切对应有应用名称和使用IP地址对应关系;
2.cmdb 提供对应的应用IP Restfu接口;
3.通过脚本读取程序接口读取应用名称和对应ip地址,使用ansible 模块执行对应的ip地址上 部署的应用;
4.本实例中cmdb 接口开发大神使用了sql 语句接口调用即可返回对应的数据;
3.脚本内容如下; #!/usr/bin/env python import sys import json import requests import subprocess url = 'http://192.168.1.200:80/sql' data = { 'sql': 'select app.ip,instance.app_name from app,instance where app.instance_id = instance.id and app.ip like "192.168.54.%"'} Put_data = requests.post(url, json=data) Data_text = Put_data.text weatherJSON = json.loads(Data_text) with open('/tmp/Docker_Test_ip_txt','w') as f: ###落地磁盘保存### j = 0 for i in weatherJSON["data"]: j = j + 1 # APP_ip = i['ip'] +" "+ if j == 1 : ansible_host_name = "[Docker-Test]" + " " f.write(ansible_host_name) else: APP_ip = i['ip'] + " " f.write(APP_ip) APP_name=i['app_name'] + " " print "###", APP_name, APP_ip cmd = """ansible -i {}, all -m shell -a 'su - root -c "/chj/app/{}/bin/console restart"' -b """.format(APP_ip.strip(), APP_name.strip()) print cmd p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,universal_newlines=True) result = p.communicate() print result[0]
以上是关于02-日常管理脚本-ansible 程序断电修复;的主要内容,如果未能解决你的问题,请参考以下文章