saltstack入門介紹




一、基礎概念及原理




    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已經互信






二、安裝:

準備工作:

1.安裝EPEL: rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm


2.設置域名hosts文件#(當然可以直接使用IP)

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.81

Minion:192.168.2.82,192.168.2.83



Master端:

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



三、認證


和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 說明服務端到客戶端通信正常,基礎環境搭建成功。



四、簡單例子


在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  


轉自:http://blog.cunss.com/?p=255

官方文檔:https://docs.saltstack.com/en/latest/topics/index.html 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章