Agent实现方式
简言之:Angent方式,本质就是服务器上自己跑subprocess.getoutput(‘命令’),获取关键信息,再将信息返回给API,主机API接收到消息后经过处理,将数据存入数据库,最终通过web界面展现给用户
图示:
优点:速度快
缺点:需要为每台服务器部署一个Agent程序,
适合服务器较多(>100台)的情况
ssh类的实现方式
本质:基于paramiko模块,需要一台中控机
实现方式:
中控机通过paramiko模块,登录到各个服务器,然后执行linux命令,获取各个服务器的信息,再将信息返回给API,主机API接收到消息后经过处理,将数据存入数据库,最终通过web界面展现给用户
图解:
优点:不需要Agent,无需部署
缺点:速度慢,中控机连接速度慢
适合服务器较少(<100台)的情况
saltstack
本质:此方案的实现流程和第二种ssh类的实现差不多的流程,中控机发送命令给服务器执行,服务器将结果放到一个队列中,中控机从队列中获取信息,再将信息发送到API中进而录入数据库,最后通过web展示给用户
实现方式:借助第三方工具saltstack
优点: 快,开发成本低
缺点:依赖第三方工具
适用场景:服务器上已经部署了salt-stack或者想要使用salt-stack的企业
图示
1、安装和配置
master端:
1、安装salt-master
yum install salt-master -y
如果无法安装请先安装源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、修改配置文件:
vim /etc/salt/master
interface:0.0.0.0 修改为本机的ip地址
3、启动服务
service salt-master start
4、查看进程是否启动
ps aux | grep salt
slave端
1、安装salt-minion
yum install salt-minion -y
如果无法安装请先安装源
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
2、修改配置文件:
vim /etc/salt/minion
master:0.0.0.0 修改为的master地址
3、启动服务
service salt-minion start
4、查看进程是否启动
ps aux | grep salt
2 授权
salt-key -L # 查看已授权和未授权的slave
salt-key -a slave_id #接收指定id的slave,(hostname即可)
salt-key -r slave_id #拒绝指定id的slave
salt-key -d slave_id #删除指定id的slave
salt-key -A # 接收所有的申请slave
3、执行命令
在master服务器上对slave进行远程操作
salt ' slave_hostname' cmd.run ‘命令'
基于API的方式
import salt.client
local = salt.client.LocalClient()
result = local.com('c2.salt.com'', 'cmd.run', ['ifconfig'])
Puppet(ruby语言开发)
每隔30分钟,通过RPC消息队列将执行的结果返回给用户