我的Playbook正在AWS中创建多个应用程序实例。我希望每个实例都用计数器变量标记,以维护每个实例的计数和id(不想使用实例ID和任何其他随机id) 。现在,由于供应并行发生,我无法获得一致的计数器变量。 我已经尝试使用全局变量来播放并递增它但它总是返回初始值,因为set fact被执行一次。 我也尝试将变量放在一个文件中,为每个主机读取和递增它。这导致竞争条件,我看到不同主机的相同值。有没有办法做到这一点。
答案 0 :(得分:0)
假设您的 ec2.ini 文件有
all_instances = True
要获得已停止的实例,从某种意义上说,它们已被标记。
在您的广告资源发生变化之前,网络服务器[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
注意:项目是一个字符串,因此从群组中提取时,我们必须使用 [item | int] [' webserver&#39 ;] 数组。