1

정의 된 AZ의 양을 기준으로 VPC 용 서브넷을 자동으로 만드는 역할을 작성해야합니다. 신뢰할 수있는 역할에 중첩 된 변수를 작성하는 방법

- name: Setup "{{ aws.vpc.name }}" VPC 
    ec2_vpc: 
    state: present 
    cidr_block: 172.20.0.0/16 
    resource_tags: { "Name": "{{aws.vpc.name}}" } 
    subnets: 
     - cidr: 172.20.1.0/24 
     az: us-east-1d 
     resource_tags: { "Name": "{{aws.vpc.name}}-1d" } 
     - cidr: 172.20.2.0/24 
     az: us-east-1c 
     resource_tags: { "Name": "{{aws.vpc.name}}-1c" } 
    internet_gateway: True 
    route_tables: 
     - subnets: 
      - 172.20.1.0/24 
      - 172.20.2.0/24 
     routes: 
      - dest: 0.0.0.0/0 
      gw: igw 
    region: {{ aws.vpc.region }} 

는 어떻게 자동으로 생성 내가 그래서, http://docs.ansible.com/ansible/playbooks_filters.html을 확인했다

aws.vpc.az = ['a', 'c', 'e']

 - cidr: 172.20.1.0/24 
     az: us-east-1d 
     resource_tags: { "Name": "{{aws.vpc.name}}-1d" } 

같은 단지 AZ 이름이있는 경우 이와 같은 차단합니다. 그러나이 블록을 동적으로 생성하는 방법을 찾지 못했습니다.

+0

질문과 혼동 스럽습니다. AZ 목록에 사전'aws.vpc'에리스트 변수'az'를 넣으려고합니까? 그런 다음이리스트에 동적으로 액세스하여이 작업을 수행 하시겠습니까? 그것이 당신이 의미하는 것이 아니라면, 당신은 정교 할 수 있습니까? – rk2

답변

0

본질적으로 루프에 변수 목록을 생성하는 다른 작업이 필요합니다. 이것은 다음의 주요 작업에 사용할 수 있습니다

- subnets: "{{ subnet_list }}" 

이 호스트를 사용하여 예를 들어 this answer를 참조하십시오. subnet_list의 각 항목은 그 자체로 사전 (cidr, az 및 resource_tags가 키 임)이므로 사례가 더 복잡합니다.