标签:帮助 policy 数据源 star blank ssh host 初始 配置管理
CMDB --Configuration Management Database 配置管理数据库, CMDB存储与管理企业IT架构中设备的各种配置信息,它与所有服务支持和服务交付流程都紧密相联,支持这些流程的运转、发挥配置信息的价值,同时依赖于相关流程保证数据的准确性。
cmdb属于运维自动化项目
目的:减少人工干预,降低人员成本
cmdb包括两部分
-资产管理
-操作管理
WHY搭建cmdb资产管理
搭建cmdb是因为最终是要搭建自动化平台,包括装机、监控、自动安装软件、部署等全部自动化的执行,而想要搭建自动化的平台的基础是要有资产的管理,因为上面的操作都是在资产的基础上进行的操作,所以搭建平台的首要目的是要对资产进行管控起来,所以我们需要有一个资产管理。
目前CMDB资产管理的实现有如下方式:
对于Agent的版本的实现思路:
import subprocess import requests # pip3 install requests # ################## 采集数据 ################## # result = subprocess.getoutput(‘ipconfig‘) # result正则处理获取想要数据 # 整理资产信息 # data_dict ={ # ‘nic‘: {}, # ‘disk‘:{}, # ‘mem‘:{} # } # ################## 发送数据 ################## # requests.post(‘http://www.127.0.0.1:8000/assets.html‘,data=data_dict)
# 基于paramiko模块, pip3 install paramiko
import requests
import paramiko
# ################## 获取今日未采集主机名 ##################
#result = requests.get(‘http://www.127.0.0.1:8000/assets.html‘)
# result = [‘c1.com‘,‘c2.com‘]
# ################## 通过paramiko连接远程服务器,执行命令 ##################
# 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname=‘192.168.14.36‘, port=22, username=‘wupeiqi‘, password=‘123‘)
# 执行命令
# stdin, stdout, stderr = ssh.exec_command(‘df‘)
# 获取命令结果
# result = stdout.read()
# 关闭连接
# ssh.close()
# print(result)
# data_dict = {result}
# ################## 发送数据 ##################
# requests.post(‘http://www.127.0.0.1:8000/assets.html‘,data=data_dict)
# 1. 安装saltstack
# rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
#
#
"""
Master: yum install salt-master
Master准备:
a. 配置文件,监听本机IP
vim /etc/salt/master
interface: 本机IP地址
b. 启动master
/etc/init.d/salt-master start
Slave: yum install salt-minion
Slave准备:
a. 配置文件,连接那个master
vim /etc/salt/minion
master: 远程master地址
b. 启动slave
/etc/init.d/salt-minion start
2. 创建关系
查看
Master:salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
c1.com
c2.com
c3.com
Rejected Keys:
接受
Master:salt-key -a c1.com
Accepted Keys:
c1.com
c2.com
Denied Keys:
Unaccepted Keys:
c3.com
Rejected Keys:
3. 执行命令
master:
salt ‘c1.com‘ cmd.run ‘ifconfig‘
import salt.client
local = salt.client.LocalClient()
result = local.cmd(‘c2.salt.com‘, ‘cmd.run‘, [‘ifconfig‘])
"""
# ################## 获取今日未采集主机名 ##################
#result = requests.get(‘http://www.127.0.0.1:8000/assets.html‘)
# result = [‘c1.com‘,‘c2.com‘]
# ################## 远程服务器执行命令 ##################
# import subprocess
# result = subprocess.getoutput("salt ‘c1.com‘ cmd.run ‘ifconfig‘")
#
# import salt.client
# local = salt.client.LocalClient()
# result = local.cmd(‘c2.salt.com‘, ‘cmd.run‘, [‘ifconfig‘])
# ################## 发送数据 ##################
# requests.post(‘http://www.127.0.0.1:8000/assets.html‘,data=data_dict)
开发中遇到的小问题
在用agent方式连接主机获取数据的时候,一开始获取主机的唯一标识符用的是主板上的sn号(每个电脑的sn号都不同,唯一),但是后来用虚拟机使用时候出现问题,虚拟机上的序列号(sn号)可以相同。
解决方案:使用主机的主机名,且保证主机名不能修改,并把主机名放在一个文件里面,供采集数据时候获取主机名。
标签:帮助 policy 数据源 star blank ssh host 初始 配置管理
原文地址:https://www.cnblogs.com/dylan123/p/10775740.html