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



我正在创建一个使用 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

这将使项目列表范围为 6000-6100 的可变listeners_range

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

因此,您可以调用ec2_elb_lb并指定listeners: "{{listeners_range}}"

最新更新