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

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

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

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

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

4.saltstack常用模块及API调用

1.archive模块

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

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(文件系统挂载模块)

saltstack相关的更多相关文章

  1. 1.saltstack基础笔记

    环境: master: 节点node1:阿里云:121.42.195.15 centos6.6 minion: 节点node2:腾讯云:182.254.157.19 centos6.6 一.salts ...

  2. saltstack 入门

    1.Saltstack是什么? saltstack 是一个异构平台基础设施管理工具,具有远程执行.配置管理.云管理.只需花费数分钟就可以运行起来,扩展性足以支撑上万台服务器,速度快,服务器之间秒级通讯 ...

  3. 嵌入式单片机STM32应用技术(课本)

    目录SAIU R20 1 6 第1页第1 章. 初识STM32..................................................................... ...

  4. saltstack学习之一:服务架构以及相关配置安装运行

    概要 saltstack是基于Python开发的C/S架构的一款批量管理工具,底层采用动态的连接总线(ZeroMQ消息队列pub/sub方式通信),使用ssl证书签发的方式进行认证管理,使其可以用于编 ...

  5. SaltStack系列(三)之state相关介绍

    一.管理对象 saltstack系统中管理对象叫做Target,在master上可以采用不同的Tatget去管理不同的minion.这些Target都是通过去管理和匹配Minion的ID来做一些集合. ...

  6. saltstack 开发相关命令记录

    SALT API开发相关命令记录. 查看当前的salt key信息salt-key -L 测试被控主机的连通性salt '*' test.ping 远程命令执行测试salt '*' cmd.run ' ...

  7. 自动化运维:网站svn代码上线更新(flask+saltstack)

    阶段性总结:      跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结.   1.整体架构: 后台:nginx+uwsgi  #nginx提供w ...

  8. Saltstack数据系统Grains和Pillar(三)

    Saltstack数据系统 分为Grains和Pillar 一.Grains 静态数据,当Minion启动的时候收集的MInion本地的相关信息.(包含操作系统版本.内核版本.CPU.内存.硬盘.设备 ...

  9. Saltstack pillar组件

     pillar组件 pillar也是Saltstack最重要的组件之一,其作用是定义与被控主机相关的任何数据,定义好的数据可以被其他组件使用,如模板.state.API等.在pillar中定义的数据与 ...

随机推荐

  1. js上传本地图片遇到的问题

    1.改变页面文件上传默认的样式 <input type="text" size="20" id="upfile" style=&quo ...

  2. 【Java面试题】12 内部类可以引用它的包含类的成员吗?有没有什么限制?

    完全可以.如果不是静态内部类,那没有什么限制! 如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员,例如,下面的代码: class Ou ...

  3. SQLite学习手册

    在实际的应用中,SQLite作为目前最为流行的开源嵌入式关系型数据库,在系统的架构设计中正在扮演着越来越为重要的角色.和很多其它嵌入式NoSQL数据库不同的是,SQLite支持很多关系型数据库的基本特 ...

  4. 关于NoSQL与SQL的区别

    简单说来:sql是关系型数据库的结构化查询语言,而nosql,一般代指菲关系型数据库,sql语句就不能用来,不过有些有leisql的查询语言,且nosql数据库没有统一的查询语言. 相关参考文章阅读: ...

  5. Java web url 规范

    设计URI应该遵循的原则 URI是网站UI的一部分,因此,可用的网站应该满足这些URL要求 简单,好记的域名 简短(short)的URI 容易录入的URI URI能反应站点的结构 URI是可以被用户猜 ...

  6. 【VR】Leap Motion 官网文档 FingerModel (手指模型)

    前言: 感谢关注和支持这个Leap Motion系列翻译的朋友们,非常抱歉因为工作原因非常久没有更新,今后这个翻译还会继续(除非官方直接给出中文文档).本篇献给大家的是 <FingerModel ...

  7. Linux内核中断处理体系分析

    前一篇博文中:linux内核初始化阶段通过early_trap_init()函数完毕了把异常向量复制到0xFFFF0000開始的地方,这些异常向量大部分指向通过vector_stub宏定义的那段代码. ...

  8. PHP-004

    'URL_CASE_INSENSITIVE'  =>  true,设置为true的时候表示URL地址不区分大小写,这个也是框架在部署模式下面的默认设置. URL模式 : URL_MODEL设置 ...

  9. python2.0 s12 day8 _ 堡垒机前戏paramiko模块

    堡垒机前戏 开发堡垒机之前,先来学习Python的paramiko模块,该模块机遇SSH用于连接远程服务器并执行相关操作 paramiko模块是做主机管理的,他模拟了一个ssh. 有两种形式连接形式, ...

  10. ASP代码审计学习笔记 -2.XSS跨站脚本

    XSS漏洞: 漏洞代码: <% xss=request("xss") response.write(xss) %> 漏洞利用: 漏洞修复: Server.HTMLEnc ...