我正在使用Ansible部署Java应用程序。通过Ansible运行Jenkins游戏手册、将jar文件复制到两个单独的应用服务器(称为节点-01A和节点-01b),部署是非常基本的,这两个服务器都位于Amazon负载均衡器后面。
目前,部署同时发生在节点-01A和节点-01b上。在没有两个节点同时停机的情况下,最简单的方法是什么?
发布于 2015-03-23 22:05:26
您可以为任务使用serial参数。见文档。这是每场比赛。
您还可以使用命令行param --forks=FORKS在剧本级别指定“并行度”。
也许与您无关,但只是为了完整性,让我也来看看引证
在转到下一个任务之前,针对主机模式匹配的所有机器,依次执行任务。
发布于 2015-03-26 21:47:39
我更喜欢运行滚动更新在一个地区的基础上使用标签在一个Ansible剧本。您应该始终将您的ELB服务器放在多个区域中,因此使用该主体是一个好主意。
对于任何一台服务器,假设您有两个标记-应用程序(应用程序:SuperApp作为示例)和AvailabilityZone (可用区域:us-east-1a,AvailabilityZone:us-east-1d )。这样做是为了确保只在两个应用程序都设置为SuperApp时才运行脚本,并且在运行脚本时将AvailabilityZone设置为适当的区域。
这样,在使用ec2.py目录脚本时,我就可以使用一个名为“doCoolStuff.yaml”的包含脚本:
- hosts: tag_Application_SuperApp:&tag_AvailabilityZone_us-east-1a
gather_facts: False
roles:
- doCoolStuffRole
tasks:
- include: doCoolStuff.yaml
- hosts: tag_Application_SuperApp:&tag_AvailabilityZone_us-east-1d
gather_facts: False
roles:
- doCoolStuffRole
tasks:
- include: doCoolStuff.yaml当然,您需要在doCoolStuffRole角色和doCoolStuff.yaml包含脚本中做更多的工作,但是整个过程包括在上面。
https://stackoverflow.com/questions/29220737
复制相似问题