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. LivePhoto开发,你要知道的知识点

    前言 Apple从iPhone6s开始支持Live Photo.Live Photo 会录下拍照前后 1.5 秒所发生的一切,因此用户获得的不仅仅是一张精美照片,还有拍照前后时刻的动作和声音.具体的操 ...

  2. Angular创建路由从主界面跳转到我们的cesium界面

    我们要在一个独立的顶级模块中加载和配置路由器,它专注于路由功能,然后由根模块 AppModule 导入它. 按照惯例,这个模块类的名字叫做 APPRoutingModule,并且位于 src/app  ...

  3. 周末班:Python基础之模块

    什么是模块 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写 ...

  4. RabbitMQ广播:fanout模式

    一. 消息的广播需要exchange:exchange是一个转发器,其实把消息发给RabbitMQ里的exchange fanout: 所有bind到此exchange的queue都可以接收消息,广播 ...

  5. Python开发【第四篇】函数

    函数的作用 函数可以让编程逻辑结构化以及模块化 无论是C.C++,Java还是Python,函数是必不可少的知识点,也是很重要的知识点,函数是完成一个功能的代码块,使用函数可以使逻辑结构变得更加清晰以 ...

  6. PSQLException: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "ambari", database "ambari", SSL off

    On your Postgres server, you will need to update your pg_hba.conf file to allow access for the ambar ...

  7. Taro项目遇到的问题

    1. https://taro-ui.aotu.io/#/docs/questions 请在Taro项目根目录找到 config/index.js 文件中的h5项,添加如下: h5: { ... es ...

  8. ElasticSearch(九):elasticsearch-head插件安装

    安装node 安装elasticsearch-head需要node.js的支持. 下载最新的node.js,下载地址:https://nodejs.org/en/download/ 将下载后的安装包放 ...

  9. linux-python3.8安装

    环境:  centos7.5 版本:python3.8 1.依赖包安装 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-deve ...

  10. 好程序员技术教程分享JavaScript运动框架

    好程序员技术教程分享JavaScript运动框架,有需要的朋友可以参考下. JavaScript的运动,即让某元素的某些属性由一个值变到另一个值的过程.如让div的width属性由200px变到400 ...