自動化運維之SaltStack

在生產環境中,服務器往往不只一臺,有可能是成千上萬臺。對於運維人員來說,如果單獨對每一臺服務器進行管理,工作難度實在是太大了。SaltStack是一個服務器基礎設施管理工具,它具有配置管理,遠程執行,監控等功能。SaltSack有Python語言編寫,是非常簡單易用和輕量級的管理工具

SaltStack原理

  1. SaltStack由Master和Minion構成,master是服務端,表示一臺服務器;minion是客戶服務端,表示多臺服務器。在master上發送命令給minion,minion就會執行相應的命令。master與minion之間是通過ZeroMQ(消息隊列)進行通信的。

  2. SaltStack的master端監聽4505與4506端口,4505爲master和minion認證通信端口,4506爲master用來發送命令或者接受minion的命令執行返回信息。

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

SaltStack常用模塊

SaltStack提供了非常多的功能模塊,以便於對操作系統的基礎功能和常用工具的操作

(1)pkg模塊

pkg模塊的作用是包管理,包括增刪更新

(2)file模塊

file模塊的作用是管理文件操作,包括同步文件,設置文件權限和所屬用戶組,刪除文件等操作

(3)cmd模塊

cmd模塊的作用是在minion上執行命令或者腳本

(4)user模塊

user模塊的作用是管理系統帳號操作

(5)service模塊

service模塊的作用是管理系統服務操作

(6)cron模塊

cron模塊的作用是管理cron服務操作

部署環境介紹

角色主機名IP
master
master.saltstack.com192.168.195.147
minionweb01.saltstack.com192.168.195.167
minionweb02.saltstack.com192.168.195.168

SaltStack安裝部署

修改三臺服務器主機名

hostnamectl set-hostname master.saltstack.com       //在master修改

hostnamectl set-hostname web01.saltstack.com       

hostnamectl set-hostname web02.saltstack.com

修改三臺hosts文件(內容相同)

vim /etc/hosts

192.168.195.147 master.saltstack.com

192.168.195.167 web01.saltstack.com

192.168.195.168 web02.saltstack.com


init 6      //分別重啓系統 讓各主機名生效

安裝saltstack

重啓之後將三臺服務器的防火牆關閉,selinux功能關閉

systemctl stop firewalld.service

setenforce 0

分別爲三臺機器添加epel源,本地有官方源

yum install epel-release -y     #安裝epel源

master上安裝saltsatck服務端

yum install salt-master -y      #安裝 master salt 服務

安裝好之後修改配置文件

vim /etc/salt/master

第15行

interface: 192.168.195.147    # master 監控地址

第215行

auto_accept: True    #開啓  避免要運行salt-key來確認證書認證,自動授權同意

第416行

file_roots:                #開啓saltstack文件根目錄位置,存放文件

  base:

    - /srv/salt            #默認文件夾不存在,需要創建

第710行529GG

nodegroups:

  group1: 'web01.saltstack.com'        #指定被控制服務器主機名

  group2: 'web02.saltstack.com'

第552行

pillar_opts: True    #開啓pillar功能   

第529行

pillar_roots:        #pillar的主目錄,存放動態信息

  base:

    - /srv/pillar    #默認文件夾不存在,需要創建

1.png2.png3.png4.png5.png

6.png


mkdir /srv/salt      #創建

mkdir /srv/pillar

cat /etc/salt/master | grep -v ^$ | grep -v ^#   #查看配置文件修改內容

7.png


systemctl start salt-master.service   #開啓服務

netstat -antp | egrep '4505|4506'    #查看 4505 4506 端口是否打開

8.png

被管理端minion上的部署配置

兩臺minion上安裝saltstack客戶端

yum -y install salt-minion          #安裝 minion salt 服務

安裝好之後修改配置文件

vim /etc/salt/minion

第16行

master: 192.168.195.147    #指向 master IP地址

9.png

第78行

和master配置文件中節點服務器名稱統一 

id:web01.saltstack.com     #節點一上修改 

id:web02.saltstack.com       #節點二上修改

10.png11.png

啓動被監控主機服務

systemctl start salt-minion.service     

在監控端master查看管理的主機

salt-key list   #查看被控主機

12.png

在主控端測試與被控端的通信狀態!

salt '*' test.ping      測試與被管理端是否網絡連通

13.png

salt '*' cmd.run 'df -h'   //遠程執行命令

14.png

查看被控主機上grains所有值:(每次minion在啓動是都會獲取客戶端信息)

salt 'web01.saltstack.com' grains.items (靜態數據)

salt 'web01.saltstack.com' pillar.items  (動態數據)

配置管理安裝Apache

下面進行的演示是遠程通過 yum 方式安裝 Apache。步驟如下:

修改配置文件

vi /etc/salt/master     // 打開如下內容的註釋

file_roots:

  base:

    - /srv/salt/

19.png

注意:環境: base、dev(開發環境)、test(測試環境)、prod(生產環境)

vi /srv/salt/top.sls

base:

  '*':

    - apache

注意:'*',則表示在所有的客戶端執行 apache 模塊。

20.png

vi /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 爲包安裝函數,下面是要安裝的包的名字。service.running 也是一個函數,來保證指定的服務啓動,enable 表示開機啓動。

21.png

重啓服務

systemctl restart salt-master

執行命令

salt '*' state.highstate 

15.png16.png

在minion上查看apache服務是否安裝成功

17.png18.png



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