24.1 自動化運維介紹html
24.2 saltstack安裝python
24.3 啓動saltstack服務linux
24.4 saltstack配置認證vim
24.1 自動化運維介紹安全
認識自動化運維架構
傳統運維效率低,大多工做人爲完成運維
傳統運維工做繁瑣,容易出錯ssh
傳統運維每日重複作相同的事情tcp
傳統運維沒有標準化流程工具
傳統運維的腳本繁多,不能方便管理
自動化運維就是要解決上面全部問題
常見自動化運維工具
1.Puppet (www.puppetlabs.com) #出現的比較早
基於rubby開發,c/s架構,支持多平臺,可管理配置文件、用戶、cron任務、軟件包、系統服務等。 分爲社區版(免費)和企業版(收費),企業版支持圖形化配置。
2.Saltstack(官網 https://saltstack.com,文檔docs.saltstack.com )
基於python開發,c/s架構,支持多平臺,比puppet輕量,在遠程執行命令時很是快捷,配置和使用比puppet容易,能實現puppet幾乎全部的功能。
#使用的串行效率很快。而expect使用的並行(for循環,執行完一個在繼續執行下一個,效率就會很慢)
#除了這種cs架構(服務端客戶端),也支持只裝一個命令的
#支持的機器會更多
3.Ansible (www.ansible.com )
更加簡潔的自動化運維工具,不須要在客戶端上安裝agent,基於python開發。能夠實現批量操做系統配置、批量程序的部署、批量運行命令。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24.2 saltstack安裝/24.3 啓動saltstack服務
1.saltstack介紹https://docs.saltstack.com/en/latest/topics/index.html
2.可使用salt-ssh遠程執行,相似ansible,
3.也支持c/s模式,下面咱們將講述該種模式的使用,須要準備兩臺機器
~133.128爲服務端(中控中心),133.130爲客戶端
~設置hostname以及hosts,aming-01,aming-02
#實際機器量不少的狀況下,能夠搞一個內部的dns(帶域名的),相似什麼A1.axinlinux.com、A2.axinlinux.com,全部的機器都是這種形式的。這樣的話hosts就不用配置了,直接寫一個dns ip就直接指導哪個機器是誰。由於臨時作實驗因此寫了個hosts
4.兩臺機器所有安裝saltstack yum源
yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm #可根據以上的官方文檔,安裝更新的yum源
5.128上執行 yum install -y salt-master(哪一個爲中控中心就安裝master) salt-minion
6.130上執行 yum install -y salt-minion
7.128上編輯配置文件(服務端master)
vi /etc/salt/minion //增長
master: aming-01
啓動服務systemctl start salt-master; systemctl start salt-minion
8.130上編輯配置文件(客戶端minion)
vi /etc/salt/minion //增長
master: aming-01
啓動服務systemctl start salt-minion
服務端監聽4505和4506兩個端口,4505爲消息發佈的端口,4506爲和客戶端通訊的端口
實例:
01爲服務端,02爲客戶端
[root@axinlinux-01 ~]# hostname
axinlinux-01
[root@axinlinux-01 ~]# vim /etc/hosts
192.168.133.128 axinlinux-01
192.168.133.129 axinlinux-02
[root@axinlinux-02 ~]# hostname
axinlinux-02
[root@axinlinux-02 ~]# vim /etc/hosts
192.168.133.128 axinlinux-01
192.168.133.129 axinlinux-02
[root@axinlinux-01 ~]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
[root@axinlinux-02 ~]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
[root@axinlinux-01 ~]# yum list |grep salt #可看到不少剛纔執行yum時所產生的rpm包,01上須要安裝的是:
salt-master.noarch 2018.3.3-1.el7 salt-latest #這兩個是01要安裝的,其餘的暫不接觸
salt-minion.noarch 2018.3.3-1.el7 salt-latest
salt-ssh.noarch 2018.3.3-1.el7 salt-latest #ssh這個後續咱們再講
[root@axinlinux-01 ~]# yum install -y salt-master salt-minion
[root@axinlinux-02 ~]# yum install -y salt-minion
[root@axinlinux-01 ~]# vim /etc/salt/minion
master: axinlinux-01 #改成master爲hosts設置的01機器的主機名
[root@axinlinux-02 ~]# vim /etc/salt/minion
master: axinlinux-01 #客戶端也要改
[root@axinlinux-02 ~]# systemctl start salt-minion #先啓動客戶機的minoon
[root@axinlinux-02 ~]# ps aux |grep salt
[root@axinlinux-02 ~]# netstat -lntp #雖然minion是跟master經過tcp/ip通訊,可是minion不監放任何端口。master纔會監聽端口
[root@axinlinux-01 ~]# systemctl start salt-master
[root@axinlinux-01 ~]# systemctl start salt-minion
[root@axinlinux-01 ~]# ps aux |grep salt
[root@axinlinux-01 ~]# netstat -lntp #master監聽兩個端口
tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 2906/python #4505來發送消息
tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 2912/python #master和minion用來通訊的
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24.4 saltstack配置認證
1.master端和minion端通訊須要創建一個安全通道,傳輸過程須要加密,因此得配置認證,也是經過密鑰對來加密解密的
#也就是一個密鑰對,以後才能夠去傳輸數據
2.minion在第一次啓動時會在/etc/salt/pki/minion/下生成minion.pem和minion.pub,其中.pub爲公鑰,它會把公鑰傳輸給master
3.master第一次啓動時也會在/etc/salt/pki/master下生成密鑰對,當master接收到minion傳過來的公鑰後,經過salt-key工具接受這個公鑰,一旦接受後就會在/etc/salt/pki/master/minions/目錄裏存放剛剛接受的公鑰,同時客戶端也會接受master傳過去的公鑰,把它放在/etc/salt/pki/minion目錄下,並命名爲minion_master.pub
4.以上過程須要藉助salt-key工具來實現
5.執行以下命令 salt-key -a aming-01// -a後面跟主機名,能夠認證指定主機
6.salt-key -a aming-02
salt-key命令用法
-a 後面跟主機名,認證指定主機
-A 認證全部主機 #後面什麼後不用跟
-r 跟主機名,拒絕指定主機
-R 拒絕全部主機
-d 跟主機名,刪除指定主機認證
-D 刪除所有主機認證
-y 省略掉交互,至關於直接按了y
實例:
[root@axinlinux-01 ~]# ls /etc/salt/pki/master/
master.pem master.pub minions minions_autosign minions_denied minions_pre minions_rejected
[root@axinlinux-01 ~]# salt-key -a axinlinux-02 #若是直接是-A能夠將全部的機器所有認證
The following keys are going to be accepted:
Unaccepted Keys:
axinlinux-02
Proceed? [n/Y] y #按y
Key for minion axinlinux-02 accepted.
[root@axinlinux-01 ~]# salt-key #而後再次輸入salt-key
Accepted Keys: #已經經過的,也就是已經接受了02的公鑰
axinlinux-02
Denied Keys: #被拒絕的
Unaccepted Keys: #默認的,也就是機器裏能識別到的
axinlinux-01
Rejected Keys:
[root@axinlinux-01 ~]# cat /etc/salt/pki/master/minions/axinlinux-02 #因此在這就有了02的公鑰(這個文件就是客戶機上minion.pub)
[root@axinlinux-02 ~]# cat /etc/salt/pki/minion/minion.pub #cat02的公鑰看是否是跟01接收到的公鑰一致
[root@axinlinux-01 ~]# salt-key -A #直接-A(也就是將本機也認證)
The following keys are going to be accepted:
Unaccepted Keys:
axinlinux-01
Proceed? [n/Y] y
Key for minion axinlinux-01 accepted.
[root@axinlinux-01 ~]# salt-key #纔看一下,就已經所有經過了
Accepted Keys:
axinlinux-01
axinlinux-02
Denied Keys:
Unaccepted Keys:
Rejected Keys: