续我的上篇博文:https://mp.csdn.net/postedit/88882456。即SaltStack已经安装并配置好
一、实验环境(rhel7.3版本)
1、selinux和firewalld状态为disabled
2、各主机信息如下:
主机 | ip |
---|---|
server1(master) | 172.25.83.1 |
server2(minion) | 172.25.83.2 |
二、SaltStack部署及案例—httpd
案例一:rpm部署安装httpd
1.修改配置文件
[root@server1 ~]# vim /etc/salt/master #将674行,675行和676行的注释去掉
674 file_roots:
675 base:
676 - /srv/salt
[root@server1 ~]# mkdir /srv/salt
[root@server1 ~]# systemctl restart salt-master #修改配置文件之后,要重启服务
2.部署脚本
[root@server1 ~]# cd /srv/salt
[root@server1 salt]# mkdir httpd #该目录的名字随意给,因为我这里要部署的是httpd服务,所以这里创建了httpd目录
[root@server1 salt]# cd httpd/
[root@server1 httpd]# vim apache.sls #该文件的名字任意给,但是一定要以.sls结尾
install-httpd: #该名字可以随意给,但是后面必须跟:
pkg.installed: #使用pkg模块的installed方法,进行安装
- pkgs: #安装列表
- httpd #安装httpd
- php #安装php
- php-mysql #安装php-mysql
3.执行推送
[root@server1 httpd]# pwd
/srv/salt/httpd
[root@server1 httpd]# ls
apache.sls
[root@server1 httpd]# salt server2 state.sls httpd.apache #可以在任意目录下执行
4.minion端查看,安装成功
[root@server2 ~]# rpm -q httpd
[root@server2 ~]# rpm -q php
[root@server2 ~]# rpm -q php-mysql
案例二:部署安装&启动httpd
1.部署脚本
[root@server1 httpd]# vim apache.sls
install-httpd:
pkg.installed:
- pkgs:
- httpd
- php
- php-mysql
service.running: #使用service模块的running方法
- name: httpd #开启httpd服务
- enable: True #设置httpd服务开机自启
2.执行推送
[root@server1 httpd]# salt server2 state.sls httpd.apache
3.minion端查看,开启80端口,启动成功,开机自启设置成功
案例三:安装&启动&配置httpd
1.在httpd中创建files目录用于存放httpd配置文件
[root@server1 ~]# cd /srv/salt/httpd/
[root@server1 httpd]# ls
apache.sls
[root@server1 httpd]# mkdir files #该目录的名字随意给。因为我这里是用来存放httpd.conf文件的,所以这里创建的目录的名字是files
2.minion将配置文件传给master(因为master端没有httpd的配置文件httpd.conf,而server1端在案例一时装过httpd服务,生成了httpd.conf文件)
[root@server2 ~]# scp /etc/httpd/conf/httpd.conf server1:/srv/salt/httpd/files
3.master中更改httpd的端口号为8080
[root@server1 files]# pwd
/srv/salt/httpd/files
[root@server1 files]# vim httpd.conf
42 Listen 8080
4.部署脚本
[root@server1 httpd]# pwd
/srv/salt/httpd
[root@server1 httpd]# vim apache.sls
install-httpd:
pkg.installed:
- pkgs:
- httpd
- php
- php-mysql
file.managed: #调用file模块的managed方法,拷贝文件
- name: /etc/httpd/conf/httpd.conf #拷贝到目标主机的/etc/httpd/conf/httpd.conf
- source: salt://httpd/files/httpd.conf #拷贝/src/salt/httpd/files/httpd.conf文件
service.running:
- name: httpd
- enable: True
5.执行推送
[root@server1 httpd]# salt server2 state.sls httpd.apache
6.minion端查看,minion(server2)的配置文件端口改为8080,但8080端口未开启,并未加载服务,只有当重启httpd服务时,才会成功加载服务
[root@server2 ~]# vim /etc/httpd/conf/httpd.conf
案例四:安装&启动&配置&加载httpd
注意:只有执行更改配置文件操作后,才会生效
1.master中更改httpd的端口号为8080(因为只有当minion端的配置文件httpd.conf发生改变时才能触发)
[root@server1 files]# pwd
/srv/salt/httpd/files
[root@server1 files]# vim httpd.conf
42 Listen 8888
2.部署脚本
方法一:
[root@server1 httpd]# vim apache.sls
install-httpd:
pkg.installed:
- pkgs:
- httpd
- php
- php-mysql
file.managed:
- name: /etc/httpd/conf/httpd.conf
- source: salt://httpd/files/httpd.conf
service.running:
- name: httpd
- enable: True
- reload: True #重新加载httpd服务
watch: #监控触发
- file: install-httpd
方法二:
install-httpd:
pkg.installed:
- pkgs:
- httpd
- php
- php-mysql
service.running:
- name: httpd
- enable: True
- reload: True
watch:
- file: /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
file.managed:
- name: /etc/httpd/conf/httpd.conf #这行可以不要,因为这部分的标签就是/etc/httpd/conf/httpd.conf
- source: salt://httpd/files/httpd.conf
方法三:
httpd:
pkg.installed: #但是这里只安装了httpd,并没有安装php和php-mysql。因为这部分定义的名字是httpd,所以相当于安装了httpd
httpd-service:
service.running:
- name: httpd
- enable: True
- reload: True
watch:
- file: /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf:
file.managed:
- source: salt://httpd/files/httpd.conf
2.执行推送
[root@server1 httpd]# salt server2 state.sls httpd.apache
3.minion端查看,minion(server2)的8888端口开启
案例五:安装&启动&配置&加载httpd—文件分离
1.安装
[root@server1 httpd]# pwd
/srv/salt/httpd
[root@server1 httpd]# ls
apache.sls files
[root@server1 httpd]# mv apache.sls install.sls
[root@server1 httpd]# vim install.sls
httpd:
pkg.installed
[root@server1 httpd]# salt server2 state.sls httpd.install
- server2端查看httpd是否已经安装
2.加载服务
[root@server1 httpd]# pwd
/srv/salt/httpd
[root@server1 httpd]# ls
files install.sls
[root@server1 httpd]# vim service.sls
/etc/httpd/conf/httpd.conf:
file.managed:
- source: salt://httpd/files/httpd.conf
httpd-service:
service.running:
- name: httpd
- enable: False
- reload: True
watch:
- file: /etc/httpd/conf/httpd.conf
[root@server1 httpd]# salt server2 state.sls httpd.service
- 在server2端查看8080端口是否已经开启
3.安装&加载服务
将以上两个文件结合起来,重新写入service.sls文件
[root@server1 httpd]# pwd
/srv/salt/httpd
[root@server1 httpd]# ls
files install.sls
[root@server1 httpd]# vim service.sls
include:
- httpd.install
/etc/httpd/conf/httpd.conf:
file.managed:
- source: salt://httpd/files/httpd.conf
httpd-service:
service.running:
- name: httpd
- enable: False #设置开机不自启
- reload: True
watch:
- file: /etc/httpd/conf/httpd.conf
[root@server1 httpd]# salt server2 state.sls httpd.service
- server2端查看httpd是否已经安装
- 在server2端查看8080端口是否已经开启
在配置过程中遇到的问题2:在执行推送时,httpd服务启动失败,如下图所示:
反复检查文件的编写,没有发现问题。利用“free -m”查看内存,可以看到剩余内存特别小,此时将minion端(serevr2)关机,增大内存(由原来的512,增大到1024)。再次开机,进行测试,发现推送成功。