1. 程式人生 > >saltstack自動化運維平臺的介紹、部署、基本使用

saltstack自動化運維平臺的介紹、部署、基本使用

使用介紹 saltstack

saltstack:服務器基礎架構集中化管理平臺,有配置管理、遠程執行、監控等功能,基於Python語言開發,結合輕量級消息隊列(ZeroMQ)與Python第三方模塊(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack和PyYAML等)構建

優點(1.部署簡單便捷;2支持的系統多樣;3配置簡單,功能強,擴展性好;4基於主從,用證書建立連接,安全性高;5支持API及自定義模塊)

認證minion在啟動時,會在/etc/salt/pki/minion自動生成minion.pem(private key)和minion.pub(public key) ,然後將minion.pub發給master服務端,master收到key後通過salt-key命令accept minion public key ,這樣在master的/etc/salt//pki/master/minions下將會有minion id命名的key ,這時master可對minion發送指令。

連接master服務端 服務默認監聽端口4505 4506

4505為saltstack的消息發布系統

4506為saltstack客戶端與服務端通信接口

通過lsof查看4505 會發現minion持續保持ESTABLISHED(已建立)狀態

SaltStack

Salt類似Ansible,因為它也是基於CLI的工具,采用了推送方法實現客戶端通信。它可以通過Git或通過程序包管理系統安裝到主服務器和客戶端上。客戶端會向主服務器提出請求,請求在主服務器上得到接受後,就可以控制該客戶端了。

Salt可以通過普通的

SSH與客戶端進行通信,但如果使用名為minion的客戶端代理軟件,可以大大增強可擴展性。此外,Salt含有一個異步文件服務器,可以為客戶端加快文件服務速度,這完全是Salt註重高擴展性的一個體現。

  與Ansible一樣,你可以直接通過CLI,向客戶端發出命令,比如啟動服務或安裝程序包;你也可以使用名為stateYAML配置文件,處理比較復雜的任務。還有“pillar”,這些是放在集中地方的數據集,YAML配置文件可以在運行期間訪問它們。

  你可以直接通過CLI,向客戶端請求配置信息,比如內核版本或網絡接口方面的詳細信息。只要使用名為“grain”的庫存元素,就可以描述客戶端;這樣一來,管理員可以輕松向某一種類型的服務器發出命令,不需要依賴已配置群組。比如說,只要使用一個

CLI命令,你就可以向運行某個內核版本的每個客戶端發送命令。

  與PuppetChefAnsible一樣,Salt也提供了大量的模塊,以處理特定的軟件、操作系統和雲服務。自定義模塊可以用PythonPyDSL來編寫。除了Unix管理外,Salt的確提供Windows管理功能,但它還是更擅長管理UnixLinux系統。

SaltWeb用戶界面Halite非常新,功能不如其他系統的Web用戶界面來得全面。它提供了事件日誌和客戶端狀態的視圖,能夠在客戶端上運行命令,但除此之外乏善可陳。

Salt的最大優點在於可擴展性和彈性。你可以有多個級別的主服務器。上遊主服務器可以控制下遊主服務器及其客戶端。另一個優點在於對等系統,讓客戶端可以向主服務器提出問題,然後主服務器從其他服務器得到答案,提供全面信息。如果需要在實時數據庫中查詢數據,以便完成客戶端的配置,這個優點就很方便。



部署環境

實驗環境:

IP地址
角色
環境
10.0.0.30
master

centos7.3

10.0.040

minion

centos7.3
10.0.0.50
minion
centos7.3

設置環境

修改主機名

hostnamectl set-hostname dlp.linuxwang.cn
hostnamectl set-hostname node01.linuxwang.cn
hostnamectl set-hostname node02.linuxwang.cn

在所有主機添加本地解析

[[email protected] ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.30 dlp.linuxwang.cn
10.0.0.40 node01.linuxwang.cn
10.0.0.50 node02.linuxwang.cn



SaltStack的通信模式總共分為2種模式:ZeroMQ、REAT,鑒於REAT目前還不是太穩定,我們選擇ZeroMQ模式,本次安裝采用源碼安裝的方式


在master配置(10.0.0.30)

yum -y install epel-release
yum -y install salt-master
for i in enable restart status; do systemctl $i salt-master;done
netstat -utpln |grep -e 4505 -e 4506

tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 17452/python
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 17470/python


在minion配置(10.0.0.40-50)

yum -y install epel-release
yum -y install salt-minion
ping dlp
vi /etc/salt/minion
master: dlp.linuxwang.cn ##修改16行,指定master
:wq
for i in enable restart status;do systemctl $i salt-minion;done


授權

salt-key -L 查看當前的salt key信息

[[email protected] ~]# salt-key -L
Accepted Keys:
node01.linuxfan.cn
node02.linuxfan.cn
Denied Keys:
Unaccepted Keys:
Rejected Keys:

salt-key -A

[[email protected] ~]# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
node01.linuxwang.cn
node02.linuxwang.cn
Proceed? [n/Y]
Y
Key for minion node01.linuxwang.cn accepted.
Key for minion node02.linuxwang.cn accepted.

授權成功可進行遠程操作


測試被控主機的連通性

# salt ‘*‘ test.ping

[[email protected] ~]# salt "*" test.ping
node01.linuxwang.cn:
True
node02.linuxwang.cn:


這時開始涉及我們的saltstack模塊的使用, 由一個一個的模塊對我們的遠程的主機進行操作。

模塊介紹

Archive模塊:實現系統層面的壓縮包調用,支持 gunzip、gzip、rar、tar、unzip等
           
cmd模塊  :實現遠程命令行調用執行(默認具備root權限)
        
cp模塊    :實現遠程文件、目錄的復制,以及下載URL文件等操作 
         
cron模塊  :實現被控主機的crontab計劃任務操作
          

dnsutil模塊:實現被控主機通過DNS相關操作
file模塊:被控主機文件常見操作,包括文件讀寫、權限、查找、校驗等
iptables模塊:被控主機Iptables支持
network模塊:返回被控主機網絡信息
pkg包管理:被控主機程序包管理,如 yum 、apt-get等
service服務模塊:被控主機程序包管理服務


本文出自 “Haproxy搭建web集群” 博客,請務必保留此出處http://12653557.blog.51cto.com/12643557/1956826

saltstack自動化運維平臺的介紹、部署、基本使用