cmdb 配置

Posted huangxuanya

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cmdb 配置相关的知识,希望对你有一定的参考价值。

cmdb客户端文件夹创建

客户端:client:
-bin:启动文件
-src:源文件(核心代码)
-conf:配置文件
-lib:全局的一些方法 和配置
-test:测试文件

技术图片

??模仿django一个暴露给用户的settings文件,一个全局配置文件global_settings,然后都可以实现通过settings这个对象点出属性方法也就是自定义配置或者全局配置,所以要创两个配置文件??



??实现第一个功能:集成自定制配置文件和全局配置文件??
在start文件中导入lib文件夹中config文件夹中的config中settings对象,然后Setings这个类要进行实例化,实例化的时候就会触发__init__方法,这个函数里面将custom_settings和global_settings里所有的配置key,
value值都设置到settings对象里面,然后就可以对象点的方式获取到值?????




custom_settigns.py (暴露给用户的配置文件)
USER = root

 

global_settings.py        (全局的配置文件)

EMAIL_USER = test

然后可以先在测试文件test中进行测试一下

s1.py

USER = root
port = 23

s2.py

import s1


print(dir(s1)) #变成字典
# [‘USER‘, ‘__builtins__‘, ‘__cached__‘, ‘__doc__‘, ‘__file__‘, ‘__loader__‘, ‘__name__‘, ‘__package__‘, ‘__spec__‘, ‘port‘]

print(s1)
print(s1.USER)  导入文件也可以点的方式获取到文件中的内容,文件实际上也是个对象,可以通过点的方式来获取值

for key in dir(s1):
    if key.isupper():  # 我们只要大写的,因为配置文件里面规定大写,小写就排除掉
        print(key)

config.py 

将custom_settings和global_settings里所有的配置key,
value值都设置到settings对象里面??
from conf import custom_settings
from . import global_settings
全局配置要放在自定制配置上面,因为这样才会实现全局和局部同一个配置,先加载用户写的配置
class Settings(): def __init__(self): ### 全局设置 for key in dir(custom_settings): if key.isupper(): v = getattr(global_settings, key) # 获取全局配置文件中配置的值,第一个是对象(导入的文件),第二个key,v就是key对应的值 setattr(self, key,v) # self代表的是当前的对象settings,key就是配置文件的大写的配置,v 就是self.配置的值也就是key对应的值,
                        所以这样就可以通过settings这个对象点的方式获取到值
### 自定制配置 for key in dir(custom_settings): if key.isupper(): v = getattr(custom_settings, key) # 第一个是对象,第二个key setattr(self, key,v) # self代表的是当前的对象settings,key就是配置文件的大写的配置,v 就是self.配置的值,所以这样就可以通过settings这个对象点的方式获取到值 settings = Settings()

start.py

start文件中导入config中settings对象??
from lib.config.config import settings

if __name__ == __main__:
    pass

 







以上是关于cmdb 配置的主要内容,如果未能解决你的问题,请参考以下文章

双态运维:如何让CMDB配置维护更贴近人性

巧用Salt,实现CMDB配置自动发现

如何让CMDB配置维护更贴近人性

ITGo对于企业CMDB建设的价值

CMDB项目开发

CMDB的消费场景