Linux下SaltStack案例—httpd(一)

续我的上篇博文:https://mp.csdn.net/postedit/88882456。即SaltStack已经安装并配置好

 

一、实验环境(rhel7.3版本)

1selinux和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)。再次开机,进行测试,发现推送成功。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值