Python 结合Ansible 把管理资产信息自动插入到CMDB中

资产管理对于任何公司来说都是件非常重要的事情,大家不用cmdb都有点不好意思出来见人了,上了CMDB之后基础就是资产这块,为了不苦逼似的一个个往里边录入,于是用python 结合Ansible 写了个自动收集资产信息,然后拿出自己需要关注的字段,自动insert 到cmdb 数据库里边去。

我们的cmdb 是开源改的,前端自定义好之后,后端的数据库需要自己创建个表,创建表语句如下:
CREATE TABLE ansible_host (
id int(11) NOT NULL AUTO_INCREMENT,
hostname varchar(200) COLLATE utf8_bin DEFAULT NULL,
manufacturer varchar(200) COLLATE utf8_bin DEFAULT NULL,
os varchar(200) COLLATE utf8_bin DEFAULT NULL,
cpu_model varchar(200) COLLATE utf8_bin DEFAULT NULL,
cpu_count varchar(10) COLLATE utf8_bin DEFAULT NULL,
cpu_core varchar(255) COLLATE utf8_bin DEFAULT NULL,
memory_totally varchar(255) COLLATE utf8_bin DEFAULT NULL,
swap_totally varchar(255) COLLATE utf8_bin DEFAULT NULL,
disk varchar(200) COLLATE utf8_bin DEFAULT NULL,
ip varchar(255) COLLATE utf8_bin DEFAULT NULL,
mac_address varchar(255) COLLATE utf8_bin DEFAULT NULL,
sn varchar(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 INTO ansible_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()

原文地址:http://blog.51cto.com/seekerwolf/2105533

时间: 2024-07-31 14:07:27

Python 结合Ansible 把管理资产信息自动插入到CMDB中的相关文章

SQL触发器:根据客户档案中的地区信息自动更新联系页中的省份和城市

USE [UFDATA_001_2017] GO   /****** Object:  Trigger [dbo].[JDS_Customer_UPDATECITY]    Script Date: 07/06/2018 16:53:04 ******/ SET ANSI_NULLS ON GO   SET QUOTED_IDENTIFIER ON GO     CREATE TRIGGER [dbo].[JDS_Customer_UPDATECITY] ON [dbo].[Customer]

Dell 服务器硬件信息监控,自动生成服务器资产信息

在对服务器的硬件监控上,目前业界主要基于如下两种: 1.服务器自带的工具,比如HP的hpacucli,DELL的OMSA等 2.智能平台管理接口 (IPMI,全称Intelligent Platform Management Interface) 基于以上两种,通过nagios.zabbix或自研运维平台等包裹,进行预警操作. 由于公司使用的服务器全部为DELL PowerEdge系列的,这里将以如何对DELL PowerEdge系列服务器硬件进行监控这一实际案例为主. 一.OMSA 介绍 DE

免密码交互方式+ansible批量管理服务介绍

介绍了ssh服务 1) 远程连接加密传输数据协议,实现远程连接登录,默认端口222)ssh远程连接原理依赖于锁头(公钥)和钥匙(私钥),实现远程加密连接3)ssh基于秘钥远程登录原理a 管理服务器创建秘钥対,将公钥传输发送给给管理端b 管理端请求与被管理端建立连接c 被管理向管理端发送公钥质询d 管理端处理质询信息,实现管理与被管理端免密码交互4)基于ssh协议相关命令ssh scp sftp netstat -lntup |egrep sshd 查看ssh端口 1.1 部署ssh+key (免

ansible自动化管理windows系统实战

一.简述 1.说明日常系统自动化运维过程中难免会有windows系列服务器,就开源软件来说目前大多的对windows批量管理兼容性不太好;不像Linux系统便捷,但现实中确实有些业务需要跑在windows上;搜索查找折腾一番后,发现python开发的ansible(已经被redhat收购)有比较好的解决方案,通过一番折腾,整理出来,以备忘交流; 2.实验环境服务器端:CentOS7.4_x64 自带python 2.7.5 ip:172.16.3.167源码安装ansible 被管理window

ansible批量管理常见的配置方法

第7章 ansible的管理????103 7.1 ansible概念的介绍????103 7.1.1 ansible的概念????104 7.1.2 ansible使用的一些意义????104 7.1.3 ansible拥有哪些服务????104 7.1.4 ansible服务的一些特点????104 7.2 ansible部署过程????104 7.2.1 服务的安装????104 7.2.2 服务版本的检查????105 7.3 ansible的主机清单讲解????105 7.3.1 根据

Python黑帽编程1.3 Python运行时与包管理工具

Python黑帽编程1.3  Python运行时与包管理工具 0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and Defense with Python>一书,为了解决很多同学对英文书的恐惧,解决看书之后实战过程中遇到的问题而作.由于原书很多地方过于简略,笔者根据实际测试情况和最新的技术发展对内容做了大量的变更,当然最重要的是个人偏好.教程同时提供图文和视频教程两种方式,供不同喜好的同学选择. 0.2 前言 前两

ansible应用管理

实验环境: 主控机:192.168.1.9(centos 7.5)被控机:192.168.1.8(centos 7.5);192.168.1.7(centos 7.4);192.168.1.6(cnetos 6.9)虚拟机:vmware 14做ansible实验前,必须做好主控机的基于被控机的key验证登录具体参照前面的博文中的基于key验证.http://blog.51cto.com/13698281/2118972 安装ansible rpm包安装: EPEL源 yum install an

Python+Django+Ansible Playbook自动化运维项目实战

Python+Django+Ansible Playbook自动化运维项目实战网盘地址:https://pan.baidu.com/s/1bZ1Ju0mld3KLZawdxZ7m6Q 密码: 5k9x备用地址(腾讯微云):https://share.weiyun.com/5E7aUWv 密码:wzfdrn 本课程将带你从项目实践角度出发,围绕自动化资产扫描和发现.Ansible自动化任务执行的内容展开,让运维更简单.更高效,Hold住高薪! 适合人群:如果你是一位运维党,对Python运维自动化

ansible批量管理服务详解

在开始之前我们先试想一个场景,你的公司有成百上千台的服务器,这时候领导要求在所有服务器上都添加一个定时任务,或者是执行某个命令,你可能会说用xshell一个一个去连或者是编写一个shell脚本,但是如果过你经历过类似的事情,你一定可以体会到其中的痛苦,因为这么多服务器你用xshell去连的话工作量将变得特别大,但如果你是选择写一个脚本的话也会特别的麻烦,因为每执行一个不同的东西你就要去修改脚本的类容,而且批量脚本一般采用循环的方式去执行一些任务,如果节点太多的话,执行的效率会变得比较低,而批量管