cmdb的4种模式
一、4种模式的原理草图
1.Agent

2、SSH

3、saltstack

4、puppet(基于ruby,只需知道)

二、3种模式的简单实验
1、Agent模式
def asset(request): if request.method == "POST": print(request.POST) return HttpResponse("收到了。。。\n") else: return HttpResponse("姿势不对")
import subprocess import requests cmd = "dir" result = subprocess.getoutput(cmd) url = "http://127.0.0.1:8000/asset.html" response = requests.post(url,data={"result":result}) print(response.text)
2、ssh模式
from django.shortcuts import render,HttpResponse def asset(request): if request.method == "POST": print(request.POST) return HttpResponse("收到了。。。\n") else: return HttpResponse("姿势不对")
# -*- coding:utf-8 -*- import paramiko import requests # 创建SSH对象 ssh = paramiko.SSHClient() # 允许连接不在know_hosts文件中的主机 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接服务器 ssh.connect(hostname='1.1.1.40', port=22, username='root', password="toor") # 执行命令 stdin, stdout, stderr = ssh.exec_command('df') # 获取命令结果 result = stdout.read() # 关闭连接 ssh.close() url = "http://127.0.0.1:8000/asset.html" response = requests.post(url,data={"check":result}) print(response.text)
3、saltsaltstack模式
![]()
ALLOWED_HOSTS = ["1.1.1.1",]
from django.shortcuts import render,HttpResponse def asset(request): if request.method == "POST": print(request.POST) return HttpResponse("收到了。。。\n") else: return HttpResponse("姿势不对")
# -*- coding:utf-8 -*- import requests import subprocess result = subprocess.getoutput("ifconfig") url = "http://127.0.0.1:8000/asset.html" # url = "http://1.1.1.1:8000/asset.html" # linux上配置 response = requests.post(url,data={"check":result}) print(response.text) # 在Django服务器配置绑定ip1.1.1.1,设置ALLOWED_HOSTS = ["1.1.1.1",]
附1:saltstack安装与参数配置
1. 安装salt-maste master端 yum install salt-master 2. 修改配置文件:/etc/salt/master interface: 0.0.0.0 # 表示Master的IP 3. 启动 service salt-master start 1. 安装salt-minion minion端 yum install salt-minion 2. 修改配置文件 /etc/salt/minion master: 10.211.55.4 # master的地址 或 master: - 10.211.55.4 - 10.211.55.5 random_master: True id: c2.salt.com # 客户端在salt-master中显示的唯一ID 3. 启动 service salt-minion start
server端 """ salt-key -L # 查看已授权和未授权的slave salt-key -A # 接收所有salve salt-key -a salve_id # 接受指定id的salve salt-key -r salve_id # 拒绝指定id的salve salt-key -d salve_id # 删除指定id的salve """
1、基于shell命令 salt 'c2.salt.com' cmd.run 'ifconfig' 2、基于Salt的API import salt.client local = salt.client.LocalClient() result = local.cmd('c2.salt.com', 'cmd.run', ['ifconfig'])
附2:安装时遇到问题尝试如下。参考:http://blog.csdn.net/cinvzi_/article/details/52190455
[root@fat39 ~]# yum install salt-master -y 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 没有可用软件包 salt-minion。 错误:无须任何处理 [root@fat39 ~]# yum install salt-minion -y 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.aliyun.com 没有可用软件包 salt-minion。 错误:无须任何处理 安装saltstack wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo yum install epel-release -y # 安装完这个就错误消失了 yum install salt-master -y yum install salt-minion -y

浙公网安备 33010602011771号