部署SaltStack及批量安裝httpd服務

Salt是一個基礎平臺管理工具。SaltStack 採用 C/S模式,server端就是salt的master,client端就是minion,minion與master之間通過ZeroMQ消息隊列通信。master監聽4505和4506端口,4505爲master和minion認證通信端口,4506爲master用來發送命令或者接收minion的命令執行返回信息。

官網docs.saltstack.com


SaltStack常用模塊

pkg模塊是包管理,包括增刪更新。
file模塊管理文件操作,包括同步文件、設置文件權限和所屬用戶組、刪除文件等操作。
cmd模塊是在Minion上執行命令或者腳本。
user模塊管理系統賬戶操作。
service模塊管理系統服務操作
cron模塊管理cron服務操作


Saltstack工作機制

• MasterMinion都以守護進程的方式運行

 

• Master監聽配置文件裏定義的ret_port(接收minion請求),publish_port(發佈消息)的端口

 

Minion運行時,它會自動連接到配置文件裏定義的Master地址ret_port端口進行連接認證

 

MasterMinion可以正常通信後,就可以進行各種各樣的配置管理工作了




操作篇

操作環境:

192.168.80.181Master

salt-master salt-minion

192.168.80.182Minion salt-minion
192.168.80.183Minion salt-minion

注:三臺都是NAT模式

----


1 修改主機名

hostnamectl set-hostname  master.saltstack.com  

hostnamectl set-hostname  web01.saltstack.com

hostnamectl set-hostname  web02.saltstack.com

init 6 重啓生效

修改/etc/hosts文件(3臺都做)

192.168.80.181 master.saltstack.com

192.168.80.182 web01.saltstack.com

192.168.80.183 web02.saltstack.com


3  安裝

systemctl stop firewalld && setenforce 0

yum install -y epel-release 

服務器:

      yum -y install salt-master salt-minion

客戶端:

      yum -y install salt-minion

服務端和客戶端配置

vi /etc/salt/minion


修改配置如下

16 master: 192.168.80.181     //指定主控端IP

78 id: web01.saltstack.com     //指定被控端主機名

改成相應的主機名


5 啓動被控端服務

systemctl start salt-minion

systemctl start salt-master


6 認證

salt-key -L  查看待認證的服務器

Accepted Keys:認證通過

Denied Keys:舊的的認證

Unaccepted Keys:等待認證

Rejected Keys:拒絕認證




手動添加認證

認證的方式是salt-key -a 客戶端id

salt-key -a  web01

salt-key -a  web02

salt-key -a  master

說明:-a :accept ,-A:accept-all,-d:delete,-D:delete-all。可以使用 salt-key 命令查看到已經簽名的客戶端此時我們在客戶端的 /etc/salt/pki/minion 目錄下面會多出一個minion_master.pub 文件


salt-key  -L


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

salt '*' test.ping

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

salt-key   //查看在 master 上已經被接受過的客戶端





Saltstack幾個重要的組件

grains

grains 是在 minion(客戶端啓動時收集到的一些信息比如操作系統類型網卡ip等靜態信息

grains的信息並不是動態的並不會時時變更它只是在 minion 啓動時收集到的

 

pillar

pillar  grains 不一樣是在 master 上定義的並且是針對 minion 定義的一些信息像一些比較重要的數據密碼可以存在 pillar 還可以定義變量等

 

State

他是saltstack的最核心功能通過預先指定好的sls文件對被控主機進行管理/文件/網絡配置/系統服務/系統用戶等



master服務器

vi /etc/salt/master 

file_roots:                    //416

 

   base:

 

      - /srv/salt           //saltstack文件根目錄位置目錄需要創建

 

nodegroups:                //710行組分類

 

  group1: 'web01.saltstack.com'

 

  group2: 'web02.saltstack.com'  

 

pillar_opts: True          //552,開啓pillar功能

 

pillar_roots:              //529

 

       base:

 

       - /srv/pillar       //pillar的主目錄需要創建


cat /etc/salt/master | grep -v ^$ | grep -v ^#      //查看對主配置文件做的更改



systemctl restart salt-master

netstat -anpt | egrep '4505|4506'


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

salt 'master' grains.ls      // 列出所有的 grains 項目名字

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

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






配置管理安裝Apache

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

修改配置文件

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


vi /srv/salt/top.sls


 base:
 
  '*':
     - apache


vi /srv/salt/apache.sls

apache-service:
  pkg.installed:
    - names:
      - httpd
      - httpd-devel
  service.running:
    - name: httpd
    - enable: True


注意:apache-service 是自定義的 id 。pkg.installed 爲包安裝函數下面是要安裝的包的名字。service.running 也是一個函數來保證指定的服務啓動,enable 表示開機啓動


重啓服務

systemctl restart salt-master

執行命令

salt 'web01.saltstack.com' state.highstate  

image.png

image.png

 

並且被控端已經運行了httpd服務

image.png



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