amazon-web-services - 如何在 Ansible 中定义具有一系列端口的监听器的 AWS ELB

标签 amazon-web-services ansible

我正在使用 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/

相关文章:

ansible - 如何在ansible中抽象角色

git - 通过 ssh key 转发进行身份验证时克隆 git 存储库的最佳方法

amazon-web-services - 无法更新Kops群集-DNS查找错误

automation - 具有多个寄存器值的 Ansible 循环

variables - Ansible:在循环中生成变量

java - 配置为 s3 通知处理程序时如何在 aws lambda 函数中给出错误响应

Ansible - 访问库存别名

amazon-web-services - 使用跨账户的 AWS RDS 灾难恢复

javascript - 完成 AWS 身份验证流程

amazon-web-services - 如何将无服务器应用程序模型 (SAM) 模板转换为 Cloudformation?