资产管理 cmdb之ansible 获取服务器硬件、软件等信息
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了资产管理 cmdb之ansible 获取服务器硬件、软件等信息,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5752字,纯文字阅读大概需要9分钟。
内容图文
![资产管理 cmdb之ansible 获取服务器硬件、软件等信息](/upload/InfoBanner/zyjiaocheng/471/1938fa1bc52344fbbbe4173bc6b1008d.jpg)
ansible 192.168.93.128 -m setup
几乎可以获取到所有想要的信息,直接处理这些字符串很让人想砸电脑,调用ansible的API接口就方便多了,其实就是用ansible的runner模块调用setup模块来获取结果,返回的是dict字典,处理起来就方便多了。(注意:ansible1.x版本有runner模块,ansible2.x以上就没有runner接口模块,需要看官网)
将其封装成函数保存为test.py,(此处封装借鉴的一位高手,可惜忘了博客地址)
里面的参数根据各自的系统可适当修改
# -*- coding: UTF-8 -*- import ansible.runner def get_info(ip): data = {} runner = ansible.runner.Runner(module_name=‘setup‘, module_args=‘‘, pattern=‘all‘, forks=2) datastructure = runner.run() sn = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_product_serial‘] host_name = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_hostname‘] description = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_lsb‘][‘description‘] ansible_machine = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_machine‘] sysinfo = ‘%s %s‘ % (description, ansible_machine) os_kernel = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_kernel‘] cpu = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_processor‘][1] cpu_count = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_processor_count‘] cpu_cores = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_processor_cores‘] mem = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_memtotal_mb‘] ipadd_in = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_all_ipv4_addresses‘][0] disk = datastructure[‘contacted‘][ip][‘ansible_facts‘][‘ansible_devices‘][‘sda‘][‘size‘] # print sysinfo data[‘sn‘] = sn data[‘sysinfo‘] = sysinfo data[‘cpu‘] = cpu data[‘cpu_count‘] = cpu_count data[‘cpu_cores‘] = cpu_cores data[‘mem‘] = mem data[‘disk‘] = disk data[‘ipadd_in‘] = ipadd_in data[‘os_kernel‘] = os_kernel data[‘host_name‘] = host_name return data if __name__ == ‘__main__‘: data = get_info(‘‘) import pprint pprint.pprint(data)
在192.168.93.137上执行test.py获取192.168.93.128的服务器信息
接着就是结合资产管理平台存入数据库中了
方法、套路有很多:
写成脚本用crontab定期执行,脚本读取IP列表文件将信息存入数据库(借鉴燕郊大神春哥)
通过运维平台主动调用脚本写入数据库(借鉴老司机戴总[戴如峰])
此处用第二种,点击“更新”按钮,获取到服务器信息后写入数据库
运维平台展示服务器信息
原理:
点击更新按钮之后触发ajax,然后将服务器的id号以post方式提交给“/cmdb/postmachineinfo/”接口,此id是服务器在数据库表中的id号,
运维平台接口收到请求后拿该id号去数据库中查询服务器的ip,再调用封装有
ansible API接口的脚本查询服务器信息,然后写入数据库,最后给前端返回
“成功”的信息。
前端更新按钮:
<button type="button" id="server_update_{{server.id}}" class="btn btn-xs btn-primary">更新</button>
按钮的id值最后一位就是192.168.93.128在数据库表中的id号
ajax提交信息到“/cmdb/postmachineinfo/”
/* *更新机器信息 */ $("table tbody tr td button[id^=‘server_update‘]").click(function(){ var id_val = $(this).attr(‘id‘); //获取更新按钮id值 var id = id_val.split(‘_‘)[2]; //获取id值的最后一位 var data = {"id":id}; data = JSON.stringify(data); var url = "/cmdb/postmachineinfo/"; $.get(url,{data:data},function(msg){ ajax_callback(msg); }); }); /* *ajax get callback */ function ajax_callback(msg){ var msg = $.parseJSON(msg); var index = layer.alert(msg, { //layer控件提示信息 skin: ‘layui-layer-molv‘ //样式类名 },function(){ if (msg == ‘成功‘){ window.location="/cmdb/server_list/"; } else{ layer.close(index) } }); }
后端接口“/cmdb/postmachineinfo/”
@login_required def postmachineinfo(request): # 提交服务器信息 response = HttpResponse() data = json.loads(request.GET.get(‘data‘, ‘‘)) id = int(data[‘id‘]) print ‘update--->‘ server = Server.objects.get(pk=id) data = get_info(server.in_ip) server.os_version = data[‘sysinfo‘] server.host_name = data[‘host_name‘] server.os_kernel = data[‘os_kernel‘] server.cpu_model = data[‘cpu‘] server.cpu_count = data[‘cpu_count‘] server.cpu_cores = data[‘cpu_cores‘] server.mem = data[‘mem‘] server.disk = data[‘disk‘] server.status = True server.max_open_files = get_ulimit(server.in_ip) server.uptime = get_uptime(server.in_ip) server.save() # set_service_port(server) # 设置服务端口信息 response.write(json.dumps(u‘成功‘)) return response
192.168.93.128上的服务和端口信息,原理一样,通过ansible API远程执行netstat -ntpl命令,
获取信息存入数据库
本文出自 “屌丝” 博客,请务必保留此出处http://sex123.blog.51cto.com/4155785/1858751
资产管理 cmdb之ansible 获取服务器硬件、软件等信息
标签:系统软件 服务器 信息 硬件 记录
本文系统来源:http://sex123.blog.51cto.com/4155785/1858751
内容总结
以上是互联网集市为您收集整理的资产管理 cmdb之ansible 获取服务器硬件、软件等信息全部内容,希望文章能够帮你解决资产管理 cmdb之ansible 获取服务器硬件、软件等信息所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。