1、基礎概念及原理html
SaltStack 採用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間經過ZeroMQ消息隊列通訊。minion上線後先與master端聯繫,把本身的pub key發過去,這時master端經過salt-key -L命令就會看到minion的key,接受該minion-key後,也就是master與minion已經互信django
2、安裝:centos
準備工做:ide
1.安裝EPEL: rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpmspa
2.設置域名hosts文件#(固然能夠直接使用IP)orm
cat /etc/hosts
192.168.2.81 test81.salt.cn
192.168.2.82 test82.salt.cn
192.168.2.83 test83.salt.cn
Master:192.168.2.81server
Minion:192.168.2.82,192.168.2.83htm
Master端:blog
yum install salt-master隊列
配置文件:/etc/salt/master
端口:
4505(publish_port):salt 的消息發佈系統
4506(ret_port):salt 客戶端與服務端通訊的端口
啓動:
/etc/init.d/salt-master start
Minion端:
yum install salt-minion
配置文件:/etc/salt/minion
master: 服務端主機名
id: 客戶端主機名
配置文件注意格式統一
master:test81.salt.cn
id:test82.salt.cn
啓動服務:
/etc/init.d/salt-minion start
3、認證
和puppet同樣, salt 的 master 和 minions 是經過證書通訊的,故存在證書的信任頒發問題。
在master端:salt-key -L 查看當前須要接受的keys(master和minions都須要把服務開啓)
salt-key -a test82.salt.cn 接受test82.kktalk.cn的證書
salt-key -A #接受全部請求的證書
若是對客戶端信任,可讓master自動接受請求,在master端/etc/salt/master配置
auto_accept: True
檢測Master與兩個Minion通信是否正常:
出現 True 說明服務端到客戶端通訊正常,基礎環境搭建成功。
4、簡單例子
在minions端安裝httpd
配置 /etc/salt/master文件:
#file_roots Saltstack相關配置文件所有都在這個目錄下
file_roots:
base:
- /srv/salt
dev:
- /srv/salt/dev
默認沒有這個目錄,須要建立 建立目錄mkdir -p /srv/salt
Saltstack必需要有入口文件: /srv/salt/top.sls
Saltstack使用salt state system,它的核心是寫sls(SaLt State file)文件,sls文件默認格式是YAML格式(之後會支持XML),並默認使用jinja模板,YAML與XML相似,是一種簡單的適合用來傳輸數據的格式,而jinja是根據django的模板語言發展而來的語言,簡單並強大,支持for if 等循環判斷。salt state主要用來描述系統,軟性,服務,配置文件應該出於的狀態,經常被稱爲配置管理!
一般state,pillar,top file會用sls文件來編寫。state文件默認是放在/srv/salt中,它與你的master配置文件中的file_roots設置有關
注意:sls聽從YAML規範, 它使用到兩個空格代替tab,: 或 – 後面要有空格。(這裏被坑過)
[root@test81 salt]# cat top.sls
base: #file_roots定義base '*': #匹配全部主機
- dev.http #這裏調用/srv/salt/dev/目錄下面的http.sls文件
sls文件寫好之後,在master執行命令 salt 「test82.salt.cn」 state.highstate
出現Failed:0,表示執行成功(我上圖是已經執行成功過,再次執行)
在minions查看
[root@test82 ~]# rpm -qa|grep httpd
httpd-2.2.15-29.el6.centos.x86_64
httpd-tools-2.2.15-29.el6.centos.x86_64
httpd包已經安裝成功
若是要在minions端執行,須要執行命令: salt-call state.highstate