1. 程式人生 > >CentOS7 下SaltStack部署

CentOS7 下SaltStack部署

wing 線程 運行 salt -m amp 監聽端口 參考 command

一,概念
SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,一般可以理解為簡化版的puppet和加強版的func。SaltStack基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。
通過部署SaltStack環境,我們可以在成千上萬臺服務器上做到批量執行命令,根據不同業務特性進行配置集中化管理、分發文件、采集服務器數據、操作系統基礎及軟件包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。
二,saltstack工作原理
salt-master服務啟動後會開啟兩個端口:4505和4506,minion沒有端口,通過“雙向密鑰交換”(可通過tree /etc/salt/pki命令查看)來實現安全管理。salt-master每執行一條命令,所有minion均可收到,但只要指定的minion進行應答。

[root@linux-node1 salt]# lsof -n -i:4505
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 11289 root   13u  IPv4  58611      0t0  TCP 192.168.56.11:4505 (LISTEN)
salt-mast 11289 root   15u  IPv4  61320      0t0  TCP 192.168.56.11:4505->192.168.56.12:50292 (ESTABLISHED)
salt-mast 11289 root   16u  IPv4  69915      0t0  TCP 192.168.56.11:4505->192.168.56.11:59634 (ESTABLISHED)
salt-mini 14050 root   25u  IPv4  69914      0t0  TCP 192.168.56.11:59634->192.168.56.11:4505 (ESTABLISHED)

由此可以看到,所有的minion都與master通信,而回復的時候,master則使用4506端口

[root@linux-node1 salt]# lsof -n -i:4506
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 11301 root   21u  IPv4  58619      0t0  TCP 192.168.56.11:4506 (LISTEN)
salt-mast 11301 root   28u  IPv4  61319      0t0  TCP 192.168.56.11:4506->192.168.56.12:52042 (ESTABLISHED)
salt-mast 11301 root   29u  IPv4  69847      0t0  TCP 192.168.56.11:4506->192.168.56.11:35406 (ESTABLISHED)
salt-mini 14050 root   14u  IPv4  69846      0t0  TCP 192.168.56.11:35406->192.168.56.11:4506 (ESTABLISHED)


三,運行方式
- local 本地運行
- Master/Minion  服務端/agent方式
- Salt SSH 不需要安裝agent

四,安裝

環境:
系統: CentOS7
主機:
saltstack-master 192.168.56.11
saltstack-minion 192.168.56.12

五,安裝epel yum源
yum -y install epel-release 
yum clean all 
yum makecache

六,安裝 saltstack-master
saltstack-master 安裝:yum -y install salt-master salt-minion

1.配置: 修改 salt-master 本身監聽地址(註:配置文件內不允許TAB鍵)
  vim /etc/salt/master 
  添加如下行:
  interface: 192.168.56.11


2. 配置:指定salt-master地址(註:配置文件內不允許TAB鍵)
   vim /etc/salt/minion
  添加如下行:
  master: 192.168.56.11
  #id: 

3.啟動
  systemctl restart salt-master
  systemctl status salt-master
  systemctl enable salt-master
  systemctl restart salt-minion
  systemctl status salt-minion
  systemctl enable salt-minion


salt-master配置文件-參考:
salt-master配置文件-參考:

vim /etc/salt/master

    # master的監聽地址(註意:冒號後面空格)
    interface: 1.1.1.11

    # salt運行的用戶,影響到salt的執行權限
    user: root

    # master自動接收客戶端的驗證
    auto_accept: True

    # salt的運行線程,開的線程越多一般處理的速度越快,但一般不要超過CPU的個數
    worker_threads: 8

    # master的管理端口
    publish_port : 4505

    # master跟minion的通訊端口,用於文件服務,認證,接受返回結果等 
    ret_port : 4506

    # 如果這個master運行的salt-syndic連接到了一個更高層級的master,那麽這個參數需要配置成連接到的這個高層級master的監聽端口
    syndic_master_port : 4506

    # 指定pid文件位置
    pidfile: /var/run/salt-master.pid

    # saltstack 可以控制的文件系統的開始位置
    root_dir: /

    # 日誌文件地址
    log_file: /var/log/salt/master.log

    # 分組設置
    nodegroups:
      group_all: ‘*‘

    # salt state執行時候的根目錄
    file_roots:
      base:
        - /srv/salt/base

    # 設置pillar的根目錄
    pillar_roots:
      base:
        - /srv/salt/pillar

六,安裝 saltstack-minion
saltstack-minion  安裝:yum install -y salt-minion

1.配置: 修改salt-minion配置文件,指定salt-master地址(註:配置文件內不允許TAB鍵)
  vim /etc/salt/minion
  添加如下行:
  master: 192.168.56.11
  #id: 
  註:id: hostname 用來指定主機名


2.啟動
  systemctl restart salt-minion
  systemctl status salt-minion
  systemctl enable salt-minion

七,在master進行測試
1.查看minion列表(這時候saltstack-minion是紅色的)
[root@linux-node1 ~]# salt-key -L
Accepted Keys:
Denied Keys:
Unaccepted Keys:
linux-node2
Rejected Keys:

2.認證所有key。當然也可以通過salt-key -a saltstack-minion指定某臺minion進行認證key

[root@linux-node1 ~]# salt-key -A      #同意接管-管理所有minion
The following keys are going to be accepted:
Unaccepted Keys:
linux-node2
Proceed? [n/Y] Y
Key for minion linux-node2 accepted.

3. 接著繼續查看minion列表(這時候saltstack-minion已經變為綠色,說明key已被添加)

[root@linux-node1 ~]# salt-key -L
Accepted Keys:
linux-node2
Denied Keys:
Unaccepted Keys:
Rejected Keys:

4. 簡單測試(客戶端salt_ping)

[root@linux-node1 ~]# salt ‘*‘ test.ping
[root@linux-node1 ~]# salt \* test.ping

linux-node1.example.com:
    True
linux-node2:
    True


註:salt-master使用命令 salt ‘linux-node2‘ test.ping  
linux-node2:
    True
此示例中所有的minion均已經收到了此消息,不過只有linux-node2進行了返回

salt緩存文件
目錄:/var/cache/salt

cd /var/cache/salt && tree

註:如果minion目標文件改變,重新salt後,master salt狀態文件會覆蓋minion節點文件,所以日後修改配置只需修改master salt狀態文件即可。

本文轉自:https://wuyanteng.github.io/2017/10/14/SaltStack%E9%83%A8%E7%BD%B2for-CentOS7/

CentOS7 下SaltStack部署