1、salt架构图

https://docs.saltstack.com/en/getstarted/system/plugins.html

plug-ins(左边):场景可插拔

subsystem-core-subsystem(中间蓝色部分):

  1. 执行命令
  2. 分发文件
  3. 安全存储数据

plug-ins(右边边):

  1. 通过命令行执行 标准的接口可以进行二次开发
  2. 可以用什么样的形式去描述机器能认识的
  3. 任务结果可以存储的

plug-ins(下面)

  1. 包-变成命令

2、远程执行流程:

流程图(官方图)

流程说明

  1. 输入一个命令
  2. 进行用户认证
  3. 把任务放在控制总线,然后分发给客户端队列
  4. 客户端判断是配置管理还是远程执行
    1. 下载配置文件
    2. 配置文件里的数据提取
    3. 安全数据(用户名,密码)单独存储
    4. 状态文件解析编译
  5. 按照标准的格式返回到时间总线上
  6. 客户端把执行的结果返回到服务器端把结果展现出来并长期保存
  7. 把结果展现出来并长期保存
  8. 当结果返回后触发任务

主机管理项目初始构建

1、任务解析实例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
apache:
#yum 安装
pkg.installed: []        
service.running:        #apache必须运行
  - reloadTrue       
  - watch:
    - file/etc/httpd/conf/httpd.conf     #如果配置文件有变更就重启
  user.present:
    - uid: 87
    #- username: alex
    - gid: 87
    - home: /var/www/html
    - shell: /bin/nologin
    - require:
      - group: apache
  group.present:        #apache组不存在上面的命令不执行
    - gid: 87
    - require:
      - pkg: apache
 
/etc/httpd/conf/httpd.conf:     #每执行一次配置文件就更新一次
  file.managed:
    - source: salt://apache/httpd.conf
    - user: root
    - group: root
    - mode: 644

2、目录结构

3、代码解析

from django.db import models

# Create your models here.
class Host(models.Model):
'''
salt里面根本用不上ip,他是使用id或者grup组ID和hostname区别主机的唯一性的 saltsack服务器端和客户端是如何认证的 ?
客户端和服务器端的认证是通过key来进行认证,客户端主动找服务器验证,
我想被你管理,服务器有一个待审批想被管理的列表,同意后就可以管理了
'''
hostname = models.CharField(max_length=128,unique=True)
key = models.TextField()
status_choices = ((0,'Waiting Approval'),
(1,'Accepted'),
(2,'Rejected'))
'''每个主机的三个状态等待、允许、拒绝'''
def __str__(self):
return self.hostname
class HostGroup(models.Model):
name = models.CharField(max_length=64,unique=True)
hosts = models.ManyToManyField(Host,blank=True) def __str__(self):
return self.name

   

saltstack主机管理项目:主机管理项目架构设计(二)的更多相关文章

  1. Redis缓存项目应用架构设计二

    一.概述 由于架构设计一里面如果多平台公用相同Key的缓存更改配置后需要多平台上传最新的缓存配置文件来更新,比较麻烦,更新了架构设计二实现了缓存配置的集中管理,不过这样有有了过于中心化的问题,后续在看 ...

  2. 新零售SaaS架构:组织管理的底层逻辑与架构设计

    想要深入理解零售企业的组织架构,是非常困难的一件事.因为大部分人都没有实际经营过一家零售企业,更没有参与设计过零售企业的组织架构. 调研商家时,我们只能了解商家组织架构的现状,我们也很难和企业高层直接 ...

  3. SaltStack 的基本概念与工作原理 架构设计

    随着云计算技术的快速普及与发展,越来越多的企业开始学习和搭建自己的云平台代替传统的 IT 交付模式,企业的 IT 环境也随之越来越复杂,常规的运维方法与技术已经无法满足现在云环境中系统的配置与变更.基 ...

  4. APP和服务端-架构设计(二)

    1. App架构设计经验谈:接口的设计 App与服务器的通信接口如何设计得好,需要考虑的地方挺多的,在此根据我的一些经验做一些总结分享,旨在抛砖引玉. 1.1 安全机制的设计 现在,大部分App的接口 ...

  5. GPS部标平台的架构设计(二) 可扩展性设计

    在设计的前夕,设计人员喜欢把领导对未来业务的期望带入到设计目标当中,比如当前业务也不过是接入几千辆车,未来业务增长也不过几万台,但领导很多激情,强势要求二期平台的接入能力要达到20万台,这个要求带入到 ...

  6. Clusternet - 新一代开源多集群管理与应用治理项目

    作者 徐迪,腾讯云容器技术专家. 汝英哲,腾讯云高级产品经理. 摘要 在过去的数年里,云计算领域经历了多次巨大的变革,当前越来越多的组织将应用部署在本地和云上的多个基础设施平台上,这些平台可能是两个公 ...

  7. [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师的要求,大多是招JA ...

  8. [开源 .NET 跨平台 Crawler 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计

    [DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 五.如何做全站采集 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师 ...

  9. Spark Streaming ReceiverTracker架构设计

    本节的主要内容: 一.ReceiverTracker的架构设计 二.消息循环系统 三.ReceiverTracker具体实现 Spark Streaming作为Spark Core基础 架构之上的一个 ...

随机推荐

  1. 尝试Java,从入门到Kotlin(上)

    之前一直使用C#开发,最近由于眼馋Java生态环境,并借着工作服务化改造的契机,直接将新项目的开发都转到Java上去.积攒些Java开发经验,应该对.NET开发也会有所启发和益处. 从理论上说,Jav ...

  2. c/c++ 重载运算符 类型转换运算符

    重载运算符 类型转换运算符 问题:能不能把一个类型A的对象a,转换成另一个类型B的对象b呢?? 是可以的.这就必须要用类型A的类型转换运算符(conversion operator) 下面的opera ...

  3. jest 自动化测试

    概述 jest 是 facebook 开源的,用来进行单元测试的框架,可以测试 javascipt 和 react. 单元测试各种好处已经被说烂了,这里就不多扯了.重点要说的是,使用 jest, 可以 ...

  4. Enterprise architect 类图加时序图

    原文地址:https://segmentfault.com/a/1190000005639047#articleHeader2 新建一个Project 没什么好说的,“文件-新建项目”,然后选择保存位 ...

  5. vue中的watch方法 实时同步存储数据

    watch 监视模式里面有个独特的方法handler 注意要加上deep: true.deep为true时,当对象的key值改变时也监听 当值发生改变被watch监视到触发了事件 开始执行handle ...

  6. SpringCloud 学习网址记录

    SpringCloud Gateway https://www.cnblogs.com/ityouknow/p/10141740.html 熔断降级的概念 https://blog.csdn.net/ ...

  7. java中 & ^ ~ 的运算

    java运算符 与(&).非(~).或(|).异或(^)   最近看HashMap源码,遇到了这样一段代码: 1 static final int hash(Object key) { 2 i ...

  8. Jetson TX2(2)ubutu1604--安装opencv3.4.0

    1安装OpenCV3.4.0+contrib 1 在终端中敲入以下两句sudo rm /var/cache/apt/archives/locksudo rm /var/lib/dpkg/lock su ...

  9. 《通过C#学Proto.Actor模型》之 HelloWorld

    在微服务中,数据最终一致性的一个解决方案是通过有状态的Actor模型来达到,那什么是Actor模型呢? Actor是并行的计算模型,包含状态,行为,并且包含一个邮箱,来异步处理消息. 关于Actor的 ...

  10. Raft与MongoDB复制集协议比较

    在一文搞懂raft算法一文中,从raft论文出发,详细介绍了raft的工作流程以及对特殊情况的处理.但算法.协议这种偏抽象的东西,仅仅看论文还是比较难以掌握的,需要看看在工业界的具体实现.本文关注Mo ...