2016-07-15 10 views
1

Ich erstelle eine AWS-ELB, die mit Ansible vor zwei EC2-Instanzen sitzt. Diese ELB wird auf dem üblichen SSH-Port hören und einem Bereich zwischen 6000 und 6100.So definieren Sie eine AWS-ELB in Ansible mit einem Listener mit einer Reihe von Ports

- 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 

Wie ein AWS ELB in ansible mit einem Hörer definieren, die eine Reihe von Ports anstelle von Port von Port? Oder vielleicht noch besser, wie definiere ich, dass alles, was von einer bestimmten Sicherheitsgruppe kommt, angehört und an die Instanzen gesendet werden sollte?

Danke!

+0

AFAIK Amazon ELB unterstützt nicht auf ein hören angeben Auswahl an Ports. Sie müssen einen Port für einen Listener angeben. Das ist also eigentlich keine Frage. –

+0

Sorry, ich war verwirrt von der Frage, Sie müssen eine Sicherheitsgruppe für über Port-Bereich definieren und dann an ELB anhängen können Sie keine Port-Bereich Listener für ELB definieren und wenn Sie sie dann möchten, müssen Sie es tun, indem Sie ein. – error2007s

+0

Ja, ich denke es ist der einzige Weg. :(Würden Sie es mit etwas wie with_items machen? – migueldavid

Antwort

1

Sehr seltsam Aufgabe in der Tat, aber wenn Sie wirklich einen Load Balancer mit einem so großen Portbereich erstellen möchten, können Sie diesen Trick verwenden:

- 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 

Diese Variable listeners_range mit Liste der Elemente machen reichten 6000-6100:

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

So können Sie ec2_elb_lb anrufen und listeners: "{{listeners_range}}"

+0

Es hat funktioniert! Danke Konstantin! – migueldavid

Verwandte Themen