SaltStack由Master和Minion構成,Master 是服務端, 表示一臺服務器;Minion是客戶服務端,表示多臺服務器。在Master上發送命令給符合條件的Minion,Minin就會執行相應的命令,Master和Minion之間是經過ZeroMQ (消息隊列)進行通訊的。node
SaltStack的Master端監聽4505與4506端口,4505爲Master和Minion認證通訊端口,4506爲Master用來發送命令或者接收Minion的命令執行返回信息。web
當客戶端啓動後,會主動鏈接Master端註冊,而後一直保持該TCP鏈接,而Master經過這條TCP鏈接對客戶端進行控制。若是鏈接斷開,Master對客戶端將不能進行控制。可是,當客戶端檢查到鏈接斷開後,會按期向Master端請求註冊鏈接。apache
角色 | 主機名 | IP地址 |
---|---|---|
master | master | 192.168.10.157 |
minion | web1 | 192.168.10.161 |
minion | web2 | 192.168.10.129 |
master: vim /etc/hostname master //修改主機名 vim /etc/hosts 192.168.10.157 master 192.168.10.161 web1 192.168.10.129 web2 init 6 //重啓
web1: vim /etc/hostname web1 //修改主機名 vim /etc/hosts 192.168.10.157 master 192.168.10.161 web1 192.168.10.129 web2 init 6 //重啓
web2: vim /etc/hostname web2 //修改主機名 vim /etc/hosts 192.168.10.157 master 192.168.10.161 web1 192.168.10.129 web2 init 6 //重啓
yum install epel-release -y
yum install salt-master -y
vim /etc/salt/master interface: 192.168.10.157 //15行,改成爲本機地址 auto_accept: True //215行,自動認證被控端的認證 file_roots: //416-418行,去掉註釋開啓 base: - /srv/salt //這個目錄默認是沒有的,須要建立。 pillar_roots: //529-531行, 去掉註釋開啓 base: - /srv/pillar //這個目錄默認是沒有的,須要建立。 pillar_opts: True //552行,開啓pillar功能 nodegroups: //710行,組的分類 group1: 'web1' group2: 'web2'
cat /etc/salt/master | grep -v ^$ | grep -v ^#
mkdir /srv/salt mkdir /srv/pillar
systemctl stop firewalld.service setenforce 0 //關閉防火牆和安全功能 systemctl start salt-master.service 開啓服務 netstat -ntap | egrep '4505|4506'
yum install salt-minion -y
vim /etc/salt/minion master: 192.168.10.157 //16行,指定控制端IP id: web1 //78行,指定本機主機名,web2則爲web2
systemctl stop firewalld.service setenforce 0 //關閉防火牆和安全功能 systemctl start salt-minion.service //開啓服務
salt '*' test.ping web2: True web1: True
vim /srv/salt/top.sls base: '*': //表示在全部的客戶端執行apache模塊 - apache
vim /srv/salt/apache.sls apache-service: pkg.installed: - names: - httpd - httpd-devel service.running: - name: httpd - enable: True
systemctl restart salt-master
salt '*' state.highstate web2: ---------- ID: apache-service Function: pkg.installed Name: httpd Result: True Comment: Package httpd is already installed. Started: 15:22:08.547203 Duration: 1363.436 ms Changes: ---------- ID: apache-service Function: pkg.installed Name: httpd-devel Result: True Comment: Package httpd-devel is already installed. Started: 15:22:09.910806 Duration: 0.533 ms Changes: ---------- ID: apache-service Function: service.running Name: httpd Result: True Comment: Service httpd is already enabled, and is in the desired state Started: 15:22:09.911959 Duration: 360.802 ms Changes: Summary ------------ Succeeded: 3 Failed: 0 ------------ Total states run: 3 web1: ---------- ID: apache-service Function: pkg.installed Name: httpd Result: True Comment: Package httpd is already installed. Started: 15:22:08.546047 Duration: 1364.252 ms Changes: ---------- ID: apache-service Function: pkg.installed Name: httpd-devel Result: True Comment: Package httpd-devel is already installed. Started: 15:22:09.910497 Duration: 0.516 ms Changes: ---------- ID: apache-service Function: service.running Name: httpd Result: True Comment: Service httpd is already enabled, and is in the desired state Started: 15:22:09.911733 Duration: 375.981 ms Changes: Summary ------------ Succeeded: 3 Failed: 0 ------------ Total states run: 3
接上圖
經過執行結果看到了三個ID,它們至關於三個任務,第一個安裝httpd,第二個安裝httpd-devel,第三個啓動。而且顯示三個都成功了,失敗爲零。vim
web1:
web2:安全
實驗完成服務器