在AWS中使用Ansible进行蓝绿部署

3

我打算使用Ansible来管理我的AWS基础设施;我有两个带有自动扩展功能的服务器。

我将使用ansible-playbook -i hosts deploy-plats.yml --limit spring-boot进行部署。

这是我的deploy-plats.yml文件。

---
- hosts: bastion:apache:spring-boot
  vars:
  remote_user: ec2-user
  tasks:
  - name: Copies the .jar to the Spring Boot boxes
    copy: dest=~/ src=~/dev/plats/target/plats.jar mode=0777
  - name: Restarts the plats service
    service: name=plats state=restarted enabled=yes
    become: yes
        become_user: root

我想知道使用这项技术是否会采用蓝绿部署方法,还是服务器将同时重启,并产生停机时间。

3个回答

4
默认情况下,Ansible将尝试并行管理play中引用的所有机器。对于滚动更新的用例,您可以使用serial关键字定义Ansible应同时管理多少个主机。 (也许您正在寻找这样的内容而不是蓝绿部署)
- name: test play
  hosts: webservers
  serial: 1

Ansible-Serial-Link

此外,您的playbook不是一种蓝绿部署。我建议您了解一下它。

蓝绿部署是一种软件部署策略,依赖于两个相同的生产配置,这两个配置交替使用,一个环境被称为蓝色,而重复的环境被称为绿色。蓝色和绿色两个环境都可以处理全部的生产工作量,并且交替使用,而不是作为主要和次要空间。任何时候只有一个环境是活跃的,另一个是闲置的。当新的软件版本准备好后,团队会将其部署到闲置环境中进行彻底测试。一旦新版本经过审核,团队将使闲置环境变为活动状态,通常通过调整路由器配置来重定向应用程序流量。这样,备用环境就处于闲置状态。


0
默认情况下,Ansible会并行运行每个任务。您可以设置play级别的指令"serial"来强制在一个节点上运行play。详细信息请参阅: "委派、滚动更新和本地操作"

0

串行标签必须解决您的问题。将值限制为1,以便重新启动任务可以以滚动方式执行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接