Java 通过Ansible playbook部署应用程序,而不会使双方都失望

Java 通过Ansible playbook部署应用程序,而不会使双方都失望,java,amazon-web-services,jenkins,ansible,Java,Amazon Web Services,Jenkins,Ansible,我正在使用Ansible部署Java web应用程序。通过Ansible运行Jenkins playbook,将一个jar文件复制到两个单独的应用程序服务器,称为node-01a和node-01b,这两个服务器都位于AmazonAWS负载平衡器后面,部署非常简单 目前,部署同时在node-01a和node-01b上进行。如果两个节点不同时关闭,最简单的方法是什么?您可以为任务使用serial参数。看见这是每场戏 您还可以使用命令行param--forks=forks在playbook级别指定“并

我正在使用Ansible部署Java web应用程序。通过Ansible运行Jenkins playbook,将一个jar文件复制到两个单独的应用程序服务器,称为node-01a和node-01b,这两个服务器都位于AmazonAWS负载平衡器后面,部署非常简单


目前,部署同时在node-01a和node-01b上进行。如果两个节点不同时关闭,最简单的方法是什么?您可以为任务使用
serial
参数。看见这是每场戏

您还可以使用命令行param
--forks=forks
在playbook级别指定“并行度”

可能与您无关,但仅为了完整性,请允许我:

任务按顺序对所有机器执行,一次一个 在继续执行下一个任务之前,由主机模式匹配


我更喜欢使用Ansible playbook中的标签逐区域运行滚动更新。您应该始终在多个区域中使用ELB服务器,因此使用该原则是一个好主意

对于任何一台服务器,让我们假设您有两个标记—Application(应用程序:SuperApp为例)和AvailabilityZone(AvailabilityZone:us-east-1a,AvailabilityZone:us-east-1d为例)。我这样做是为了确保只有当两个应用程序都设置为SuperApp并且在脚本运行时AvailabilityZone设置为适当的区域时,我才运行脚本

这样,我就可以在使用ec2.py清单脚本时使用名为“doCoolStuff.yaml”的include脚本:

- 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

当然,您需要在doCoolStuff角色和doCoolStuff.yaml include脚本中做更多的工作,但整个过程包含在上面。

如何使用ansible在两个节点上部署java应用程序?你能分享一些文档或教程吗@乌贾因