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
相關文章
相關標籤/搜索