Amazon ec2 如何在Ansibe中的50%机器上释放代码

Amazon ec2 如何在Ansibe中的50%机器上释放代码,amazon-ec2,ansible,Amazon Ec2,Ansible,我们在aws中运行了100台机器,标记名为ad_server 那么,我如何才能在50%的机器上运行发布代码呢。 例如: 那么我该怎么做呢?选项1:串行+暂停 这将使用批处理的标准功能进行滚动更新,并需要一些用户交互。 我们添加了带提示的暂停,作为第一个任务,以等待在每批开始时按ENTER键。 因此,在前50%批处理中按ENTER键,然后在要求启动下半批时中止执行 - hosts: tag_Name_ad_server user: ubuntu serial: "50%" tasks:

我们在aws中运行了100台机器,标记名为ad_server 那么,我如何才能在50%的机器上运行发布代码呢。 例如:

那么我该怎么做呢?

选项1:串行+暂停 这将使用批处理的标准功能进行滚动更新,并需要一些用户交互。
我们添加了带提示的
暂停
,作为第一个任务,以等待在每批开始时按ENTER键。
因此,在前50%批处理中按ENTER键,然后在要求启动下半批时中止执行

- hosts: tag_Name_ad_server
  user: ubuntu
  serial: "50%"
  tasks:
    - pause: prompt="Press ENTER to run this batch"
    - shell: echo task1
    - shell: echo task2
在每次playbook运行时,
serial
将始终从库存中选择相同的服务器。在这种情况下,先从列表中删除50%

选项2:形成一个新的动态组 在tag_Name_ad_服务器组中的主机之间循环,形成一个新的50%组。
然后在此新组中执行您的实际任务。
不需要用户交互

- hosts: tag_Name_ad_server
  gather_facts: no
  tasks:
    - group_by: key=50_percent
      when: 100 | random > 50

- hosts: 50_percent
  user: ubuntu
  tasks:
    - shell: echo task1
    - shell: echo task2
使用ever playbook run
random
将从列表中选择50%的随机服务器

选项3:最大失败百分比的肮脏伎俩 如果只有一个任务要运行,可以使用
max\u fail\u percentage:-1
在第一批的第一个任务之后停止执行。
这将进行50%的批处理,在此批处理的每个主机上执行第一个任务,并检查失败的服务器数,因为它总是高于-1,playbook将停止执行

- hosts: tag_Name_ad_server
  user: ubuntu
  serial: "50%"
  max_fail_percentage: -1
  tasks:
    - shell: echo task1
    - shell: echo task2 # this task will never be executed with max_fail_percentage == -1

为什么你只想在50%上运行它?你想怎样把他们分开?每隔一秒,前半段,随机?我只是去测试一下,会用50%的机器释放标签,在仪表板上用释放的标签“tag_example”检查一下,它会给出一些信息。@Obivan,似乎答案是肯定的,而且是经过投票的,为什么不接受它呢?:)
- hosts: tag_Name_ad_server
  user: ubuntu
  serial: "50%"
  max_fail_percentage: -1
  tasks:
    - shell: echo task1
    - shell: echo task2 # this task will never be executed with max_fail_percentage == -1