saltstack主机管理项目:主机管理项目架构设计(二)

一、salt架构图

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

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

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

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

plug-ins(右边边):

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

plug-ins(下面)

  1. 包-变成命令python

二、远程执行流程:

流程图(官方图)

流程说明

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

主机管理项目初始构建

一、任务解析实例

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必须运行
   -  reload True       
   -  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

二、目录结构

三、代码解析

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
相关文章
相关标签/搜索