saltstack master minion安裝配置簡單使用


首先先了解下saltstack是什么,為什么使用它

它與Ansible、Puppet都屬於集中管理工具,由於現在企業規模的不斷龐大及業務的增長,所需要管理的服務器數量增多,而且大部分機器都屬於同類業務集群,操作是統一的,甚至於所有機器都有一些相同的初始項,連上所有機器進行完全相同的操作固然是可以的,但是浪費了大量的時間及精力,感覺太蠢。集中管理工具的出現就是將同類機器的統一操作統一執行,一次解決,得到返回結果然后確定任務是否成功,如果出現個別情況可以再去對應目標上排錯,節約了大量時間,提升工作效率。因此集中管理的前提是規范化!

以前是使用Puppet的比較多,但是Puppet的安裝配置以及使用真的是特么太坑了,so,隨着時間的推移,Saltstack、Ansible的大規模使用時代就到來了。Ansible也是一款優秀的集中管理工具,主要基於ssh協議進行相關操作,他的特點是不需要客戶端即可立刻使用(其實我萌的Saltstack也是可以噠),大家選擇自己喜歡的就可以了

 

安裝與簡單使用

 1 [root@linux-node1 ~]# cat /etc/yum.repos.d/saltstack.repo 
 2 [saltstack-repo] 3 name=SaltStack repo for RHEL/CentOS $releasever 4 baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest 5 enabled=1 6 gpgcheck=0 7 [root@linux-node1 ~]# yum install -y salt-master salt-minion 8 [root@linux-node1 ~]# systemctl start salt-master 9 [root@linux-node1 ~]# vim /etc/salt/minion 10 master: 11 - 192.168.56.11 # 前面2個空格,“-”后一個空格! 12 [root@linux-node1 ~]# systemctl start salt-minion 13 [root@linux-node1 ~]# salt-key –L # 列出key狀態 14 Accepted Keys: 15 Denied Keys: 16 Unaccepted Keys: 17 linux-node1.example.com # 會出現主機hostname 18 Rejected Keys: 19 [root@linux-node1 ~]# salt-key –A # 代表接受所有Unaccepted Keys 20 [root@linux-node1 ~]# salt-key -L 21 Accepted Keys: 22 linux-node1.example.com 23 Denied Keys: 24 Unaccepted Keys: 25 Rejected Keys: 26 [root@linux-node1 ~]# salt '*' test.ping 27 linux-node1.example.com: 28 True

同樣的minion相關操作我們也在node2上執行一邊

 1 [root@linux-node1 ~]# cat /etc/yum.repos.d/saltstack.repo 
 2 [saltstack-repo] 3 name=SaltStack repo for RHEL/CentOS $releasever 4 baseurl=https://repo.saltstack.com/yum/redhat/$releasever/$basearch/latest 5 enabled=1 6 gpgcheck=0 7 [root@linux-node1 ~]# yum install -y salt-minion 8 [root@linux-node1 ~]# systemctl start salt- minion 9 [root@linux-node1 ~]# vim /etc/salt/minion 10 master: 11 - 192.168.56.11 # 前面2個空格,“-”后一個空格! 12 [root@linux-node1 ~]# systemctl start salt-minion

然后回到node1上

 1 [root@linux-node1 ~]# salt-key -L
 2 Accepted Keys: 3 linux-node1.example.com 4 Denied Keys: 5 Unaccepted Keys: 6 linux-node2.example.com 7 Rejected Keys: 8 [root@linux-node1 ~]# salt-key –a linux-node2.example.com # 代表單獨接受某個key 9 [root@linux-node1 ~]# salt-key –L 10 [root@linux-node1 ~]# salt-key -L 11 Accepted Keys: 12 linux-node1.example.com 13 linux-node2.example.com 14 Denied Keys: 15 Unaccepted Keys: 16 Rejected Keys: 17 [root@linux-node1 ~]# salt '*' test.ping 18 linux-node2.example.com: 19  True 20 linux-node1.example.com: 21 True

在初使用salt的時候,我們要是記住的最重要的命令就是cmd.run,cmd.run很重要,它就是專門來執行bash命令的,也就是讓你所希望的機器都執行同一條命令,這對於同類機器的操作節約了大量時間,單單會使用cmd.run就可以使日常重復性工作減少很多了

1 [root@linux-node1 ~]# salt '*' cmd.run 'ls -l /root'
2 linux-node2.example.com:
3     total 0
4 linux-node1.example.com: 5 total 0 6 drwxr-xr-x 5 root root 79 Nov 13 16:35 tidb-latest-linux-amd64

這里有一些常見的問題

1.master與minion是如何通信的?minion上木有開神馬端口呀

Saltstack默認使用zeromq傳遞消息,zeromq會隨着Salt的安裝而安裝,他是一個消息隊列服務,master通過4505端口將指令放入zeromq的隊列中,而所有的minion都會監聽master的4505端口,然后從隊列中拿消息進行對比決定是否進行操作,如果操作將自己操作的結果丟回zeromq另外一個隊列,master從4506端口監聽該隊列,得到返回結果,然后展示出來

 1 [root@linux-node1 ~]# netstat -tpln
 2 Active Internet connections (only servers) 3 Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name 4 tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 1/systemd 5 tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 998/sshd 6 tcp 0 0 0.0.0.0:4505 0.0.0.0:* LISTEN 1055/python # 發送指令 7 tcp 0 0 0.0.0.0:4506 0.0.0.0:* LISTEN 1073/python # 接受結果 8 tcp6 0 0 :::111 :::* LISTEN 1/systemd 9 tcp6 0 0 :::22 :::* LISTEN 998/sshd 10 [root@linux-node2 tmp]# netstat -an|grep 4505 11 tcp 0 0 192.168.56.12:48492 192.168.56.11:4505 ESTABLISHED # 與master的4505一直處於ESTABLISHED狀態

2.我的key認證不想用主機名,我想自定義名稱

我們只需要在配置minion時再配置id就可以了,但是建議還是使用主機名,因為不是所有軟件都可以自定義別名,我們要做的是全流程自動化,而不單單是salt這方面,而主機名是大家都可以通用的

1 [root@linux-node1 ~]# vim /etc/salt/minion
2 #id:                                # 修改成id: XXXXX

3.我更改了主機名沒什么反映啊,怎么破?

這就要說salt之間的認證流程了

啟動master,生成自己的密鑰與公鑰,叫master.pem ,master.pub

1 [root@linux-node1 master]# pwd
2 /etc/salt/pki/master
3 [root@linux-node1 master]# ls
4 master.pem  master.pub  minions  minions_autosign  minions_denied  minions_pre  minions_rejected

minion配置文件內指定Master,開啟服務,生成自己的密鑰與公鑰,叫minion.pem ,minion.pub

1 [root@linux-node2 minion]# pwd
2 /etc/salt/pki/minion
3 [root@linux-node2 minion]# ls
4 minion.pem  minion.pub

minion會想配置的目標發將自己的公鑰存放在master的/etc/salt/pki/master/minions_pre下,請問你是我的master嘛

master一看,我靠,女裝大佬,可愛,想,就表示,對對對我就是你的master,然后接受密鑰,並把自己的公鑰發給minion從而正式簽訂契約,此時minions_pre下的minion公鑰轉放到/etc/salt/pki/master/minions下,而master的公鑰也會在minion的/etc/salt/pki/minion下保留一份

1 [root@linux-node2 minion]# ls
2 minion_master.pub  minion.pem  minion.pub

所以我們根據上述流程,當minion的id變更后,我們需要進行如下操作

1 minion端停止salt-minion
2 master端salt-key –d 原本minion的id 3 minion端刪除/etc/salt/pki/minion下所有文件 4 minion端修改配置文件中的id變成需要的新id 5 重啟minion端的salt-minion 6 master端認證接受新的id

 4.補充兩個對同一台機器同時執行state文件的方式

concurrent=True,表示完全同時進行,一般用於狀態文件之間的執行絕對不會發生沖突的情況,比如執行內核初始化狀態文件跟安裝java環境狀態文件

queue=True,表示按隊列內先進先出順序進行,一般用於不清楚是否有沖突,比如執行修改同一文件的不同行的狀態文件,第一個執行完會自己執行第二個,不會報錯

[root@linux-node1 ~]# salt '*1*' state.sls dnsmasq.dnsmasq-comment saltenv=prod pillar='{"project_url": "static.duia.com"}' concurrent=True
[root@linux-node1 ~]# salt '*1*' state.sls dnsmasq.dnsmasq-comment saltenv=prod pillar='{"project_url": "static.duia.com"}' queue=True

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM