您好,登錄后才能下訂單哦!
這篇文章的知識點包括:saltstack的簡介、saltstack的工作原理、saltstack的安裝配置以及saltstack的使用,閱讀完整文相信大家對saltstack工具有了一定的認識。
在生產(chǎn)環(huán)境中,服務器往往不止一兩臺,一般都是成千上萬臺服務器。這對運維人員來說管理難度太大了,而saltstack是一個新的基礎平臺管理工具,可以支持管理上萬臺服務器規(guī)模,數(shù)秒鐘即可完成數(shù)據(jù)傳遞,是現(xiàn)在用的比較多的自動化運維工具之一。
Salt是一個基礎平臺管理工具。SaltStack采用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ消息隊列通信。master監(jiān)聽4505和4506端口,4505為master和minion認證通信端口,4506為master用來發(fā)送命令或者接收minion的命令執(zhí)行返回信息。
1、基于python語言開發(fā)的
2、輕量級管理工具,批量執(zhí)行命令
3、常用模板
名稱 | 含義 |
---|---|
pkg | 包,有增刪更新 |
file | 用于管理文件,包括同步文件、設置文件權限和所屬用戶組、刪除文件等操作 |
cmd | 在minion上執(zhí)行命令或者腳本 |
use | 管理系統(tǒng)賬戶操作 |
service | 管理系統(tǒng)服務操作 |
cron | 管理crontab任務 |
4、saltstack數(shù)據(jù)系統(tǒng)
Grains(靜態(tài)數(shù)據(jù))
遠程執(zhí)行
配置管理
SaltStack客戶端(Minion)在啟動時,會自動生成一套密鑰,包含私鑰和公鑰。之后將公鑰發(fā)送給服務器端,服務器端驗證并接受公鑰,以此來建立可靠且加密的通信連接。同時通過消息隊列ZeroMQ在客戶端與服務端之間建立消息發(fā)布連接。
Minion是SaltStack需要管理的客戶端安裝組件,會主動去連接 Master端,并從Master端得到資源狀態(tài)信息,同步資源管理信息。
Master作為控制中心運行在主機服務器上,負責Salt命令運行和資源狀態(tài)的管理,Master上執(zhí)行某條指令通過隊列下發(fā)到各個Minions去執(zhí)行,并返回結果。
速度快,基于消息隊列+線程,跑完多臺設備,都是毫秒級別的;非常靈活,源碼是python,方便理解和自定義模塊(因為python相對于其他的perl、ruby等還是很好理解的)
命令簡單,功能強大。
部署minion端較為不便。
grains是在minion(客戶端)啟動時收集到的一些信息,比如操作系統(tǒng)類型、網(wǎng)卡ip等靜態(tài)信息。
grains 的信息并不是動態(tài)的,并不會時時變更,它只是在 minion 啟動時收集到的。
pillar和grains不一樣,是在master上定義的,并且是針對minion定義的一些信息。像一些比較重要的數(shù)據(jù)(密碼)可以存在pillar里,還可以定義變量等。
state是saltstack的最核心的功能,通過預先指定好的sls文件對 被控主機進行管理(包括:包、網(wǎng)絡配置、系統(tǒng)服務、系統(tǒng)用戶等)
salt 'client2' cp.get_file salt:#apache.sls /tmp/cp.txt
salt 'client2' cp.get_dir salt:#test /tmp
salt-run manage.up
#編輯腳本
vim /srv/salt/test/shell.sh
#! /bin/sh
echo "salt server do run shell script on client" > /tmp/shell.txt
#執(zhí)行腳本
salt 'client2' cmd.script salt:#test/shell.sh
準備三臺機器,這三臺機器都關閉selinux,清空防火墻規(guī)則。
服務器角色 | IP地址 | 主機名稱 |
---|---|---|
master | 192.168.142.123 | master.saltstack.com |
minion01 | 192.168.142.124 | web01.saltstack.com |
minion02 | 192.168.142.166 | web02.saltstack.com |
#分別為三臺機器添加epel源,本地有官方源
yum install -y epel-release #安裝epel源
#服務器安裝
yum -y install salt-master
#安裝完成修改主配置文件
vim /etc/salt/master
#修改如下內(nèi)容
#15行
interface: 192.168.175.132 #監(jiān)聽地址
#215行
auto_accept: True #避免要運行salt-key來確認證書認證
#416行
file_roots:
base:
- /srv/salt #saltstack文件根目錄位置,目錄需要創(chuàng)建
#710行組分類
nodegroups:
group1: 'web01.saltstack.com'
group2: 'web02.saltstack.com'
#552行 pillar_opts: True #開啟pillar功能,同步文件功能
#529行
pillar_roots:
base:
- /srv/pillar #pillar的主目錄,需要創(chuàng)建
cat /etc/salt/master | grep -v ^$ | grep -v ^# #查看對主配置文件做的更改
#開啟服務
systemctl start salt-master
#設定服務開機自啟
systemctl enable salt-master
#查看服務端口監(jiān)聽狀態(tài)
netstat -anpt | egrep '4505|4506'
mkdir /srv/salt
mkdir /srv/pillar
#在兩臺服務器上分別安裝
yum -y install salt-minion
#修改/etc/salt/minino主配置文件
vim /etc/salt/minion
#修改配置如下
#16行
master: 192.168.175.132 #指定主控端IP
#78行
id: web01.saltstack.com #指定被控端主機名
啟動被控端服務
systemctl start salt-minion
#查看通信狀態(tài)
salt '*' test.ping
#查看所有被管理端的掛載狀態(tài)
salt '*' cmd.run 'df -h'
#查看在 master 上已經(jīng)被接受過的客戶端
salt-key
#查看被控主機上grains所有值(每次minion在啟動是都會獲取客戶端信息)
#靜態(tài)數(shù)據(jù)
salt 'web01.saltstack.com' grains.items
#動態(tài)數(shù)據(jù)
salt 'web01.saltstack.com' pillar.items
#修改主配置文件
vim /etc/salt/master
file_roots:
base:
- /srv/salt/
#注意:環(huán)境:base、dev(開發(fā)環(huán)境)、test(測試環(huán)境)、prod(生產(chǎn)環(huán)境)。
#創(chuàng)建工作目錄
mkdir /srv/salt
vim /srv/salt/top.sls
base:
'*':
- apache
#注意:'*',則表示在所有的客戶端執(zhí)行apache模塊。
vim /srv/salt/apache.sls
apache-service:
pkg.installed:
- names: # 如果只有一個服務,那么就可以寫成–name: httpd不用再換一行
- httpd
- httpd-devel
service.running:
- name: httpd
- enable: True
#注意:apache-service是自定義的id名。pkg.installed為包安裝函數(shù),下面是要安裝的包的名字。service.running也是一個函數(shù),來保證指定的服務啟動,enable表示開機啟動。
#重啟服務
systemctl restart salt-master
#執(zhí)行刷新state配置命令
salt '*' state.highstate
#查看服務端口監(jiān)聽狀態(tài)
netstst -ntap | grep 80
#查看生成的配置文件
rpm -qc httpd
以上就是saltstack的詳細內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關內(nèi)容,歡迎關注億速云行業(yè)資訊!
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。