saltstack安裝、配置認證、遠程執行命令

saltstack介紹

saltstack(官網saltstack.com,官方文檔docs.saltstack.com )基於python開發,c/s架構,支持多平臺,比puppet輕量,在遠程執行命令時非常快捷,配置和使用比puppet容易,能實現puppet幾乎所有的功能

saltstack安裝

A機器(服務器):192.168.234.128
B機器(客戶端):192.168.234.130

設置兩臺機器的hostname:

hostnamectl set-hostname linux01
hostnamectl set-hostname linux02

分別修改兩臺機器的hosts文件:

[root@linux01 ~]# vim /etc/hosts

添加以下內容:

192.168.234.128 linux01
192.168.234.130 linux02

分別在兩臺機器安裝saltstack yum源:

[root@linux01 ~]# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm

#該yum源只適合centos7系統Python2版本

centos7系統Python3版本:https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el7.noarch.rpm

centos8:https://repo.saltstack.com/py3/redhat/salt-py3-repo-latest.el8.noarch.rpm

在服務端安裝salt-master和salt-minion:

[root@linux01 ~]# yum -y install salt-master salt-minion

在客戶端安裝salt-minion:

[root@linux02 ~]# yum -y install salt-minion

#當有多臺機器時,要批量操作的機器都需安裝salt-minion,類似於zabbix的zabbix-agent包

分別在客戶端和服務端編輯配置文件:

[root@linux01 ~]# vim /etc/salt/minion

添加以下內容:

master: linux01

#注意hostname前要有一個空格

在客戶端啓動服務:

[root@linux02 ~]# systemctl start salt-minion

在服務端啓動服務:

[root@linux01 ~]# systemctl start salt-master salt-minion

在服務端查看監聽端口:

[root@linux01 ~]# netstat -lntp|grep python
tcp        0      0 0.0.0.0:4505            0.0.0.0:*               LISTEN      14057/python        
tcp        0      0 0.0.0.0:4506            0.0.0.0:*               LISTEN      14063/python

#4505爲消息發佈的端口,4506爲和客戶端通信的端口,客戶端雖然是通過tcp與服務端通信,但是客戶端不監聽任何端口

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

在服務端查看所有minion的hostname:

[root@linux01 ~]# salt-key 
Accepted Keys:
Denied Keys:
Unaccepted Keys:
linux01
linux02
Rejected Keys:

認證指定主機:

[root@linux01 ~]# salt-key -a linux01
The following keys are going to be accepted:
Unaccepted Keys:
linux01
Proceed? [n/Y] y
Key for minion linux01 accepted.

[root@linux01 ~]# salt-key 
Accepted Keys:
linux01
Denied Keys:
Unaccepted Keys:
linux02
Rejected Keys:

#主機linux01認證後就到了Accepted Keys分類中

salt-key工具參數說明:

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

補充:使用-r參數拒絕主機時,只能拒絕Unaccepted Keys分類中的主機,如果要拒絕Accepted Keys分類中的主機或刪除Rejected Keys分類中的主機使用-d參數即可,當主機刪除後,需要在對應的機器重啓salt-minion服務纔會在服務端salt-key工具的Unaccepted Keys分類中顯示

saltstack遠程執行命令

檢測所有機器通信是否正常:

[root@linux01 ~]# salt '*' test.ping
linux02:
    True
linux01:
    True

#True表示正常,*號表示所有已認證的minion端

cmd.run執行命令:

[root@linux01 ~]# salt '*' cmd.run 'uptime'
linux02:
     18:01:02 up 18:55,  1 user,  load average: 0.01, 0.07, 0.17
linux01:
     18:01:02 up 1 day,  2:36,  2 users,  load average: 0.72, 0.43, 0.43

在指定的機器執行命令:

[root@linux01 ~]# salt 'linux02' cmd.run 'head -1 /proc/cpuinfo'
linux02:
    processor	: 0

#在指定的機器執行命令,直接輸入主機名即可

補充:這裏的*號必須是在master上已經被接受過認證的客戶端,可以通過salt-key查到;關於這部分內容,它支持通配、列表以及正則。 比如兩臺客戶端linux01、linux02 那就可以寫成salt 'linux0*'或者salt ‘linux-0[12]’ ,使用列表需要加-L參數:salt -L ‘linux01,linux02’ ,使用正則需要使用-E參數:salt -E ‘linux(01|02)’

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章