运维前线:一线运维专家的运维方法、技巧与实践2.4 如何利用Python获取Facts

简介:
+关注继续查看

2.4 如何利用Python获取Facts


2.4.1 工作原理

通过2.3节的学习可以知道Facts可以获取主机的系统信息,并以K-V形式进行存储,我们只需要处理Puppet Server收集的Agent Facts信息、入库,然后通过Django来读取数据库信息即可,如图2-6所示。

 

图2-6 Facts信息获取流程图

2.4.2 利用Python脚本获取Facts

首先要确定系统中已经安装了Puppet,如果没有,可以从http://yum.puppetlabs.com/下载,并参考https://docs.puppetlabs.com/puppet/latest/reference/install_pre.html进行安装,接下来看看如何通过Python程序来获取Facts信息(注意:下面的程序是查看当前机器的fact信息,下面的这个程序对结果不会做过多的处理,在后面进行CMDB项目的时候将详细讲解fact的数据处理),实例程序facter_message.py的内容如下:

#!/usr/bin/python

# encoding: utf-8

__authors__     = ['LiuYu']

__version__     = 1.0

__date__        = '2015-08-19 14:34:44'

__licence__     = 'GPL licence'

 

# 导入模块

import commands

import re

# 定义一个变量

command = 'facter'

# 定义要打印的列表

show_list = [('fqdn', u'主机名'),

             ('domain', u'域名'),

             ('uptime', u'运行时间'),

             ('operatingsystem', u'系统'),

             ('kernelrelease', u'内核版本'),

             ('ipaddress', u'IP'),

             ('macaddress', u'MAC'),

             ('memorysize_mb', u'内存MB'),

             ('processors', u'CPU'),

             ('blockdevices', u'磁盘'),

]

# 定义一个处理命令的函数

def handle_command_message(command):

    status, content = commands.getstatusoutput(command)

    if status == 0:

        return content

    else:

        return

# 通过函数处理名称,然后打印结果

if __name__ == '__main__':

    result_dict = {}

    result = handle_command_message(command)

    if result:

        for line in result.strip().split('\n'):

            if re.findall('=>', line):

                key, value = line.split('=>', 1)

                result_dict[key.strip()] = value.strip()

        for f_k, f_s in show_list:

            if f_k in result_dict:

                print f_s, ':', result_dict[f_k]

下面我们来运行facter_message.py程序,打印结果:

$ python facter_message.py

主机名 : puppetclient.domain.com

域名 : domain.com

运行时间 : 1 day

系统 : CentOS

内核版本 : 2.6.32-431.1.2.0.1.el6.x86_64

IP: 10.20.122.111

MAC : 00:22:E2:5E:4D:10

内存 MB : 996.48

CPU : {"count"=>1, "models"=>["QEMU Virtual CPU version 1.1.2"], "

磁盘 : sr0,vda,vdb,vdc

通过如上的简单代码就可以将Facts的信息进行集中处理。

相关文章
|
17小时前
|
运维 Linux 程序员
嘘!偷窥鹅厂运维专家,让Linux内核奔跑起来不得不说的秘密
有这么一个故事,一个程序员去相亲,当女方问他的职业时,他说自己是一个底层架构工程师,女方听到“底层”两个字,很不屑地说:“底层啊,那你什么时候能升到中高层?男方听后不知该如何接话。在程序员的世界里,Linux 内核、底层其实是非常“高端”的内容,普通程序员需要在这个领域里积累多年,才能修炼到从事“底层”工作的层次。
|
3月前
|
运维 安全 Linux
GitHub点击量已破千万!世界级运维专家手写:793页Linux实战笔记
我们知道Linux这玩意儿是在计算机上面运行的,所以说Linux就是一组软件。问题是这个软件是操作系统还是应用程序? Linux可以在哪些种类的计算机硬件上面运行?而Linux源自哪里?为什么使用Linux还不用花钱?这些我们都得先来谈—谈! 免得下次人家问你,为什么复制软件不会违法时,你会答不出来!
|
4月前
|
算法 Java Python
Python专家解读垃圾回收<<三>>
Python专家解读垃圾回收<<三>>
Python专家解读垃圾回收<<三>>
|
4月前
|
算法 Java 程序员
Python专家解读垃圾回收<<二>>
Python专家解读垃圾回收<<二>>
Python专家解读垃圾回收<<二>>
|
4月前
|
算法 Java C#
Python专家解读垃圾回收<<一>>
Python专家解读垃圾回收<<一>>
|
10月前
|
运维 安全 IDE
这款牛逼的开源安全工具让我这个运维也变成“安全专家”
这款牛逼的开源安全工具让我这个运维也变成“安全专家”
这款牛逼的开源安全工具让我这个运维也变成“安全专家”
|
存储 人工智能 运维
关于运维,阿里云、字节、华科的专家如是说
“欲善新基建,必先利运维”。随着业务走上云端,运维也逐步“云化”。
关于运维,阿里云、字节、华科的专家如是说
|
Python
python画图加注释_【IT专家】python画图笔记——注释
python画图加注释_【IT专家】python画图笔记——注释
330 0
|
人工智能 运维 安全
重磅下载!10位阿里专家联手,云上运维必看《CloudOps白皮书》
发挥云和devops的双重优势,阿里云十多位技术专家共同提出CARES模型,五大维度分析CloudOps成熟度,帮助企业落地最佳实践
57723 0
重磅下载!10位阿里专家联手,云上运维必看《CloudOps白皮书》
|
SQL 存储 网络协议
深入浅出!阿里运维专家三种方法教你如何应对高并发“海啸”场景
高并发高压力下我们是如何保障数据库的稳定性和可用性的。
1482 0
深入浅出!阿里运维专家三种方法教你如何应对高并发“海啸”场景
热门文章
最新文章
推荐文章
更多