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("姿势不对")
简易的Server配置views.py
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)
Agent

 

2、ssh模式

from django.shortcuts import render,HttpResponse


def asset(request):
    if request.method == "POST":
        print(request.POST)
        return HttpResponse("收到了。。。\n")
    else:
        return HttpResponse("姿势不对")
简易的Server配置views.py
# -*- 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)
ssh

 

3、saltsaltstack模式

ALLOWED_HOSTS = ["1.1.1.1",]
settings
from django.shortcuts import render,HttpResponse


def asset(request):
    if request.method == "POST":
        print(request.POST)
        return HttpResponse("收到了。。。\n")
    else:
        return HttpResponse("姿势不对")
简易的Server配置views.py
# -*- 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",]
salt-master

 

附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    
安装遇问题

 

posted @ 2018-03-02 23:05  fat39  阅读(168)  评论(0)    收藏  举报