自動化運維系列之SaltStack批量部署Apache服務
阿新 • • 發佈:2018-08-15
col .com 函數 base cat 通過 color 生效 thead 自動化運維系列之SaltStack批量部署Apache服務
saltstack原理
SalStack由master和minion構成,master是服務端,表示一臺服務器;minion是客戶端,表示多臺服務器。在Master上發送命令給符合條件的minion,Minion就會執行相應的命令。Master和Minion之間是通過ZeroMQ(消息隊列)進行通信的。
SaltStack的Master端的監聽端口是4505和4506,4505端口是Master和Minion認證通信端口;4506端口是Master用來發送命令或者接收Minion的命令執行返回信息。
當客戶端啟動後,會主動連接Master端註冊,然後一直保持該TCP連接,而Master通過這條TCP連接對客戶端進行控制。
saltstack常用模塊
(1)、pkg模塊
pkg模塊的作用是包管理,包括增刪更新。
(2)、file模塊
file模塊的作用的管理文件操作,包括同步文件、設置文件權限和所屬用戶組、刪除文件等操作。
(3)、cmd模塊
cmd模塊的作用是在Minion上執行命令或者腳本。
(4)、user模塊
user模塊的作用是管理系統賬戶操作。
(5)、service模塊
service模塊的作用是管理系統服務操作。
(6)、cron模塊
cron模塊的作用是管理cron服務操作。
SaltStack部署安裝
- 部署環境
角色 | 主機名 | 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/hostname
三臺主機分別為:
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 ^#
- 創建saltstack文件根目錄、pillar的主目錄
mkdir /srv/salt //創建saltstack文件根目錄
mkdir /srv/pillar //創建pillar的主目錄
- 啟動master服務器(管理端)
systemctl start salt-master.service //開啟salt-master服務
systemctl enable salt-master.service //設置開機自啟動
netstat -anpt | egrep ‘4505|4506‘ //檢查master的端口是否開啟
- 被管理端配置
vim /etc/salt/minion
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 (動態數據)
配置管理安裝Apache
- 在主控端創建入口文件
vim /srv/salt/top.sls
base:
‘*‘:
- apache
註意:‘*‘,則表示在所有的客戶端執行 apache 模塊。
- 創建apache.sls文件並寫入以下內容
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
- 刷新state配置命令,使兩臺被控端安裝apache並配置啟動服務
salt ‘*‘ state.highstate
- 被控端檢查驗證acaphe服務是否安裝啟動
自動化運維系列之SaltStack批量部署Apache服務