170SaltStack 運維通關手冊--SaltStack 架構和配置

Salt 組件

Salt Master歉嗓,中心管理系統(tǒng)。此系統(tǒng)用于將命令和配置發(fā)送到在受管系統(tǒng)上運行的 Salt minion。
Salt Minions贮预,被管理的系統(tǒng)。該系統(tǒng)運行 Salt minion,它從 Salt master 接收命令和配置仿吞。
Exection Modules滑频,從命令行針對一個或多個受管系統(tǒng)執(zhí)行臨時命令。 對以下管理場景有幫助:實時監(jiān)控唤冈,狀態(tài)和盤點峡迷;一次性命令和腳本;部署關鍵更新你虹。
States绘搞,一種系統(tǒng)配置的聲明性或命令式表示。
Grains傅物,系統(tǒng)變量夯辖。 Grains 是有關底層受管系統(tǒng)的靜態(tài)信息,包括操作系統(tǒng)董饰,內(nèi)存和許多其他系統(tǒng)屬性蒿褂。 您還可以為任何系統(tǒng)定義自定義 grains。
Pillar卒暂,用戶定義的變量啄栓。 這些安全變量被定義并存儲在 Salt Master 中,然后使用目標“分配”給一個或多個 minions介却。 pilla 數(shù)據(jù)存儲諸如端口谴供,文件路徑、配置參數(shù)和密碼之類的值齿坷。
Top File桂肌,將 states 和 pilla 數(shù)據(jù)與 Salt minions 匹配。
Runner永淌,在 Salt master 上執(zhí)行的模塊崎场,用于執(zhí)行支持任務。 Salt runners 報告作業(yè)狀態(tài)遂蛀、連接狀態(tài)谭跨、從外部 API 讀取數(shù)據(jù),查詢連接的 Salt minions 等李滴。例如螃宙,Orchestrate 運行器協(xié)調(diào)跨多個系統(tǒng)的配置部署。
Returners所坯,將 Salt minions 返回的數(shù)據(jù)發(fā)送到另一個系統(tǒng)谆扎,例如數(shù)據(jù)庫。 Salt Returners 可以在 Salt minion 或 Salt master 上運行芹助。
Reactor堂湖,在 SaltStack 環(huán)境中發(fā)生特定事件時觸發(fā)相應的響應闲先。
Salt SSH,在沒有部署 Salt minion 的系統(tǒng)上通過 SSH 運行 Salt 命令无蜂。

Salt 各組件的具體使用會在以后的文檔中逐步介紹伺糠。

Salt 架構模式

Salt 多種運行模式。
master less斥季,無 master 模式下训桶,salt 進行自管理。
agent less酣倾,無 minion 模式下進行遠程管理渊迁,類似 Ansible 。
c/s 灶挟,最常用模式,也會因 IT 架構衍生出 proxy 代理毒租、syndic 代理稚铣。

Salt 的配置文件默認位于 /etc/salt/,F(xiàn)reeBSD 系統(tǒng)例外墅垮,配置文件位于 /usr/local/etc/salt惕医。

Salt Agentless 模式,無 minion 運行

Salt 可以在遠程主機沒有安裝 minion 的情況下通過 salt-ssh 命令調(diào)用 ssh 連接并操作遠程服務器算色。
在這種情況下抬伺,salt-master 進程也無需啟動。
在藍橋云課環(huán)境下灾梦,我們使用了 pip3 進行安裝峡钓,所以無需單獨安裝 salt-ssh。如果使用 yum 或者 apt 方式安裝若河,需要額外進行 yum install salt-ssh 或者 apt install salt-ssh 安裝模塊能岩。
agentless 模式運行流程
通過 SSH 連接到遠程系統(tǒng)。
將 Salt 的瘦版本 agent 部署到臨時目錄萧福,包括任何必需的文件拉鹃。
運行指定的命令。
(可選)清理臨時目錄鲫忍。

Agentless 模式下運行 Salt膏燕,依賴 ssh 進行連接,所以執(zhí)行效率會低于 C/S 模式悟民。
roster 文件
默認情況下坝辫,Salt 使用 YAML 文件來存儲 agentless 系統(tǒng)的連接細節(jié),稱為 roster(字面含義為名冊)逾雄。
一個基本的 roster 文件包含一個 ID阀溶,一個主機和一個用戶的信息:

# 文件格式類似如下
ID:
  host: [IP or DNS name]
  user: [username]

修改 master 配置文件
編輯文件:/etc/salt/master腻脏,添加如下內(nèi)容:

# master必須通過SSH去連接訪問minion,roster 配置文件用來保存主機信息
roster_file: /etc/salt/roster
# salt-ssh 操作的日志文件银锻,如果沒有 /etc/salt/log 目錄永品,請手動創(chuàng)建
# ssh_log_file: /etc/salt/log/salt-ssh.log

# salt-ssh 提供默認參數(shù)
roster_defaults:
  user: root
  sudo: True

# 使用 user home 目錄下的key進行登錄認證
ssh_use_home_key: True

# 指定 Salt 文件服務的根目錄,調(diào)用時使用 salt://
file_roots:
  base:
    - /etc/salt/srv/salt/base

創(chuàng)建 file_roots 目錄:

mkdir -p /etc/salt/srv/salt/base

Roster 配置主機信息
文件路徑 /etc/salt/roster击纬。

Group1: # 組名
  host: localhost # 主機地址
  user: root # 登錄用戶名
  priv: /root/.ssh/id_rsa # 使用私鑰

測試前鼎姐,需要先 生成免密登錄的私鑰。

mkdir ~/.ssh
# 生成私鑰文件
ssh-keygen -t rsa -N '' -f ~/.ssh/id_rsa -q
# 復制文件
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys

測試 salt-ssh 操作更振,發(fā)送 ping 命令炕桨。

salt-ssh '*' test.ping -i

注意:第一次執(zhí)行 ssh 操作,需要 -i 參數(shù)肯腕,否則會因 known_hosts 問題報錯献宫。

image.png

salt-ssh 調(diào)用 state 組件
state 組件描述了目標服務器該保持狀態(tài),調(diào)用該組件去連接服務器安裝 state 描述的方案進行操作实撒。
新建文件:/etc/salt/srv/salt/base/redis.sls姊途。

# 該 sls 文件聲明遠程服務器應該安裝 python-redis模塊,安裝并啟動 redis
# 文件具體格式及聲明方式后續(xù)文檔會詳細講解知态,現(xiàn)在只是測試 salt-ssh 功能
redis: pip.installed

redis-server:
  pkg:
    - installed
  service.running:
    - require:
        - pkg: redis-server

執(zhí)行命令捷兰。

# 參數(shù) redis,salt 會查找 file_roots 目錄下對應同名的 .sls
salt-ssh '*' state.apply redis -i
image.png

Salt masterless负敏,無 master 環(huán)境贡茅,獨立運行 minion

在 Salt 的無 master 環(huán)境下,minion 可以執(zhí)行的任務其做。
在系統(tǒng)上使用 salt-call 命令而不與主機連接顶考。
無 Master 的 states 管理,完全從當?shù)氐奈募\行 states妖泄。

在無 master 模式下運行 Salt 時村怪,請勿運行 salt-minion 守護進程。 否則浮庐,它將嘗試連接到 Master 并失敗甚负。
salt-call 命令是獨立的,不需要 salt-minion 守護進程审残。
salt-call 使用

salt-call test.ping --local

salt-call 命令調(diào)用 salt-call梭域。
test.ping 其中 test 為模塊名稱,ping 為模塊下功能名稱搅轿。
--local 指定為本地調(diào)用病涨。


image.png

如果在無 master 環(huán)境中使用 states 模塊,需要在 /etc/salt/minion 文件配置 file_roots 參數(shù)璧坟。

file_roots:
  base:
    - /etc/salt/srv/salt/base

執(zhí)行命令

salt-call state.apply redis --local

藍橋云課環(huán)境為 Docker 既穆,系統(tǒng)自帶的服務管理模塊無法使用赎懦,命令執(zhí)行會有錯誤輸出,但不會影響服務啟動幻工。
如果不想每次執(zhí)行指定 --local励两,可以修改 /etc/salt/minion 文件,將 file_client 修改為 local囊颅。

# file_client: local
# 該參數(shù)默認為 remote当悔,修該為 local
# salt 主要使用 c/s 架構,考慮到參數(shù)的影響踢代,非必要參數(shù)大家不要修改

Salt C/S 架構

salt c/s 架構是最常用的盲憎,在該種模式下,salt 可以對上萬臺服務器進行部署和管理胳挎。以后的文檔內(nèi)容基本也將圍繞 c/s 模式展開饼疙。

master 配置

以下是基本的 master 配置項,其余更多項目參數(shù)會在具體章節(jié)中使用慕爬。
interface
服務將要綁定的本地網(wǎng)絡接口宏多,必須是 IP 地址。

interface: 0.0.0.0

publish_port
設置消息發(fā)布接口使用的網(wǎng)絡端口澡罚。

publish_port: 4505

master_id
在發(fā)布作業(yè)中傳遞給 minions 的 master id。 這用于 MultiSyndics 將作業(yè)返回給正確的發(fā)出請求的 master 服務器肾请。

master_id: MasterOfMaster

注意:如果還使用到了 syndic 服務留搔,則這必須與配置 syndic 的字符串相同。
user
用來運行 salt master 進程的系統(tǒng)用戶铛铁。

user: root

ret_port
數(shù)據(jù)返回服務使用的端口隔显,這是 Salt 用來接收執(zhí)行返回數(shù)據(jù)和命令執(zhí)行數(shù)據(jù)的服務。

ret_port: 4506

pki_dir
存放 pki 密鑰的目錄饵逐。

pki_dir: /etc/salt/pki/master

auto_accept
自動接受所有 minion 的認證請求括眠,默認為 False 。

auto_accept: False

keep_jobs
設置保留舊作業(yè)信息的小時數(shù)倍权。 請注意掷豺,將此選項設置為 0 會禁用緩存清理程序。

keep_jobs: 24

以上是 salt-master 配置文件中常見的幾個薄声,后續(xù)如果有更多需要修改当船,我們會單獨提到。

minion 配置

以下是基本的 minion 配置項默辨,其余更多項目參數(shù)會在具體章節(jié)中使用德频。
master
指定 master 服務器地址

master: 127.0.0.1
# 多master環(huán)境可以指定 master 列表
master:
  - address_1
  - address_2

master_type
定義 master 的服務類型, 可以是 str, failover, func 或者 disable.
如果此選項設置為故障轉移缩幸,則 master 選項必須定義為一個 master 服務地址的列表壹置。 然后竞思,minion 將會按照列表中指定的順序嘗試每個 master,直到它成功連接钞护。 還必須設置 master_alive_interval盖喷,這決定了 minion 將驗證 master 的存活的頻率。

master_type: failover

master_port
指定 master 服務的端口患亿,注意這需要與 Salt Master 服務器上的 ret_port 選項一致传蹈。

master_port: 4506

publish_port
指定 master 發(fā)布服務器的端口,這需要與 Salt master 上的 publish_port 選項一致步藕。

publish_port: 4505

root_dir
此目錄將會被預先附加到以下選項的前面:pki_dir惦界,cachedir,log_file咙冗,sock_dir 和 pidfile沾歪。

root_dir: /

pki_dir
指定存放 minion 的公私密鑰的路徑。

pki_dir: /etc/salt/pki/minion

id
明確聲明此 minion 使用的 id雾消。 由于 Salt 使用分離的 id灾搏,因此可以在同一臺機器上運行多個 minions 但具有不同的 id。

id: shiyanlou

minion_id_caching
當 minion 配置中沒有靜態(tài)定義 minion 的 id 時立润,將 minion id 緩存到文件中狂窑。 當從系統(tǒng)中自動獲取 minion id 的方案改變時,此設置可防止?jié)撛趩栴}桑腮,這可能導致 minion 失去與 master 的連接泉哈。 要關閉 minion id 緩存,請將此配置設置為 False破讨。

minion_id_caching: True

grains
靜態(tài)地為 minions 定義一些 grains 變量丛晦。

grains:
  roles:
    - webserver
    - memcache
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市提陶,隨后出現(xiàn)的幾起案子烫沙,更是在濱河造成了極大的恐慌,老刑警劉巖隙笆,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锌蓄,死亡現(xiàn)場離奇詭異,居然都是意外死亡撑柔,警方通過查閱死者的電腦和手機煤率,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乏冀,“玉大人蝶糯,你說我怎么就攤上這事×韭伲” “怎么了昼捍?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵识虚,是天一觀的道長。 經(jīng)常有香客問我妒茬,道長担锤,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任乍钻,我火速辦了婚禮肛循,結果婚禮上,老公的妹妹穿的比我還像新娘银择。我一直安慰自己多糠,他們只是感情好,可當我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布浩考。 她就那樣靜靜地躺著夹孔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪析孽。 梳的紋絲不亂的頭發(fā)上搭伤,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天,我揣著相機與錄音袜瞬,去河邊找鬼怜俐。 笑死,一個胖子當著我的面吹牛邓尤,可吹牛的內(nèi)容都是我干的拍鲤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼裁赠,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了赴精?” 一聲冷哼從身側響起佩捞,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蕾哟,沒想到半個月后一忱,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡谭确,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年帘营,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逐哈。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡芬迄,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昂秃,到底是詐尸還是另有隱情禀梳,我是刑警寧澤杜窄,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站算途,受9級特大地震影響塞耕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嘴瓤,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一扫外、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧廓脆,春花似錦筛谚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至瞎嬉,卻和暖如春蝎毡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背氧枣。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工沐兵, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人便监。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓扎谎,卻偏偏與公主長得像,于是被迫代替她去往敵國和親烧董。 傳聞我的和親對象是個殘疾皇子毁靶,可洞房花燭夜當晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • saltstack 介紹 Salt 的定位一個配置管理系統(tǒng),能夠將遠程節(jié)點維護在一個預定義的狀態(tài)(例如逊移,確保安裝特...
    Jachin111閱讀 475評論 0 1
  • saltstack介紹 關于Saltstack的介紹预吆,簡單一句話:整合了Puppet和 Chef的功能,更加強大胳泉,...
    bdslinux閱讀 2,890評論 0 2
  • 一拐叉、初識運維 運維都做哪些事?1.機房設備上下架2.系統(tǒng)初始化3.應用環(huán)境初始化4.應用的部署 調(diào)試 配置 ...
    清風徐來_簡閱讀 2,078評論 0 2
  • 一扇商、saltstack是什么凤瘦? saltstack是一個開源異構平臺基礎設置管理工具。 二案铺、saltstack能干...
    小寶瓜閱讀 1,254評論 0 1
  • SaltStack 1. 什么是SaltStack 是基于Python開發(fā)的一套C/S架構配置管理工具(不僅僅是配...
    小寧靜致遠閱讀 1,393評論 0 0