2016-07-15 2 views
1

저는 Ansible을 사용하여 두 개의 EC2 인스턴스 앞에 앉아 AWS ELB를 만듭니다. 이 ELB는 일반적인 SSH 포트와 6000포트 범위가있는 수신기에서 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 

어떻게 포트에 의한 포트의 범위를 대신 포트가 리스너와 Ansible의 AWS ELB를 정의하는 6100의 범위에서 수신 할 것인가? 아니면 특정 보안 그룹의 모든 내용을 듣고 인스턴스에 보내야한다는 것을 어떻게 정의할까요?

감사합니다.

+0

AFAIK 아마존 ELB가에서 수신을 지원하지 않습니다 지정할 수 있습니다 포트 범위. 하나의 리스너에 대해 하나의 포트를 지정해야합니다. 그래서 이것은 실제로는 불가능한 질문이 아닙니다. –

+0

죄송합니다. 위의 포트 범위에 대한 보안 그룹을 정의한 다음 ELB에 연결해야합니다. ELB 용 포트 범위 수신기를 정의 할 수 없으며, 원하는 경우 ELB에 연결해야합니다. 하나. – error2007s

+0

그래, 그게 유일한 방법이라고 생각해. :(당신은 with_items 같은 것을 할 것입니까? – migueldavid

답변

1

매우 이상한 일 참,하지만 당신이 정말로 같은 거대한 포트 범위와 부하 분산을 생성 할 경우,이 트릭을 사용할 수 있습니다 :이 항목의 목록을 변수 listeners_range를 만들 것입니다

- 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 :

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

그래서 당신은 ec2_elb_lb를 호출하고 listeners: "{{listeners_range}}"

+0

감사합니다 Konstantin! – migueldavid

관련 문제