saltstack相关

经过saltstack实现根据不一样业务特性进行配置集中化管理,分发文件,采集服务器数据,操做系统基础及软件包管理等
第一层为web交互层,采用django+mysql+bootstarp实现,服务端采用nginx+uwsgi构建的web服务
第二层为分布式计算层,采用rpyc分布式计算框架实现,做为第一层与第三层的数据交互及实现主控端物理分离,提升总体安全性,同时具有第三层的多机服务的能力
第三层为集群主控端服务层,支持saltstack等平台
管理员向运维平台所在web服务器发起http请求,运维平台接收HTTP POST的数据并进行加密,再做为rpyc客户端向rpyc服务器发送加密指令串,rpyc服务器端同时也是saltstack的主控端,主控端将接收到的数据经过密钥key进行解密,解析成运维调用的任务模块,结合saltstack向目标业务服务器集群发送执行任务,执行完毕后,将返回的执行结果加解密处理,最后逐级返回给系统管理员,整个任务模块分发执行流程结束php

rpyc服务器端实现原理:
1.接收rpyc客户端传递过来的消息,经过解密方法还原出模块ID,操做对象,模块扩展参数等信息
2.经过exec方法导入相应的功能模块(要事先编写完成,不然会提示找不到指定功能模块),调用功能模块的相关方法,实现操做任务向业务集群服务器下发与执行,
3.将任务执行结果串进行格式化,加密后返回给web层python

 

1.grains组件
做用是搜集被控主机的基本信息,这些信息一般都是一些静态类的数据,包括CPU,内核,操做系统,虚拟化等
2.定义grains数据
定义grains数据的方法有两种,其中一种为在被控主机定制配置文件,另外一种是经过主控端扩展模块API实现,区别是模块更灵活,能够经过python编程动态定义,而配置文件只适合相对固定的键与值。mysql

2.pillar组件
做用是定义与被控主机相关得任何数据,定义好的数据能够被其余组件使用,如模板、state、API等。
在pillar中定义的数据与不一样业务特性的被控主机相关联,这样不一样被控主机只能看到本身匹配的数据,所以pillar安全性很高,适用于一些比较敏感的数据,这也是区别于grains最关键的一点,如定义不一样业务组主机的用户id,组id,读写权限,程序包等信息,定义的规范是采用python字典形式,即键/值,最上层的键通常为主机的id或组名称。nginx

3.state是saltstack最核心的功能
经过预先定制好的sls(salt state file)文件对被控主机进行状态管理,支持包括程序包(pkg)、文件(file)、网络配置(network)、系统服务(service)、系统用户(user)等
state定义是经过sls文件进行描述的,支持YAML语法。web

4.saltstack经常使用模块及API调用sql

1.archive模块django

实现系统层面的压缩包调用编程

client.cmd('*','archive.gunzip',['/tmp/sourcefile.txt.gz'])安全

2.cmd模块服务器

实现远程的命令行调用执行(默认具有root操做权限)

client.cmd('*','cmd.run',['free -m'])

3.cp模块

实现远程文件、目录的复制,以及下载URL文件等操做

client.cmd('*','cp.get_file',['salt://path/to/file','/minion/dest'])

4.cron模块

实现被控主机的crontab操做

client.cmd('*','cron.set_job',['root','*','*','*','*','*','/usr/echo'])

5.dnsutil模块

实现被控主机通用DNS相关操做

client.cmd('*','dnsutil.host_append',['/etc/hosts','127.0.0.1','ad1.yuk.co'])

6.file模块

被控主机文件常见操做,包括文件读写,权限,查找,检验等

client.cmd('*','file.remove',['/tmp/foo'])

7.iptables模块

被控主机iptables支持

client.cmd('*','iptables.append',['filter','INPUT','rule=\'-p tcp --sport 80 -j ACCEPT\''])

8.network模块

返回被控主机网络信息

client.cmd('*','network.ip_addrs')

9.pkg包管理模块

被控主机程序包管理,如yum,apt-get等

client.cmd('*','pkg.remove',['php'])

10.service服务模块

被控主机程序包服务管理

client.cmd('*','service.stop',['nginx'])

user(系统用户模块)

group(系统组模块)

partiton(系统分区模块)

puppet(puppet管理模块)

system(系统重启、关机模块)

timezone(时区管理模块)

nginx(Nginx管理模块)

mount(文件系统挂载模块)

相关文章
相关标签/搜索