使用同步计数器变量 ansible

Using a synchronized counter variable ansible

我的剧本正在 AWS.I 中创建多个应用程序实例,希望每个实例都用计数器变量标记以维护每个实例的计数和 ID(不想使用实例 ID 和任何其他随机 ID)。现在,由于配置是并行发生的,我无法获得一致的计数器变量。 我试过使用一个全局变量来播放并递增它,但它总是 returns 初始值作为 set fact 执行一次。 我还尝试将一个变量放入文件中,为每个主机读取并递增它。这会导致竞争条件,我看到不同主机的值相同。有什么办法吗

假设您的ec2.ini文件有

all_instances = True

为了获得停止的实例,它们在某种意义上已经被标记了。

webserver[1] 将始终是同一个主机,直到您的库存发生变化。

但是,您仍然可以根据需要标记您的实例,但如果您的库存发生变化,可能很难用唯一编号标记新实例。

- name: Loop over webserver instances and tag sequentially
  ec2_tag:
    state: present
    tags:
      myTag: "webserver{{item}}"
    resource: "{{ hostvars[groups['webserver'][item|int]]['ec2_id'] }}"
  with_sequence: start=0 end="{{ groups['webserver']|length - 1 }}"
  delegate_to: localhost

N.B:item是一个字符串,所以我们在从组['webserver']数组。