1. 程式人生 > >SaltStack部署

SaltStack部署

業務 簡單 安裝與配置 pyyaml tps 指定 rep 指令 模塊

一、基礎介紹

1、簡介

SaltStack是一個服務器基礎架構集中化管理平臺,具備配置管理、遠程執行、監控等功能,一般可以理解為簡化版的puppet和加強版的func。SaltStack基於Python語言實現,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建。

通過部署SaltStack環境,我們可以在成千上萬臺服務器上做到批量執行命令,根據不同業務特性進行配置集中化管理、分發文件、采集服務器數據、操作系統基礎及軟件包管理等,SaltStack是運維人員提高工作效率、規範業務配置與操作的利器。

2、特性

(1)、部署簡單、方便;
(2)、支持大部分UNIX/Linux及Windows環境;
(3)、主從集中化管理;
(4)、配置簡單、功能強大、擴展性強;
(5)、主控端(master)和被控端(minion)基於證書認證,安全可靠;

(6)、支持API及自定義模塊,可通過Python輕松擴展。

技術分享

3、Master與Minion認證

(1)、minion在第一次啟動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion裏面設置)下自動生成minion.pem(private key)和 minion.pub(public key),然後將 minion.pub發送給master。

(2)、master在接收到minion的public key後,通過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的 public key,然後master就能對minion發送指令了。

4、Master與Minion的連接

(1)、SaltStack master啟動後默認監聽4505和4506兩個端口。4505(publish_port)為saltstack的消息發布系統,4506(ret_port)為saltstack客戶端與服務端通信的端口。如果使用lsof 查看4505端口,會發現所有的minion在4505端口持續保持在ESTABLISHED狀態。

技術分享

(2)、minion與master之間的通信模式如下:

技術分享

以上內容轉載自:http://sofar.blog.51cto.com/353572/1596960

二、SaltStack基礎安裝與配置

1. yum安裝

CentOS7  安裝
yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm  -y

yum install salt-master -y

yum install salt-minion -y

CentOS6 安裝
https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el6.noarch.rpm  

yum install salt-master -y

yum install salt-minion -y

2. 配置

Master
"""
1. 修改配置文件:/etc/salt/master
    interface: 0.0.0.0    # 表示Master的IP 
2. 啟動
    service salt-master start
"""


Slave
"""
1. 修改配置文件 /etc/salt/minion
    master: 10.211.55.4           # master的地址
    或
    master:
        - 10.211.55.4
        - 10.211.55.5
    random_master: True

    id: c2.salt.com                    # 客戶端在salt-master中顯示的唯一ID
2. 啟動
    service salt-minion start
"""

3. 授權

Master
"""
salt-key -L                    # 查看已授權和未授權的slave
salt-key -a  salve_id      # 接受指定id的salve
salt-key -r  salve_id      # 拒絕指定id的salve
salt-key -d  salve_id      # 刪除指定id的salve
"""

4. 執行命令

在master服務器上對salve進行遠程操作

基於shell命令

salt c2.salt.com cmd.run  ifconfig

基於Salt的API

import salt.client

local = salt.client.LocalClient()
result = local.cmd(c2.salt.com, cmd.run, [ifconfig])

參考資料:

1. http://sofar.blog.51cto.com/353572/1596960

2. http://www.cnblogs.com/wupeiqi/articles/6415436.html

SaltStack部署