saltstack自动化部署——nginx服务

本篇博客承接saltstack安装部署,以部署nginx为例,介绍用源码包部署服务的sls文件编写。包括创建目录、放置安装包、编写sls文件、推送安装、启动服务等操作,还展示了同时推送多个服务及添加角色的方法。

本篇博客承接saltstack安装部署
以部署nginx为例,写一个用源码包部署服务的sls文件。
在这里插入图片描述
创建nginx目录,在目录内创建files目录。
在这里插入图片描述
在files目录中放置安装包。
安装nginx

[root@server1 nginx]# vim install.sls 
nginx-install:
  pkg.installed:
    - pkgs:
      - gcc
      - make
      - pcre-devel
      - zlib-devel

  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 &> /dev/null \
    - && make &> /dev/null && make install &> /dev/null
    - creates: /mnt/nginx-1.15.8

编写sls文件。
在这里插入图片描述
推送,在server2上安装nginx。
在这里插入图片描述
在server2的mnt目录查看,有传过去的安装包化解压的目录。
为了方便启动,我们做一个使用systemctl启动。

[root@server2 system]# pwd
/etc/systemd/system
[root@server2 system]# vim nginx.service
[Unit]
Description=The NGINX HTTP and reverse proxy Server
After=network.target remote-fs.target nss-lookup.target

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

[Install]
WantedBy=multi-user.target
[root@server2 system]# systemctl start nginx

在这里插入图片描述
在server2启动nginx。
开启nginx

[root@server1 nginx]# vim service.sls
include:
  - nginx.install

/usr/local/nginx/conf/nginx.conf:
  file.managed:
    - source: salt://nginx/files/nginx.conf					##主配置文件存放目录

nginx-service:
  file.managed:
    - name: /etc/systemd/system/nginx.service
    - source: salt://nginx/files/nginx.service

  service.running:
    - name: nginx
    - enable: true
    - reload: true
    - watch:
      - file: /usr/local/nginx/conf/nginx.conf

编写sls文件。
在这里插入图片描述
在files目录中存放nginx.service和主配置文件,修改主配置文件的内容就可以同步到远程主机上。

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

在这里插入图片描述
在这里插入图片描述
推送后在server2查看,nginx服务打开了。
同时推送多个服务

[root@server1 salt]# vim top.sls 
base:
  'server3':
    - httpd.service					##在前一篇博客已经配置	
  'server2':
    - nginx.service

同时推送nginx服务和httpd服务。
添加角色
在server2:

[root@server2 ~]# vim /etc/salt/minion

在这里插入图片描述
添加nginx角色。
在这里插入图片描述
在server1查看。

[root@server3 ~]# cd /etc/salt/
[root@server3 salt]# ls
cloud           cloud.maps.d       master    minion.d   proxy
cloud.conf.d    cloud.profiles.d   master.d  minion_id  proxy.d
cloud.deploy.d  cloud.providers.d  minion    pki        roster
[root@server3 salt]# vim grains

在这里插入图片描述

[root@server3 salt]# systemctl restart salt-minion.service

也可以通过这样的方式添加角色。
在这里插入图片描述
在server1查看,这里是前面设定的角色。

### 推荐的服务自动化测试框架 #### Ansible Ansible 是一个简单却强大的 IT 自动化引擎,它能简化云托管、配置管理、应用部署、任务编排等工作流。通过 SSH 协议连接远程主机并执行命令,无需额外软件代理即可完成操作。其核心特性之一就是可读性强的 Playbook 文件,采用 YAML 格式的剧本描述了待实施的任务列表[^5]。 ```yaml --- - name: Ensure Apache is at the latest version yum: name: httpd state: latest ``` #### SaltStack SaltStack 提供了一种新的方式来管理和控制基础设施中的大量设备和服务。除了基本的配置管理和状态监控外,还具备事件驱动架构以及异步通信机制,允许快速响应变化的需求。利用 ZeroMQ 或者 TCP 进行消息传递,默认情况下 master 和 minion 节点间建立安全通道传输数据[^6]。 ```bash salt '*' test.ping ``` #### Chef Chef 使用 Ruby 编写的 DSL (领域特定语言) 来定义资源及其属性,从而实现对计算环境的一致性和可靠性维护。Cookbooks 中包含了 Recipe 配方文件用于指定要采取的动作序列,而 Policyfiles 则进一步增强了多版本依赖关系处理能力。此外,Ohai 工具负责收集有关节点硬件和操作系统层面的信息以便更好地适配不同平台下的差异性需求[^7]。 ```ruby package 'nginx' do action :install end ``` #### Puppet Puppet 同样基于声明式编程模型构建而成,管理员只需说明期望达到的目标而非具体过程细节。Manifest 表达式里指定了目标系统的最终形态——即哪些包应该被安装?服务是否启动?文件内容又该如何设置等问题的答案。Hiera 数据查找工具帮助分离业务逻辑同敏感参数之间的耦合度,使得整个体系结构更加清晰易懂[^8]。 ```puppet class { 'ntp': servers => ['0.pool.ntp.org', '1.pool.ntp.org'], } ``` ### 如何选择适合自己的服务自动化测试框架? 考虑到个人偏好和技术栈的不同,在挑选合适的产品之前应当充分评估各个选项的优势劣势: - **学习曲线**:如果团队成员普遍熟悉 Python,则可能倾向于选用 Ansible 或 SaltStack;反之若是偏向于 Ruby 开发背景的话,那么 Chef 可能会成为更好的候选方案。 - **社区活跃程度和支持力度**:开源项目往往依靠广大爱好者贡献智慧结晶共同成长壮大,因此官方文档质量高低直接影响后期运维成本大小。 - **集成兼容性考量**:确保所选产品能够良好对接现有 CI/CD 流程以及其他第三方插件扩展生态链路。 ### 构建与运用服务自动化测试框架指南 一旦决定了心仪的解决方案之后就可以着手准备具体的实施方案了: - 安装必要的运行时环境; - 设计合理的目录布局规划; - 创建初始配置模板样本; - 编写针对性强的有效脚本片段; - 执行初步的功能验证实验; - 记录详尽的日志便于后续排查错误原因所在之处。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值