Im试图完成的工作是从动态生成的实例列表创建网络负载均衡器目标组。
brokerInstancesList是实例ID的列表。我需要遍历此列表,并将它们作为目标添加到该目标组。
- name: "Create 9092 target group"
elb_target_group:
name: "tg-{{ ClusterName }}"
protocol: tcp
port: 9092
vpc_id: "{{ VPCID }}"
targets:
- Id: "{{ item }}"
Port: 9092
state: present
loop: "{{ brokerInstancesList }}"
我上面尝试的问题是仅保留brokerInstancesList中的最后一个条目。我需要的是以下内容。
- name: "Create 9092 target group"
elb_target_group:
name: "tg-{{ ClusterName }}"
protocol: tcp
port: 9092
vpc_id: "{{ VPCID }}"
targets:
{% for item in {{ brokerInstancesList }} -%}
- Id: "{{ apple }}"
Port: 9092
{%- endfor %}
state: present
答案 0 :(得分:0)
您需要在上一步中创建目标列表:
- name: Create the custom fact for targets
set_fact:
target_data: "{{ target_data|default([]) + [{'Id': item, 'Port': 9092 }]}}"
with_items: "{{ brokerInstancesList }}"
然后在target_data
任务的targets
属性中使用elb_target_group
列表。
来源:https://github.com/ansible/ansible/issues/32218#issuecomment-339792059
答案 1 :(得分:0)
使用elb_target模块来实现它:
名称:收集所有新代理实例的事实
ec2_instance_facts:
过滤器:
“ tag:Name”:“ {{ec2_tag_proxy}}”
注册:ec2_proxy
elb_target_group:
名称:uat-target-proxy
通讯协定:http
端口:80
vpc_id:vpc-4e6e8112
deregistration_delay_timeout:60
stickiness_enabled:True
stickiness_lb_cookie_duration:86400
health_check_path:/
success_response_codes:“ 200”
health_check_interval:“ 20”
状态:存在
elb_target:
target_group_name:uat-target-proxy
target_id:“ {{item.instance_id}}”
target_port:80
状态:存在
with_items:“ {{ec2_proxy.instances}}”
时间:ec2_proxy.instances | length> 0