我正在使用 Ansible 创建一个位于两个 EC2 实例前面的 AWS ELB。此 ELB 将监听常用的 SSH 端口以及 6000 到 6100 之间的范围。
- name: Create ELB for web servers
local_action:
module: ec2_elb_lb
name: "{{ elb_web }}"
state: present
zones: "{{ availability_zones }}"
tags:
Name: "{{ elb_web }}"
listeners:
- protocol: http
load_balancer_port: 80
instance_port: 80
proxy_protocol: True
- protocol: tcp
from_port????
cross_az_load_balancing: "yes"
security_group_names: "{{ security_group_web }}"
wait: yes
register: elb_web_result
until: "elb_web_result.module_stderr is not defined"
retries: 2
delay: 1
如何在 Ansible 中定义具有一系列端口而不是逐个端口的监听器的 AWS ELB?或者更好的是,如何定义来自特定安全组的任何内容都应该被监听并发送到实例?
谢谢!
最佳答案
确实是非常奇怪的任务,但如果您确实想创建一个具有如此大端口范围的负载均衡器,您可以使用这个技巧:
- set_fact:
listener:
protocol: tcp
load_balancer_port: "{{item}}"
instance_port: "{{item}}"
with_sequence: start=6000 end=6100
register: listeners_range
- set_fact:
listeners_range: "{{ listeners_range.results | map(attribute='ansible_facts.listener') | list }}"
- debug: var=listeners_range
这将使变量 listeners_range
的项目列表范围为 6000-6100:
protocol: tcp
load_balancer_port: "{{item}}"
instance_port: "{{item}}"
因此您可以调用ec2_elb_lb
并指定监听器:“{{listeners_range}}”
关于amazon-web-services - 如何在 Ansible 中定义具有一系列端口的监听器的 AWS ELB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38395616/