第一天研究了salt stack 完整筆記

開始學saltstack的時候是在現在一家做CDN加速的,同步下發的用到這個工具,下面我簡單介紹和操作給大家看下。

Salt 和 Puppet Chef 一樣可以讓你同時在多臺服務器上執行命令也包括安裝和配置軟件。Salt 有兩個主要的功能:配置管理和遠程執行。

Saltstack是一個大型分佈式的配置管理系統(安裝升級卸載軟件,檢測環境),也是一個遠程命令執行系統。通過c/s的模型實現。服務器端對遠程客戶機的操作:


一、Saltstack架構概述

Saltstack基於C/S架構,服務端master和客戶端minions ,其主要由以下部分組成:

wKioL1YfWSeAsktRAAIOmjpE1_s009.jpg


Saltstack的安裝配置

(1)兩組服務器進行,操作系統版本爲Centos release 6.4 ,RHEL 也可以。

(2)安裝這個先安裝下epel由於現在網絡RHEL官網yum源還沒有 saltstack的安裝包支持。因此先安裝epel作爲部署saltstack的默認yum源。

CenOs 5 版本:  rpm -Uvh 下載地址:http://ftp.linux.ncsu.edu/pud/epel/6/i386/epel-release-5-4.noarch.rpm     

CenOs 6 版本:  rpm -Uvh 下載地址:http://ftp.linux.ncsu.edu/pud/epel/6/i386/epel-release-6-8.noarch.rpm 

百度雲也可以去下載,我的是centos 64位的 http://pan.baidu.com/s/1eQGWboI

默認配置文件位於/etc/salt/master ,默認不需要更改該配置文件。master端有兩個端口需要在iptables上放行

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

  主機要添加被控機器的IP 和主機名

   192.168.2.81   test81.salt.cn

   192.168.2.83   test82.salt.cn

wKiom1YfXTzBEHq_AAB3pvUumJ8471.jpg

(1) 主服務器 (主控端) ip:192.168.2.11

#yum install -y salt-master     (安裝salt-master)

#chkconfig salt-master on     設置開機啓動

#service salt-master start     啓動salt服務

(2)從服務器安裝 (被控端)ip : 192. 168 . 2 .81

#yum install salt-minion -y (安裝salt-minion)

#chkconfig salt-master on  設置開機啓動

#service salt-master start  啓動salt服務

到這裏已經安裝完成。

 Saltstack 防火牆配置

  (1) 在主控端添加TCP 4505,TCP 4506 的規則,而在被控端無須配置防火牆,原理是被控端直接與主控端的zeromp建立鏈接。 接收

廣播道任務信息並執行,具體操作是添加兩條iptables規則:

-A INPUT -m state --state new -m tcp -p tcp --dport 4505 -j ACCEPT

-A INPUT -m state --state new -m tcp -p tcp --dport 4506 -j ACCEPT

spacer.gif部署要求:兩臺機器網絡互通,最好關閉防火牆。關閉selinux.

在啓動下服務。

Saltstack 配置及安裝效驗.

Saltsatack 分兩種,一種爲master (主控制),另一端爲minion (被控端),安裝完畢後需要對兩種角色的配置文件進行修改。

具體說明如下:

(1) master 主控端配置

 master: 服務端主機名

id: 客戶端主機名

配置文件注意格式統一

wKiom1YfhNzC-W4cAAA4UeNZIxk718.jpg

服務端配置

主控端基本設置
編輯配置文件 /etc/salt/master,修改如下所示配置項,去掉前面的註釋符

interface: 0.0.0.0
log_file: /var/log/salt/master      # 記錄主控端運行日誌
key_logfile: /var/log/salt/key      # 記錄認證證書日誌

客戶端配置

受控端基本設置
編輯配置文件 /etc/salt/minion,修改如下所示配置項,去掉前面的註釋符#

master: 192.168.23.21        # 設置主控端
IPid: ubuntu-server-001    # 設定受控端編號
log_file: /var/log/salt/minion  # 記錄受控端運行日誌
key_logfile: /var/log/salt/key  # 記錄認證證書日誌


三、認證

和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: Tru

檢測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,: 或 – 後面要有空格。(這裏被坑過)

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  


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