1. 程式人生 > >第三十八課預習任務

第三十八課預習任務

1.自動化運維介紹

2. saltstack安裝

3.啟動saltstack服務

4.saltstack配置認證

4.2 salt-key命令用法

5.saltstack遠端執行命令


1.自動化運維介紹

  • 傳統運維效率低,大多工作人為完成
  • 傳統運維工作繁瑣,容易出錯
  • 傳統運維每日重複做相同的事情
  • 傳統運維沒有標準化流程
  • 傳統運維的指令碼繁多,不能方便管理
  • 自動化運維就是要解決上面所有問題
  • Puppet (www.puppetlabs.com) 基於rubby開發,c/s架構,支援多平臺,可管理配置檔案、使用者、cron任務、軟體包、系統服務等。 分為社群版(免費)和企業版(收費),企業版支援圖形化配置。  
  • Saltstack(官網 https://saltstack.com,文件docs.saltstack.com ) 基於python開發,c/s架構,支援多平臺,比puppet輕量,在遠端執行命令時非常快捷,配置和使用比puppet容易,能實現puppet幾乎所有的功能。  
  • Ansible (www.ansible.com ) 更加簡潔的自動化運維工具,不需要在客戶端上安裝agent,基於python開發。可以實現批量作業系統配置、批量程式的部署、批量執行命令。

2. saltstack安裝

準備兩臺機器,一臺做為伺服器,一臺做為客戶端。。例:這裡我以knightlai01為伺服器,knightlai02為客戶端

兩臺機器全部安裝saltstack yum源

[[email protected] ~]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

Loaded plugins: fastestmirror
salt-repo-latest-2.el7.noarch.rpm                                        | 5.6 kB  00:00:00     
Examining /var/tmp/yum-root-7pz0y7/salt-repo-latest-2.el7.noarch.rpm: salt-repo-latest-2.el7.noarch
Marking /var/tmp/yum-root-7pz0y7/salt-repo-latest-2.el7.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package salt-repo.noarch 0:latest-2.el7 will be installed
--> Finished Dependency Resolution
.......................................................



[
[email protected]
~]# yum install -y https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm Loaded plugins: fastestmirror salt-repo-latest-2.el7.noarch.rpm | 5.6 kB 00:00:00 Examining /var/tmp/yum-root-r6xe7r/salt-repo-latest-2.el7.noarch.rpm: salt-repo-latest-2.el7.noarch Marking /var/tmp/yum-root-r6xe7r/salt-repo-latest-2.el7.noarch.rpm to be installed Resolving Dependencies --> Running transaction check ---> Package salt-repo.noarch 0:latest-2.el7 will be installed --> Finished Dependency Resolution .......................................................................

在knightlai01伺服器上yum install -y salt-master salt-minion

[[email protected] ~]# yum install -y salt-master salt-minion
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                                     | 8.5 kB  00:00:00     
 * base: mirror.vpshosting.com.hk
 * epel: mirrors.aliyun.com
 * extras: mirror.vpshosting.com.hk
 * updates: mirror.vpshosting.com.hk
.......................................................................................

在knightlai02伺服器上執行yum install -y salt-minion

[[email protected] ~]# yum install -y salt-minion
Loaded plugins: fastestmirror
Determining fastest mirrors
epel/x86_64/metalink                                                     | 8.5 kB  00:00:00     
 * base: repo.virtualhosting.hk
 * epel: mirrors.aliyun.com
 * extras: repo.virtualhosting.hk
 * updates: repo.virtualhosting.hk
.....................................................................................

3.啟動saltstack服務

3.1 編輯伺服器上配置檔案knightlai01

[[email protected] ~]# vi /etc/salt/minion//增加
master: knightlai01


//在伺服器上啟動服務
[[email protected] ~]# systemctl start salt-master; systemctl start salt-minion


[[email protected] ~]# netstat -tlnp|grep python
tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      5729/python         
tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      5735/python 

服務端監聽4505和4506兩個埠,4505為訊息釋出的埠,4506為和客戶端通訊的埠

3.2 編輯客戶端上配置檔案knightlai02,並啟動服務

[[email protected] ~]# vi /etc/salt/minion
master: knightlai01


//在客戶端上啟動服務
[[email protected] ~]# systemctl start salt-minion

4.saltstack配置認證

  • master端和minion端通訊需要建立一個安全通道,傳輸過程需要加密,所以得配置認證,也是通過金鑰對來加密解密的
  • minion在第一次啟動時會在/etc/salt/pki/minion/下生成minion.pem和minion.pub,其中.pub為公鑰,它會把公鑰傳輸給master
  • master第一次啟動時也會在/etc/salt/pki/master下生成金鑰對,當master接收到minion傳過來的公鑰後,通過salt-key工具接受這個公鑰,一旦接受後就會在/etc/salt/pki/master/minions/目錄裡存放剛剛接受的公鑰,同時客戶端也會接受master傳過去的公鑰,把它放在/etc/salt/pki/minion目錄下,並命名為minion_master.pub

 在客戶端上我們要確定要有這幾個檔案

[[email protected] salt]# ls /etc/salt/pki/minion/
minion_master.pub  minion.pem  minion.pub

在伺服器上


salt-key -a knightlai// -a後面跟主機名,可以認證指定主機
//如果認證完成可以看到以下資訊
[[email protected] ~]# salt '*' test.ping
knightlai02:
    True
knightlai01:
    True

4.2 salt-key命令用法

  •  -a  後面跟主機名,認證指定主機  
  • -A 認證所有主機  
  • -r  跟主機名,拒絕指定主機  
  • -R  拒絕所有主機  
  • -d 跟主機名,刪除指定主機認證
  •  -D 刪除全部主機認證  
  • -y 省略掉互動,相當於直接按了y

5.saltstack遠端執行命令

//這裡的*表示所有已經簽名的minion端,也可以指定一個
[[email protected] ~]# salt '*' test.ping
knightlai02:
    True
knightlai01:
    True

 salt 'knightlai01' test.ping
 salt '*' cmd.run "hostname"
說明: 這裡的*必須是在master上已經被接受過認證的客戶端,可以通過salt-key查到,
通常是我們已經設定的id值。關於這部分內容,它支援通配、列表以及正則。 
比如兩臺客戶端knightlai01,knightlai02, 那我們可以寫成salt 'knightlai-*', salt 'knightlai-0[12]'  
salt -L 'knightlai01,knightlai02'   
salt -E 'knightlai(01|02)'等形式,使用列表,
即多個機器用逗號分隔,而且需要加-L,使用正則必須要帶-E選項。 
它還支援grains,加-G選項,pillar 加-I選項,下面會介紹到。