ansible自动化部署_使用Ansible自动化部署策略

本文探讨了自动化部署的重要性,特别是在减少手动配置错误和提高效率方面。通过介绍Ansible的任务、组和剧本,阐述了如何利用Ansible进行有序、可控的多层编排和滚动升级。Ansible的错误控制和丰富的模块库使其成为应用程序部署的理想选择。
摘要由CSDN通过智能技术生成

ansible自动化部署

从底层到顶层(硬件,操作系统(OS),中间件和应用程序)及其各自的配置检查技术堆栈时,很显然,随着堆栈的增加,更改的频率要高得多。 您的硬件几乎不会改变,您的OS的生命周期很长,并且中间件可以满足应用程序的需求,但是即使您的发布周期很长(数周或数月),您的应用程序也是最不稳定的。

Deployment strategy on Ansible

《系统和网络管理实践》中 ,作者将IT中最大的“时间漏洞”归类为操作系统和应用程序部署的手动/非标准配置。 这些时间漏洞将使您厌倦重复性的任务或计划外的工作。

为何如此? 假设您在未正确配置网络时间协议(NTP)的情况下配置了新服务器,并且一小部分请求(在数十个服务器的群集中)开始表现异常,因为应用程序使用某种依赖正确时间的调度程序 。 当您这样看时,这很容易解决,但是您的团队需要花多长时间才能解决? 突发事件或计划外的工作会浪费您大量的时间,甚至更糟的是,您会浪费您的才华。 您是否真的应该浪费时间来研究这样的生产系统? 将这台服务器放在一边并从头开始自动配置一台新服务器会更好吗?

手动部署呢? 想象一下,跨服务器场或节点部署20个二进制文件及其各自的配置文件? 这有多容易出错? 不可避免地,它将最终导致计划外的工作。

《 2018年DevOps状态报告》介绍了采用DevOps的各个阶段,第0阶段包括部署自动化和部署模式的重用也就不足为奇了,而第1阶段和第2阶段则专注于基础架构堆栈的标准化,以减少环境中的不一致情况。

请注意,不止一次,我看到一个运维团队以这种“标准化”为借口来限制开发团队的交付能力,迫使他们用锤子敲打那些绝对不是钉子的东西。 不要做 ; 价格非常高。

这里要学习的教训是缺乏自动化不仅会增加交货时间,而且还会增加过程中的问题发生率以及您面临的计划外工作量。 如果您读过《凤凰计划》 ,您就会知道这是任何价值流中所有邪恶的根源,如果您不摆脱它,最终将扼杀您的业务。

还是不服气? 从开发方面来说,较小且更频繁的发行版也极为有利。 让我们进一步解释一下……

部署≠发布

首先要了解的是,尽管它们可以互换使用,但是部署发布 并不意味着同一件事。 发布是指为用户提供新版本,而部署是部署新版本的技术过程。 让我们专注于部署的技术过程。

任务,组和Ansible

我们需要从头到尾都了解部署过程,包括中间的所有内容(任务,过程中涉及的服务器以及执行的步骤),以避免陷入Mattias Geniar在“ 自动化部署过程”中描述的陷阱。 未知数

任务

常规部署过程中通常执行的步骤包括:

  • 部署应用程序/数据库或数据库更改
  • 停止/启动服务和监视
  • 从我们的负载均衡器添加/删除服务器
  • 验证应用程序状态-是否准备好处理请求?
  • 手动批准-是否有必要?

对于某些人来说,自动执行部署过程却需要手动批准,就像骑着带有训练轮的自行车一样。 正如有人曾经告诉我的那样:“骑行训练轮总比根本不骑行要好。”

如果工具不包含用于启用任务自动化的API或命令行界面(CLI),该怎么办? 好吧,也许是时候考虑更换工具了。 有许多易于实现自动化的开源应用程序服务器,数据库,监视系统和负载平衡器,这在很大程度上要归功于Unix方式 。 在采用新技术时,请消除非自动化的选项,并利用您的创造力来支持您的旧技术。 例如,我见过人们对网络设备配置文件进行版本控制并使用FTP更新它们。

你猜怎么着? 这是采用开源工具的绝佳时机。 最新的Accelerate:DevOps状态报告发现,高性能组织中主要使用开源技术。 逻辑很简单:开源项目以“达尔文主义”模型运作,那些不适应和发展的项目将因缺乏用户群或贡献而死亡。 反馈对于软件发展至关重要。

团体

要确定要实现自动化的服务器组,请考虑要自动化的大多数任务,例如:

  • 部署应用程序/数据库或数据库更改
  • 停止/启动服务和监视
  • 从负载均衡器添加/删除服务器
  • 验证应用程序状态-是否准备好处理请求?

剧本

高层部署过程可以是:

  1. 停止监视(避免误报)
  2. 从负载均衡器中删除服务器(以防止用户收到错误代码)
  3. 停止服务(以启用正常关机)
  4. 部署新版本的应用程序
  5. 等待应用程序准备好接收新请求
  6. 执行步骤3、2和1。
  7. 对接下来的N台服务器执行相同的操作。

拥有流程的文档很好,但是拥有可执行文件的部署更好! 对于完全开源的堆栈,这是Ansible中的步骤1-5的样子:


   
   
- name : Disable alerts
  nagios
:
    action
: disable_alerts
    host
: "{{ inventory_hostname }}"
    services
: webserver
  delegate_to
: "{{ item }}"
  loop
: "{{ groups.monitoring }}"

- name
: Disable servers in the LB
  haproxy
:
    host
: "{{ inventory_hostname }}"
    state
: disabled
    backend
: app
  delegate_to
: "{{ item }}"
  loop
: " {{ groups.lbserver }}"

- name
: Stop the service
  service
: name=httpd state=stopped

- name
: Deploy a new version
  unarchive
: src=app.tar.gz dest=/var/www/app

- name
: Verify application state
  uri
:
    url
: "http://{{ inventory_hostname }}/app/healthz"
    status_code
: 200
  retries
: 5

为什么Ansible?

应用程序部署还有其他选择,但是使Ansible成为绝佳选择的因素包括:

  • 多层编排(例如, proxy_to )使您可以有序地针对服务器的不同组:监视,负载平衡器,应用程序服务器,数据库等。
  • 滚动升级(即串行)以控制进行更改的方式(例如,1乘1,N乘N,一次X%等)
  • 错误控制, max_fail_percentageany_errors_fatal ,我的进程是全包进程还是容忍失败?
  • 大量的模块库,用于:
    • 监视(例如,Nagios,Zabbix等)
    • 负载均衡器(例如,HAProxy,F5,Netscaler,Cisco等)
    • 服务(例如,服务,命令,文件)
    • 部署(例如,复制,取消存档)
    • 程序验证(例如,命令,统一资源标识符)

翻译自: https://opensource.com/article/19/1/automating-deployment-strategies-ansible

ansible自动化部署

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值