1. 程式人生 > >Saltstack 安裝配置 及 簡單操作示例

Saltstack 安裝配置 及 簡單操作示例

服務器 信任 accep 客戶服務 通過 角色 提高 cmd.run 範圍

Saltstack 介紹

通過部署 Saltstack環境,可以在成千上萬臺服務器上批量執行命令。對於不同的業務進行集中管理、分發文件、采集數據、軟件包管理等,有利於運維人員提高工作效率,規範業務配置和操作。

Saltstack由 Master和 Minion構成, Master是服務端,表示一臺服務器; Minion
是客戶服務端,表示多臺服務器。在 Master上發送命令給符合條件的 Minion, Minion
就會執行相應的命令, Master和 Minion之間是通過 Zeromq(消息隊列)進行通信的。

Saltstack的 Master端監聽4505與4506端口,4505為 Master和 Minion認證通信端口,4506為 Master用來發送命令或者接收 Minion的命令執行返回信息。

當客戶端啟動後,會主動連接Master端註冊,然後一直保持該TCP連接,而Master通過這條TCP連接對客戶端進行控制。如果連接斷開, Master對客戶端將不能進行控制。但是,當客戶端檢查到連接斷開後,會定期向 Master端請求註冊連接。

saltstack安裝

本篇安裝一臺master服務器 (192.168.100.101)
以及兩臺 minion服務器 (192.168.100.102 192.168.100.103)

分別修改各自的主機名
vim /etc/hostname

master服務器: master.saltstack.com
minion服務器: web01.saltstack.com
               web02.saltstack.com

並配置主機文件 (三臺都需要配置)
vim /etc/hosts

192.168.100.101 master.saltstack.com
192.168.100.102 web01.saltstack.com
192.168.100.103 web02.saltstack.com

配置完成 重啟生效

------------在 master服務器上-----------
yum install epel-release -y     ##配置epel源

yum install salt-master -y    安裝主服務器

vim /etc/salt/master

interface: 192.168.100.101      ##第15行,修改監聽地址為本機地址

auto_accept: True     ##第215行,主服務器會自動認證被控端的認證,只要被控端在設置完主服務器的IP地址後啟動服務,主服務器就會允許被控端自動認證,以避免以後每次都要運行salt-key來確認認證書信任。

file_roots:
  base:
    - /srv/sale
##第416行,去掉註釋。開啟saltstack文件根目錄位置,註意這個目錄默認沒有創建,需要自己手動創建。

nodegroups:
  group1: ‘web01.saltstack.com‘
  group2: ‘web02.saltstack.com‘
##第710行,配置組分類

pillar_opts: True    ##第552行,開啟pillar功能,同步文件功能

pillar_roots:
    base:
     - /srv/pillar  
##第529行,去掉註釋,pillar的主目錄,需要自己創建

接下來就是創建salt與pillar文件根目錄
mkdir /srv/salt
mkdir /srv/pillar

systemctl start salt-master
systemctl enabled salt-master

-------------在 minion服務器上(兩臺一樣) ------------------
yum install epel-release -y     ##配置epel源

yum install salt-minion -y    

vim /etc/salt/minion

master: 192.168.100.101     ##第16行,指定主服務器的IP

id: web01.saltstack.com    ##第78行,指定被控端主機名

systemctl start salt-minion

-----------安裝完成----------------------

在主服務器端進行操作

salt ‘*‘ test.ping         ##測試連接

web01.saltstack.com:
  True
web02.saltstack.com:
  True
## 說明配置成功

* 代表所有服務器,如需指定某一臺,換成該服務器的主機名

salt ‘*‘ cmd.run ‘xxx‘    ##遠程執行命令

salt-key     ##查看在主服務器上已經被接受過的客戶端

salt ‘*‘ grains.items   ##查看被控端上grains所有值(靜態數據)
salt ‘*‘ pillar.items     ##查看被控端上pillar所有值(動態數據)

grains和 pillar都是采集被控端數據的,但是 grains的特性在每次啟動後匯報,沒有pillar靈活,要知道 pillar是隨時可變的,只要在master端修改了,一般都會立刻生效。所以 grains更適合做一些靜態的屬性值的采集,例如設備的角色、磁盤個數等諸如此類非常固定的屬性。那麽我們就可以得到一個大致的判斷,如果你想定義的屬性值是經常變化的,就采用pillar:如果很固定、不易變,就采用 grains。

示例

通過saltstack遠程安裝apache

mkdir /srv/salt      ##配置文件中需要開啟
vim /srv/salt/top.sls     ##創建入口文件,入口文件的作用是定義pillar 的數據覆蓋被控主機的有效範圍
base:
  ‘*‘:
    - apache

vim /srv/salt/apache.sls
apache:          ##這裏是自定義的名稱
  pkg.installed:        ##安裝包
    - names:
      - httpd
      - httpd-devel
  service.running:
    - name: httpd
    - enable: True

systemctl restart salt-master

salt ‘*‘ state.highstate    ##執行並刷新state配置命令

這樣就可遠程安裝apache服務了

Saltstack 安裝配置 及 簡單操作示例