Amazon web services 如何使用具有一系列端口的侦听器在Ansible中定义AWS ELB

Amazon web services 如何使用具有一系列端口的侦听器在Ansible中定义AWS ELB,amazon-web-services,ansible,Amazon Web Services,Ansible,我正在使用Ansible创建一个AWS ELB,它将位于两个EC2实例前面。此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:

我正在使用Ansible创建一个AWS ELB,它将位于两个EC2实例前面。此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\u范围
,项目列表范围为6000-6100:

protocol: tcp
load_balancer_port: "{{item}}"
instance_port: "{{item}}"

因此,您可以调用
ec2_elb_lb
并指定
侦听器:“{{listeners_range}}”

AFAIK Amazon elb不支持侦听一系列端口。必须为一个侦听器指定一个端口。因此,这实际上不是一个可回答的问题。很抱歉,我被这个问题弄糊涂了,您必须为上述端口范围定义一个安全组,然后将其连接到ELB。您无法为ELB定义端口范围侦听器,如果您需要,则必须逐个执行。是的,我想这是唯一的方法(您会使用类似于_项的方法吗?是否有方法在ec2 _elb _lb任务中迭代侦听器?我尝试使用_项,但似乎只保留最后一个侦听器。