saltstack相關

經過saltstack實現根據不一樣業務特性進行配置集中化管理,分發文件,採集服務器數據,操做系統基礎及軟件包管理等
第一層爲web交互層,採用django+mysql+bootstarp實現,服務端採用nginx+uwsgi構建的web服務
第二層爲分佈式計算層,採用rpyc分佈式計算框架實現,做爲第一層與第三層的數據交互及實現主控端物理分離,提升總體安全性,同時具有第三層的多機服務的能力
第三層爲集羣主控端服務層,支持saltstack等平臺
管理員向運維平臺所在web服務器發起http請求,運維平臺接收HTTP POST的數據並進行加密,再做爲rpyc客戶端向rpyc服務器發送加密指令串,rpyc服務器端同時也是saltstack的主控端,主控端將接收到的數據經過密鑰key進行解密,解析成運維調用的任務模塊,結合saltstack向目標業務服務器集羣發送執行任務,執行完畢後,將返回的執行結果加解密處理,最後逐級返回給系統管理員,整個任務模塊分發執行流程結束php

rpyc服務器端實現原理:
1.接收rpyc客戶端傳遞過來的消息,經過解密方法還原出模塊ID,操做對象,模塊擴展參數等信息
2.經過exec方法導入相應的功能模塊(要事先編寫完成,不然會提示找不到指定功能模塊),調用功能模塊的相關方法,實現操做任務向業務集羣服務器下發與執行,
3.將任務執行結果串進行格式化,加密後返回給web層python

 

1.grains組件
做用是蒐集被控主機的基本信息,這些信息一般都是一些靜態類的數據,包括CPU,內核,操做系統,虛擬化等
2.定義grains數據
定義grains數據的方法有兩種,其中一種爲在被控主機定製配置文件,另外一種是經過主控端擴展模塊API實現,區別是模塊更靈活,能夠經過python編程動態定義,而配置文件只適合相對固定的鍵與值。mysql

2.pillar組件
做用是定義與被控主機相關得任何數據,定義好的數據能夠被其餘組件使用,如模板、state、API等。
在pillar中定義的數據與不一樣業務特性的被控主機相關聯,這樣不一樣被控主機只能看到本身匹配的數據,所以pillar安全性很高,適用於一些比較敏感的數據,這也是區別於grains最關鍵的一點,如定義不一樣業務組主機的用戶id,組id,讀寫權限,程序包等信息,定義的規範是採用python字典形式,即鍵/值,最上層的鍵通常爲主機的id或組名稱。nginx

3.state是saltstack最核心的功能
經過預先定製好的sls(salt state file)文件對被控主機進行狀態管理,支持包括程序包(pkg)、文件(file)、網絡配置(network)、系統服務(service)、系統用戶(user)等
state定義是經過sls文件進行描述的,支持YAML語法。web

4.saltstack經常使用模塊及API調用sql

1.archive模塊django

實現系統層面的壓縮包調用編程

client.cmd('*','archive.gunzip',['/tmp/sourcefile.txt.gz'])安全

2.cmd模塊服務器

實現遠程的命令行調用執行(默認具有root操做權限)

client.cmd('*','cmd.run',['free -m'])

3.cp模塊

實現遠程文件、目錄的複製,以及下載URL文件等操做

client.cmd('*','cp.get_file',['salt://path/to/file','/minion/dest'])

4.cron模塊

實現被控主機的crontab操做

client.cmd('*','cron.set_job',['root','*','*','*','*','*','/usr/echo'])

5.dnsutil模塊

實現被控主機通用DNS相關操做

client.cmd('*','dnsutil.host_append',['/etc/hosts','127.0.0.1','ad1.yuk.co'])

6.file模塊

被控主機文件常見操做,包括文件讀寫,權限,查找,檢驗等

client.cmd('*','file.remove',['/tmp/foo'])

7.iptables模塊

被控主機iptables支持

client.cmd('*','iptables.append',['filter','INPUT','rule=\'-p tcp --sport 80 -j ACCEPT\''])

8.network模塊

返回被控主機網絡信息

client.cmd('*','network.ip_addrs')

9.pkg包管理模塊

被控主機程序包管理,如yum,apt-get等

client.cmd('*','pkg.remove',['php'])

10.service服務模塊

被控主機程序包服務管理

client.cmd('*','service.stop',['nginx'])

user(系統用戶模塊)

group(系統組模塊)

partiton(系統分區模塊)

puppet(puppet管理模塊)

system(系統重啓、關機模塊)

timezone(時區管理模塊)

nginx(Nginx管理模塊)

mount(文件系統掛載模塊)

相關文章
相關標籤/搜索