saltstack主機管理項目:主機管理項目架構設計
阿新 • • 發佈:2018-08-04
get sel led tac text lai space 不執行 load
1、salt架構圖
https://docs.saltstack.com/en/getstarted/system/plugins.html
plug-ins(左邊):場景可插拔
subsystem-core-subsystem(中間藍色部分):
- 執行命令
- 分發文件
- 安全存儲數據
plug-ins(右邊邊):
- 通過命令行執行 標準的接口可以進行二次開發
- 可以用什麽樣的形式去描述機器能認識的
- 任務結果可以存儲的
plug-ins(下面)
-
包-變成命令
2、遠程執行流程:
流程圖(官方圖)
流程說明
- 輸入一個命令
- 進行用戶認證
- 把任務放在控制總線,然後分發給客戶端隊列
- 客戶端判斷是配置管理還是遠程執行
- 下載配置文件
- 配置文件裏的數據提取
- 安全數據(用戶名,密碼)單獨存儲
- 狀態文件解析編譯
- 按照標準的格式返回到時間總線上
- 客戶端把執行的結果返回到服務器端把結果展現出來並長期保存
- 把結果展現出來並長期保存
- 當結果返回後觸發任務
主機管理項目初始構建
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必須運行
- 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
|
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主機管理項目:主機管理項目架構設計