saltstack自动化部署nginx、htpd,grains静态方式取值

本文详细介绍了在多节点环境下部署HTTPD和Nginx的过程,包括目录结构设置、依赖包管理、源码编译安装、服务管理及通过SaltStack进行状态管理与推送部署的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多节点httpd部署

目录结构
在这里插入图片描述

install-apache:
  pkg.installed:
    - pkgs:
      - httpd

  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf

  service.running:
    - name: httpd
    - watch:
      - file: install-apache

编写top.sls

base:
  roles:
    - apache.install
salt ‘*’ state.sls apache.install

在这里插入图片描述

nginx部署

###依赖包放在统一文件中,便于调用
也可以定义多个,在源码编译时需要哪个直接include即可
在这里插入图片描述
在这里插入图片描述
nginx管理目录
在这里插入图片描述

源码编译安装:nginx

include:
  - pkgs.install

install-nginx:
  file.managed:
    - name: /mnt/nginx-1.15.8.tar.gz
    - source: salt://nginx/files/nginx-1.15.8.tar.gz

  cmd.run:
    - name: cd /mnt && tar zxf nginx-1.15.8.tar.gz && cd nginx-1.15.8 && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx && make && make install

    - creates: /usr/local/nginx
~                                         

服务管理:service.sls

i[root@server1 salt]# cat nginx/service.sls 
include:
  - nginx.install

/usr/local/nginx/conf/nginx.conf:
  file.managed:
    - source: salt://nginx/files/nginx.conf

service-nginx:
  file.managed:
    - name: /usr/lib/systemd/system/nginx.service
    - source: salt://nginx/files/nginx.service
  
  service.running:
    - name: nginx
    - reload: True 不添加默认restart
    - watch:
      - file: /usr/local/nginx/conf/nginx.conf

推送部署

[root@server1 nginx]# salt server3 state.sls nginx.service

在这里插入图片描述
minion端已经完成部署
在这里插入图片描述

nginx的systemd方式启动脚本,可以直接从官网下载

[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/usr/sbin/nginx -s reload
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target
grains静态取值方式

grains配置方式多种
1、在master自定义模块,然后同步至minion上

[root@server1 salt]# mkdir /srv/salt/_grains
def my_grains():
     # initialize a grains dictionary
     grains = {}
     # Some code for logic that sets grains like
     grains['hello'] = 'world' 	###这里内容可以自定义
     grains['salt'] = 'stack'
     return grains

2、同步模块至minion端,在minion端可以查看到自定义模块

在这里插入图片描述在这里插入图片描述
3、在minion修改minion配置文件也可以修改,修改配置文件需要重启minion服务
在这里插入图片描述
4、minion也可以创建grains文件,在其中添加roles
在这里插入图片描述
grains静态的,因为它们不经常更换,它们在更新时需要刷新,使用下面命令

salt minion saltutil.refresh_modules  
salt grans.ls 列出所有保留字
salt grains.item xxx :取值
salt grains.items :取出所有值

在这里插入图片描述
5、测试,可以取到添加的值,这样在自动化部署时候无需使用主机名,而直接取匹配grains取到的变量即可。方便管理
在这里插入图片描述
在部署时则需要使用match去匹配
在这里插入图片描述
使用state.highstate推送

salt '*' state.highstate

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值