2016-07-15 23 views
1

我正在使用Ansible創建將位於兩個EC2實例前的AWS ELB。這ELB會聽平時SSH端口,6000和6100如何使用具有端口範圍的偵聽器在Ansible中定義AWS ELB

- 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 

如何定義一個AWS ELB在Ansible與具有由端口的端口範圍,而不是端口收聽者的範圍呢?或者甚至更好,我如何定義來自特定安全組的任何內容應該被監聽併發送到實例?

謝謝!

+0

AFAIK亞馬遜ELB不支持監聽一端口範圍。您必須爲一個偵聽器指定一個端口。所以這實際上不是一個完美的問題。 –

+0

對不起,我很困惑的問題,你將不得不定義一個安全組以上的端口範圍,然後將其附加到ELB你不能爲ELB定義一個端口範圍監聽器,如果你想要它們,那麼你必須做一個一。 – error2007s

+0

是的,我想這是唯一的方法。 (你會用類似的東西做它嗎? – migueldavid

回答

1

非常奇怪的任務確實是,但是如果你確實想創造一個如此龐大的端口範圍負載均衡器,你可以使用這一招:

- 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: "{{listeners_range}}"

+0

它工作!感謝Konstantin! – migueldavid