Python 结合Ansible 把管理资产信息自动插入到CMDB中
2018-04-19 21:02
716 查看
资产管理对于任何公司来说都是件非常重要的事情,大家不用cmdb都有点不好意思出来见人了,上了CMDB之后基础就是资产这块,为了不苦逼似的一个个往里边录入,于是用python 结合Ansible 写了个自动收集资产信息,然后拿出自己需要关注的字段,自动insert 到cmdb 数据库里边去。
我们的cmdb 是开源改的,前端自定义好之后,后端的数据库需要自己创建个表,创建表语句如下:
CREATE TABLE
ansible_host(
idint(11) NOT NULL AUTO_INCREMENT,
hostnamevarchar(200) COLLATE utf8_bin DEFAULT NULL,
manufacturervarchar(200) COLLATE utf8_bin DEFAULT NULL,
osvarchar(200) COLLATE utf8_bin DEFAULT NULL,
cpu_modelvarchar(200) COLLATE utf8_bin DEFAULT NULL,
cpu_countvarchar(10) COLLATE utf8_bin DEFAULT NULL,
cpu_corevarchar(255) COLLATE utf8_bin DEFAULT NULL,
memory_totallyvarchar(255) COLLATE utf8_bin DEFAULT NULL,
swap_totallyvarchar(255) COLLATE utf8_bin DEFAULT NULL,
diskvarchar(200) COLLATE utf8_bin DEFAULT NULL,
ipvarchar(255) COLLATE utf8_bin DEFAULT NULL,
mac_addressvarchar(255) COLLATE utf8_bin DEFAULT NULL,
snvarchar(20) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (
id)
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
python 代码:
#gobal_fun 辅助模块,时间和数据定义在这里边,正式程序直接import
#!/usr/bin/env python
import datetime
import time
import sys
import MySQLdb as mysql
d1=datetime.datetime.now()
#input=open(sys.argv[1],'r')
d2=(d1-datetime.timedelta(days=1)).strftime('%Y-%m-%d')
d3=(d1-datetime.timedelta(days=1)).strftime('%d/%b/%Y')
day = time.strftime("%Y")
#outpu=open(d2+'__hourpv.csv','a+')
#outip=open('ip'+d2+'.csv','a+')
dk=time.strftime("%d/%b/%Y",time.localtime())+':00'
da=time.strftime("%d/%b/%Y",time.localtime())
conn= mysql.connect(user="root", passwd="vivame",db="falcon", charset="utf8")
cur = conn.cursor()
主程序
#!/usr/bin/env python
coding=utf-8
author :wosun
gro=raw_input("pls input ansible group:")import ansible.runner as arun
import gobal_fun
def get_info():
ass_list=[]
runner = arun.Runner(
module_name='setup',
module_args='',
pattern='%s'%gro,
forks=10
)
results=runner.run()
INFO=results['contacted']
for host,val in INFO.items():
for i in val['ansible_facts']["ansibledevices"]:
if i[0:2] not in ("sr"):
dis=str(i+''+val['ansible_facts']['ansible_devices'][i]['size'])
ass=host,str(val['ansible_facts']["ansible_product_name"]),str(val['ansible_facts']["ansibledistribution"])+""+st)
ass_list.append(ass)
#for i in ass_list:
print i
Msql="INSERT INTOansible_host(
hostname,
manufacturer,
os,
cpu_model,
cpu_count,
cpu_core,
memory_totally,`swa"
try:
gobal_fun.cur.executemany(Msql,ass_list)
gobal_fun.conn.commit()
gobal_fun.cur.close()
gobal_fun.conn.close()
print "success insert "
except Exceptioin,e:
conn.rollback()
print e
if name == "main":
get_info()
相关文章推荐
- 资产管理 cmdb之ansible 获取服务器硬件、软件等信息
- 用Python快速构建CMDB自动IT资产管理平台视频课程(共13课时)_在线培训教程_51CTO学院
- 通过Python使用saltstack收集服务器资产信息自动入库
- 通过Python使用saltstack收集服务器资产信息自动入库
- 通过Python使用saltstack收集服务器资产信息自动入库
- Python实现Tab自动补全和历史命令管理的方法
- python结合API实现即时天气信息
- python调用阿里接口获取ECS资产信息
- python调用阿里云接口获取SLB资产信息
- Python爬取信息管理系统计算学分绩点
- 基于jsp+servlet图书管理系统之后台用户信息插入操作
- 外卖信息管理系统(python+pymysql+wxpython+Mysql)
- Python web项目(3) 自动管理界面
- 基于python的-学生信息管理系统
- python requests 自动管理cookie, session保持连接,抓取数据后结束
- python实现自动登录人人网并采集信息的方法
- python下学生管理系统:从文件中读取30位学生的信息(含邮箱),并实现简单的增、删、查找、统计(邮箱使用人数)。---附程序哦!
- python+pyqt4实现QQ自动发送信息
- python调用阿里接口获取ECS资产信息