在自動化運維方面,開源且主流的工具主要有SaltStack和Ansible,兩者互有優勢。在這裡我準備先整理Salt-Stack的常規安裝部署和簡單使用,包括salt-master、salt-minion(linux和windows)、salt-ssh。
後續篇幅再整理Salt-Stack的架構研究和Ansible的部署。希望能幫助到需要的朋友。
一、簡介
Saltstack是由thomas Hatch於2011年創建的一個開源項目,設計初衷是為了實現一個快速的遠程執行系統。它是基於python開發的一套C/S架構配置管理工具,使用SSL證書籤方的方式進行認證管理,底層使用ZeroMQ消息隊列pub/sub方式通信。號稱世界上最快的消息隊列ZeroMQ能快速在成千上萬臺主機上進行各種操作,並採用RSA Key方式確認身份。
二、Salt-master安裝
1. 本地yum源製作
(1)從官網上下載製作SaltStack yum源需要的各系統各軟件包
(2)用本地yum源製作工具,進入到各系統文件夾下, 執行yum源製作
[root@localhost yum.repos.d]# createrepo -v .
生成repodata文件夾,完成源索引建立
(3)完成後到各系統下進行本地yum源安裝測試,如遇到問題缺少包的情況,單獨下載後再重新制作。
2.配置yum源
所有操作均需使用root用戶。
(1)將yum.zip放到/home目錄下並解壓,解壓之後,即存在/home/yum目錄;
$ cd /home
$ unzip yum.zip
(2)備份原有的yum庫文件,並編輯salt-master需要的repo文件
$ cd /etc/yum.repos.d
$ mkdir tmprepo
$ mv *.repo tmprepo
$ vi salt.repo
編輯salt.repo文件的內容如下:
[salt-yum]
name=salt linux
baseurl=file:///home/yum/$releasever
gpgcheck=0
enable=1
編輯完成後,輸入:wq保存
(3)執行yum clean all來更新yum庫設置。
3.安裝master
所有操作均需使用root用戶。
(1)執行yum install salt-master -y來安裝salt-master。
直到提示completed! 表示執行結束。
4.配置master
所有操作均需使用root用戶
(1)修改master的配置文件/etc/salt/master
將行"#auto_accept: False" 更改為"auto_accept: True",注意冒號之後有一個空格
將行"#timeout: 5"改為"timeout: 180",注意冒號之後有一個空格
將行"#file_recv: False"改為"file_recv: True",注意冒號之後有一個空格
將行"#file_roots"的註釋符去掉,來使file_roots可見。
(2)創建必要的目錄
mkdir -p /srv/salt
5.salt-master啟動
(1)設置master開機自動啟動
$ chkconfig salt-master on
(2)啟動salt-master
$ salt-master -d
三、salt-minion安裝(Linux下)
1.上傳安裝包
將客戶端安裝包install-minion.zip上傳至客戶端服務器某個目錄下,以/home目錄為例。
上傳時最好以二進制格式上傳,可以避免跨平臺傳輸過程中出現亂碼。
2.解壓安裝包
以root用戶切換到/home目錄下,解壓安裝包
cd /home
unzip install-minion.zip
3.執行安裝腳本
進入安裝包目錄,執行安裝腳本,執行結束後,控制檯顯示“complete!”
cd /install-minion
sh insminion.sh
4.檢查安裝結果
使用ps -ef | grep salt-minion或者service salt-minion status來查詢客戶端進程是否存在
登錄服務端,嘗試執行salt命令進行連接測試。
salt 'xxx.xxx.xxx.xxx' test.ping,其中xxx.xxx.xxx.xxx代表客戶端的IP
四、salt-minion安裝(Windows下)
1.支持windows環境
windows2008和windows2003
2.安裝包說明
對於64位系統,安裝Salt-Minion-xxxx.x.x-AMD64-Setup.exe安裝包
對於32位系統,安裝Salt-Minion-xxxx.x.x-win32-Setup.exe安裝包
3.安裝步驟
(1)雙擊運行跟操作系統對於的安裝包,點擊“next”
(2)選擇“I Agree”
3)填寫Master主機的ip,以及本機的ip地址,然後選擇“install”,開始安裝
(4)安裝完成後運行。
(5)打開windows任務管理器,在“服務”中查看salt-minion服務是否已經處於“正在運行”狀態。
如果為“已停止”狀態,則右擊選擇“啟動”,再觀察運行狀態
(6)對於windows2008環境,如果有出現salt-minion安裝後不能運行的情況,需要安裝Microsoft Visual C++ 2008 x64 SP1補丁包。
(7)最後,需要確認本機的防火牆是否已經關閉。
(8)注意:如果之前有客戶端配置多臺master連接的,修改minion安裝路徑下的C:\salt\conf\minion配置文件,找到“master:”標籤,按下圖標註的方式把原來配置的多個master主機ip地址,改為只配置一臺master主機。
五、salt-ssh安裝
1.安裝salt-ssh
所有操作均需使用root用戶。
執行yum install salt-ssh -y來安裝salt-ssh。
2.master生成秘鑰(只需執行一次)
master服務器分別生成master秘鑰文件,執行ssh-keygen後默認回車
[root@xxxx .ssh]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
18:17:cd:69:b9:69:17:1c:fd:28:7f:92:e1:15:46:74 root@xxxx
The key's randomart image is:
+--[ RSA 2048]----+
| .o +.oooE|
| .* o .o.|
| . .. o ..o.|
| + + o o o|
| . S. . + + |
| = .|
| o |
| |
| |
+-----------------+
3.master端修改ssh_config文件(只需要執行一次)
[root@xxxx template]# vim /etc/ssh/ssh_config
50 Host *
51 GSSAPIAuthentication yes
52 StrictHostKeyChecking no
4.master端修改logging(只需要執行一次)
修復/srv/salt下有中文,salt-ssh執行報錯的BUG,具體如下:
[root@localhost salt]# vim /usr/lib64/python2.6/logging/__init__.py
307 if self.args:
308 args = tuple([(str(arg)).decode("utf-8") for arg in self.args])
309 msg = msg % (args)
310 return msg
5.拷貝公鑰(每接入一個節點,都需要只需一次)
(1)手動拷貝master上公鑰文件/root/.ssh/id_rsa.pub到minion的/root/.ssh下
(2)登錄minion,執行如下命令:
[root@localhost .ssh]# cd /root/.ssh
[root@localhost .ssh]# cat id_rsa.pub authorized_keys
[root@localhost .ssh]# service sshd restart
6.配置salt-ssh配置文件(每接入一個節點,都需要配置一次)
(1)打開master上的salt-ssh配置文件
[root@xxxx ~]# vim /etc/salt/roster
(2)編輯配置文件,以標註的方式配置key和host地址
# Sample salt-ssh config file
#web1:
# host: 192.168.42.1 # The IP addr or DNS hostname
# user: fred # Remote executions will be executed as user fred
# passwd: foobarbaz # The password to use for login, if omitted, keys are used
# sudo: True # Whether to sudo to root, not enabled by default
#web2:
# host: 192.168.42.2
26.47.136.1:
host: 26.47.136.1 注意:host前面有兩個空格
26.47.136.2:
host: 26.47.136.2
在master端進行秘鑰首次登錄確認
執行salt-ssh 接入的key地址 test.ping
輸入Y後
輸入接入的key地址的root用戶密碼,按回車確認
(4) 使用salt-ssh進行測試
[root@xxxx ~]# salt-ssh 26.47.136.1 test.ping
26.47.136.1:
True