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. deepin 15.8桌面系统

    深度桌面环境是深度科技自主开发的美观易用.极简操作的桌面环境,主要由桌面.启动器.任务栏.控制中心.窗口管理器等组成,系统中预装了 WPS Office.搜狗输入法.有道词典.网易云音乐以及深度特色应 ...

  2. SQLServer之创建嵌套触发器

    嵌套触发器创建规则 当触发器执行启动其他触发器的操作时,DML 和 DDL 触发器都是嵌套触发器. 这些操作都可以启动其他触发器等. DML 触发器和 DDL 触发器最多可以嵌套 32 层. 可以通过 ...

  3. 【Python 20】BMR计算器4.0(异常处理)

    1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...

  4. Redis数据过期策略详解

    http://www.cnblogs.com/xuliangxing/p/7151812.html 本文对Redis的过期机制简单的讲解一下 讲解之前我们先抛出一个问题,我们知道很多时候服务器经常会用 ...

  5. ideal中把项目打成war包,并放在tomcat运行,遇见的问题。。。

    先说下我遇见的问题吧:最近做项目要把项目放在tomcat上运行,用的springboot框架, 在建项目时选择的是  jar包,项目写完要部署打包是,在pom中虽然把包改成了war ,可是每次放入to ...

  6. ubuntu 16.04 LTS - 谷歌拼音输入法

    https://blog.csdn.net/chengyq116/article/details/78638249 1. installation1.1 汉语语言包 sudo apt-get inst ...

  7. kubernetes1.14.0部署

    2019/4/6/使用kubeadm安装部署kubernetes集群: 前提:1.各节点时间同步:2.各节点主机名称解析:dns OR hosts:3.各节点iptables及firewalld服务被 ...

  8. 静态代理与JDK动态代理

    demo地址: https://github.com/ZbLeaning/leaning 代理: 为其他对象提供一种代理以控制对这个对象的访问.分为静态代理和动态代理.代理模式的目的就是为真实业务对象 ...

  9. 关于IOC容器的一些个人理解

    一丶前言 下面是本人对于IOC容器的一些个人理解,希望能帮到初学者认识IOC,如有理解得不对的地方欢迎指正,也让我学学. 二丶IOC是什么,它是干嘛的? IOC只是一种编程思想,不局限于任何一种语言, ...

  10. 循环语句--do...while

    do...while循环 格式: 执行流程 执行顺序:①③④>②③④>②③④…②不满足为止. ①负责完成循环变量初始化. ②负责判断是否满足循环条件,不满足则跳出循环. ③具体执行的语句 ...