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可以通過普通的
與Ansible一樣,你可以直接通過CLI,向客戶端發出命令,比如啟動服務或安裝程序包;你也可以使用名為state的YAML配置文件,處理比較復雜的任務。還有“pillar”,這些是放在集中地方的數據集,YAML配置文件可以在運行期間訪問它們。
你可以直接通過CLI,向客戶端請求配置信息,比如內核版本或網絡接口方面的詳細信息。只要使用名為“grain”的庫存元素,就可以描述客戶端;這樣一來,管理員可以輕松向某一種類型的服務器發出命令,不需要依賴已配置群組。比如說,只要使用一個
與Puppet、Chef和Ansible一樣,Salt也提供了大量的模塊,以處理特定的軟件、操作系統和雲服務。自定義模塊可以用Python或PyDSL來編寫。除了Unix管理外,Salt的確提供Windows管理功能,但它還是更擅長管理Unix和Linux系統。
Salt的Web用戶界面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自動化運維平臺的介紹、部署、基本使用