SalStack由master和minion構成,master是服務端,表示一臺服務器;minion是客戶端,表示多臺服務器。在Master上發送命令給符合條件的minion,Minion就會執行相應的命令。Master和Minion之間是經過ZeroMQ(消息隊列)進行通訊的。node
SaltStack的Master端的監聽端口是4505和4506,4505端口是Master和Minion認證通訊端口;4506端口是Master用來發送命令或者接收Minion的命令執行返回信息。web
當客戶端啓動後,會主動鏈接Master端註冊,而後一直保持該TCP鏈接,而Master經過這條TCP鏈接對客戶端進行控制。apache
(1)、pkg模塊 pkg模塊的做用是包管理,包括增刪更新。 (2)、file模塊 file模塊的做用的管理文件操做,包括同步文件、設置文件權限和所屬用戶組、刪除文件等操做。 (3)、cmd模塊 cmd模塊的做用是在Minion上執行命令或者腳本。 (4)、user模塊 user模塊的做用是管理系統帳戶操做。 (5)、service模塊 service模塊的做用是管理系統服務操做。 (6)、cron模塊 cron模塊的做用是管理cron服務操做。
角色 | 主機名 | IP地址 |
---|---|---|
master | master.saltstack.com | 172.16.10.138 |
minion | web01.saltstack.com | 172.16.10.147 |
minion | web02.saltstack.com | 172.16.10.146 |
vim /etc/hostnamevim
三臺主機分別爲: master.saltstack.com //(管理) web01.saltstack.com //(被管理) web02.saltstack.com //(被管理)
vim /etc/hosts安全
172.16.10.138 master.saltstack.com 172.16.10.147 web01.saltstack.com 172.16.10.146 web02.saltstack.com //修改完成後,init 6 重啓服務器使配置生效
systemctl stop firewalld.service //關閉防火牆 setenforce 0 //關閉加強性安全功能
yum install -y epel-release //配置安裝軟件源 yum install -y salt-master //管理端安裝 yum install -y epel-release //配置安裝軟件源 yum install -y salt-minion //被管理端安裝
vim /etc/salt/master服務器
修改以下: 15行 interface: 172.16.10.138 //監聽地址(本地地址) 215行 auto_accept: True //避免要運行salt-key來確認證書認證 416行 file_roots: base: - /srv/salt //saltstack文件根目錄位置,目錄須要建立 710行組分類: nodegroups: group1: 'web01.saltstack.com' group2: 'web02.saltstack.com' 552行 pillar_opts: True //開啓pillar功能,同步文件功能 529行 pillar_roots: base: - /srv/pillar //pillar的主目錄,須要建立
cat /etc/salt/master | grep -v ^$ | grep -v ^# 運維
mkdir /srv/salt //建立saltstack文件根目錄 mkdir /srv/pillar //建立pillar的主目錄
systemctl start salt-master.service //開啓salt-master服務 systemctl enable salt-master.service //設置開機自啓動 netstat -anpt | egrep '4505|4506' //檢查master的端口是否開啓
vim /etc/salt/minionide
16行 master: 172.16.10.138 //指定主控端IP 78行 id: web01.saltstack.com //指定被控端主機名 id: web02.saltstack.com //第二臺被控端主機名
systemctl start salt-minion.service
salt '*' test.ping //*表示全部主機 salt '*' cmd.run 'df -h' //遠程執行命令 salt-key //查看在 master 上已經被接受過的客戶端 salt 'web01.saltstack.com' grains.items (靜態數據) salt 'web01.saltstack.com' pillar.items (動態數據)
vim /srv/salt/top.sls函數
base: '*': - apache 注意:'*',則表示在全部的客戶端執行 apache 模塊。
vim /srv/salt/apache.sls測試
apache-service: pkg.installed: - names: // 若是隻有一個服務,那麼就能夠寫成 –name: httpd 不用再換一行 - httpd - httpd-devel service.running: - name: httpd - enable: True 注意:apache-service 是自定義的 id 名。pkg.installed 爲包安裝函數,下面是要安裝的包的名字。service.running 也是一個函數,來保證指定的服務啓動,enable 表示開機啓動。
systemctl restart salt-master.service
salt '*' state.highstate