saltstack安裝、認證

寫在前面:

 更該主機名,方便識別。更爲了其他的方便。本次採用兩臺服務器測試。master端也同樣可以安裝minion作爲客戶端被管理。如果後續有需求,可以多增加幾臺服務器,或者虛擬機做測試。千萬別用線上服務器。萬一出問題就麻煩了。業務就掛了

Saltstack(中國用戶組www.saltstack.cn)

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

三種工作方式:  本地, c/s, 基於ssh(不用安裝agent)

三大功能: 遠程命令執行,配置管理(服務,文件,cron,用戶,組),雲管理

支持系統:大多數都支持,windows上不支持安裝master

參考博客:http://daixuan.blog.51cto.com/5426657/1899160

實驗主機:

centos6.7-4:  192.168.1.110 作爲master端

centos6.7-3:  192.168.1.107   作爲minion端

主機名最好更改一下:

master端:

vim /etc/sysconfig/network

HOSTNAME=master

vim /etc/hosts

192.168.1.110 master

minion端:

vim /etc/sysconfig/network

HOSTNAME=minion

vim /etc/hosts

192.168.1.107 minion

1.2.2 yum方式安裝(採用epel源)

兩臺機器最好更改一下/etc/hosts地址 保證可以ping通

master端安裝:

rpm  -ivh  https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum -y install salt-master //安裝salt-master

service salt-master start //啓動salt-master

ss -antlup | egrep "4505|4506" //查看端口  或者

ps -ef | grep salt-master

vim /etc/salt/master

auto_accept: True //可選,key通過‘salt-key -a keyname’命令手動進行認證

minon端安裝:

rpm  -ivh  https://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

yum -y install salt-minion //安裝salt-minion

更改minion配置文件:

vim /etc/salt/minion

或者sed命令更改:

sed -i 's/#master: salt/master: 192.168.1.110/g' /etc/salt/minion //增加master主機的配置,把ip指向master的ip。如果配置成主機名的話,需要在/etc/hosts文件中master主機對應的IP ,如果使用內部DNS的例外,可以在內部DNS上的統一配置。

注意:192.168.1.110就是master服務器端的ip地址,master: 的後面有一個空格,空格後面纔是ip地址,如果沒有空格會提示出錯 後面配置minion的ip也是一樣有一個空格

沒有空格出現錯誤,錯誤如下:

Starting salt-minion daemon: [ERROR ] Error parsing configuration file: /etc/salt/minion - while scanning a simple key

in "<string>", line 44, column 1:

id:host172

^

could not found expected ':'

in "<string>", line 46, column 1:

# Append a domain to a hostname ...

^

找到#id  改成

id: minion_192.168.1.102  //id後面這個名字可以自己取,最好別太複雜。這個ip是minion端的ip地址,爲了方便,我就用minion加上minion端的ip來命名了

還可以改成minion然後用ip的最後一段,如 minion102這樣

或者用sed更改 如下:

sed -i 's/#id:/id: minon_192.168.1.102/g' /etc/salt/minion

service salt-minion start //啓動salt-minion

ss -antlu | egrep "4505|4506" //查看salt-minion端口

ps -ef | grep salt-minion

注意: ID如果不指定的話,salt通過socket.getfqdn()來獲取主機的名稱來作爲標識,指定給ID,作爲minion與master交互的身份標識

更改完salt-minion配置文件以後,一定要重啓salt-minion,否則 在master端進行salt-key -A進行認證key的時候不能認證通過,會發現沒有認證的key

netstat -antlp | grep 4505                         確保消息發佈端口正常

netstat -antlp | grep 4506                         確保客戶端與服務端通信端口正常

salt-master -l debug                             debug模式,查看salt都進行哪些操作

2. key認證

server上執行:

salt-key -a minion               #這裏minion就是minion配置文件設置的id,-a指定具體的某一臺minion客戶端服務器

認證完後,此時我們在minion端的 /etc/salt/pki/minion 目錄下面會多出一個minion_master.pub 文件

可以使用 salt-key 命令查看到已經簽名的客戶端

salt-key  可以使用-A簽名所有主機,也可以使用-d刪除指定主機的key

salt-key的使用實例:

更多證書管理方法  使用:salt-key --help  查看  下面會有列出

# 顯示所有minion的認證信息

salt-key -L

# 接受192.168.0.100的認證信息   -a指定具體key

salt-key -a 192.168.0.100

# 接受192.168.0.100的認證信息,不需要手動驗證

salt-key -a 192.168.0.100 -y

# 接受192.168.0.100的認證信息,即使該minion是Rejected Keys狀態

salt-key -a 192.168.0.100 --include-all

# 接受所有 Unaccepted Keys 狀態的minion的認證信息

salt-key -A  或者 salt-key -A -y

# 拒絕認證192.168.0.100

salt-key -d 192.168.0.100

# 拒絕所有 Unaccepted Keys 狀態的minion

salt-key -D     #這樣就刪除了所有認證,最好不要做。但是刪除了所有的認證以後,如果在此執行salt-key -A -L    會看到沒有任何一個認證的key。 需要重啓所有服務器上的minion,否則就會一直沒有key被認證。

可以  salt-key  *  一下    # *號 代表所有

*************查看哪些服務器的minion掛了****************

salt-run manage.status

3.  遠程執行

示例1: salt '*' test.ping    這裏的*表示所以已經簽名的客戶端,也可以指定其中一個

示例2:  salt '*' cmd.run   'df -h'  

說明1: 這裏的*必須是在master上已經被接受過的客戶端,可以通過salt-key查到,通常是我們已經設定的id值。關於這部分內容,它支持通配、列表以及正則。 比如兩臺客戶端  web10  web11, 那我們可以寫成  salt 'web*'    salt 'web1[02]'  salt -L 'web10,web11'   salt -E 'web(10|11) 等形式,使用列表,即多個機器用逗號分隔,而且需要加-L,使用正則必須要帶-E選項。 它還支持grains,加-G選項,後面會介紹到。

其他安裝方式:

1.2.3 pip方式安裝

master端安裝:

pip install salt

mkdir  /etc/salt/;wget -O /etc/salt/master  https://github.com/saltstack/salt/blob/develop/conf/master

salt-master  -d

 

minion端安裝:

pip  install  salt

mkdir  /etc/salt/;wget  -SO /etc/salt/minion  https://github.com/saltstack/salt/blob/develop/conf/minion

sed -i ‘s/#master: salt/master: IPADDRESS/g’/etc/salt/minion

#IPADDRESS是master服務器的ip地址

salt-minion  -d

 

1.2.4源碼安裝

master端安裝:

git  clone  https://github.com/saltstack/salt.git

pip  install  -r  salt/requirements/zeromq.txt

mkdir  /etc/salt/; cp salt/conf/master  /etc/salt

salt-master  -d

 

minion端安裝:

git  clone  https://github.com/saltstack/salt.git

pip  install  -r  salt/requirements/zeromq.txt

python  salt/setup.py  install

mkdir  /etc/salt/; cp  salt/minion  /etc/salt/ 

sed -i  ‘s/#master: salt/master: IPADDRESS/g’ /etc/salt/minion

注意:IPADDRESS爲master的ip地址

由於saltstack軟件依賴包比較多,我們不建議用源碼編譯安裝每個依賴包的方式全裝,所以這裏採用pip安裝方式去安裝依賴包。如果想學編譯安裝,百度上有很多教程

 

 

1.2.5 salt-bootstrap安裝

salt-bootstrap是saltstack的一個單獨項目,該項目主要用於解決多平臺意見不熟saltstack環境。核心工程就是維護一個龐大的bash腳本

master端安裝:

curl -L https://bootstrap.saltstack.com  -o  install_salt.sh

sh  install_salt.sh  -M  -N       #只安裝最新版master

minion端安裝:

echo “IPADDRESS  salt” >> /etc/hosts     #IPADDRESS爲master服務器的地址

curl  -L https://bootstrap.saltstack.com  -o  install_salt.sh

sh  install_salt.sh  -i minion             #只安裝最新版minion並且指定minion  id

關於salt-bootstrap腳本參數可以運行  sh  install_salt.sh  -h 查看,改腳本也提供非常方便的一鍵部署參數

----------部署環境完成,本人用epel方式進行yum安裝的--------

 

1.3.1 證書管理

[root@master ~]# salt-key  -L          //查看當前證書籤證情況

Accepted Keys:  已接收的密鑰

Denied Keys:      被決絕的密鑰

Unaccepted Keys:     未接受的密鑰

Rejected Keys:          被丟棄的密鑰

 

[root@master ~]# salt-key -A –y              //同意簽證所有沒接收的簽證請求

提示告訴我們:沒有未簽證的主機(因爲我們只有一臺master一臺minion,minion接受簽證了)

 

運行第一條saltstack命令,檢測master和minion之間通信是否正常

salt '*' test.ping

更多證書管理命令可以通過salt-key  -h查看

 

-l    顯示指定狀態的key(支持正則表達式)

-L   顯示所有public  keys

-a   接受制定等待恩正的key(支持正則表達式)

-A  接受所有等待認證的key

-r    拒絕等待認證的key(支持正則表達式)

-R   拒絕所有等到認證的key,

--include-all      顯示所有狀態的key(包含non-pending狀態)

-p(小寫的)    打印指定的public  key(支持正則表達式)

-P(大寫的)    打印所有的public  key

-d   刪除指定的key

-D  刪除所有key

-f    顯示指定的key指紋信息(支持正則表達式)

-F   現實所有key指紋信息

第一條測試命令:

salt 'minion_192.168.1.107' test.ping

1.3.2 日常命令參數

查看安裝的時候分別安裝了那些命令(yum安裝方式)

[root@master ~]# rpm -ql salt-master

/etc/rc.d/init.d/salt-master          //salt-master服務啓動腳本

/etc/salt/master                         //salt master配置文件

/usr/bin/salt                              //salt master核心操作命令

/usr/bin/salt-cp                        //salt  文件傳輸命令

/usr/bin/salt-key                     //salt  證書管理命令

/usr/bin/salt-master               //salt master服務命令

/usr/bin/salt-run                    //salt master runner命令

/usr/bin/salt-unity

………


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