Share via


자습서: Ansible을 사용하여 Azure 경로 테이블 구성

Important

이 문서의 샘플 플레이북을 실행하려면 Ansible 2.8 이상이 필요합니다.

Azure는 Azure 서브넷, 가상 네트워크 및 온-프레미스 네트워크 간에 트래픽을 자동으로 라우트합니다. 환경의 라우팅을 보다 강력하게 제어해야 할 경우 경로 테이블을 만들 수 있습니다.

이 문서에서는 다음 방법을 설명합니다.

경로 테이블 만들기 가상 네트워크 및 서브넷 만들기 경로 테이블을 서브넷에 연결 서브넷에서 경로 테이블 분리 경로 삭제 경로 테이블 쿼리 경로 테이블 삭제

필수 조건

  • Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

경로 테이블 만들기

이 섹션의 플레이북 코드는 경로 테이블을 만듭니다. 경로 테이블 제한에 대한 자세한 내용은 Azure 제한을 참조 하세요.

다음 플레이북을 route_table_create.yml로 저장합니다.

- hosts: localhost
  vars:
    route_table_name: myRouteTable
    resource_group: myResourceGroup
  tasks:
    - name: Create a route table
      azure_rm_routetable:
        name: "{{ route_table_name }}"
        resource_group: "{{ resource_group }}"

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook route_table_create.yml

서브넷에 경로 테이블 연결

이 섹션의 플레이북 코드:

  • 가상 네트워크를 만듭니다.
  • 가상 네트워크 내에 서브넷을 만듭니다.
  • 경로 테이블을 서브넷에 연결

경로 테이블은 가상 네트워크에 연결되지 않습니다. 대신, 경로 테이블은 가상 네트워크의 서브넷에 연결됩니다.

가상 네트워크 및 라우팅 테이블은 동일한 Azure 위치 및 구독에 공존해야 합니다.

서브넷과 경로 테이블은 일대다 관계가 있습니다. 연결된 경로 테이블이나 하나의 경로 테이블 없이 서브넷을 정의할 수 있습니다. 경로 테이블은 하나 또는 여러 개의 서브넷에 연결되거나 서브넷에 연결되지 않을 수 있습니다.

서브넷의 트래픽은 다음을 기반으로 라우팅됩니다.

  • 경로 테이블 내에 정의된 경로
  • 기본 경로
  • 온-프레미스 네트워크에서 전파된 경로

가상 네트워크는 Azure 가상 네트워크 게이트웨이에 연결되어야 합니다. 게이트웨이는 ExpressRoute이거나 VPN 게이트웨이와 함께 BGP를 사용하는 경우 VPN일 수 있습니다.

다음 플레이북을 route_table_associate.yml로 저장합니다.

- hosts: localhost
  vars:
    subnet_name: mySubnet
    virtual_network_name: myVirtualNetwork 
    route_table_name: myRouteTable
    resource_group: myResourceGroup
  tasks:
    - name: Create virtual network
      azure_rm_virtualnetwork:
        name: "{{ virtual_network_name }}"
        resource_group: "{{ resource_group }}"
        address_prefixes_cidr:
        - 10.1.0.0/16
        - 172.100.0.0/16
        dns_servers:
        - 127.0.0.1
        - 127.0.0.3
    - name: Create a subnet with route table
      azure_rm_subnet:
        name: "{{ subnet_name }}"
        virtual_network_name: "{{ virtual_network_name }}"
        resource_group: "{{ resource_group }}"
        address_prefix_cidr: "10.1.0.0/24"
        route_table: "{{ route_table_name }}"

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook route_table_associate.yml

서브넷에서 경로 테이블 분리

이 섹션의 플레이북 코드는 서브넷에서 경로 테이블을 분리합니다.

서브넷에서 경로 테이블을 분리하는 경우 서브None넷에 route_table 대한 값을 .로 설정합니다.

다음 플레이북을 route_table_dissociate.yml로 저장합니다.

- hosts: localhost
  vars:
    subnet_name: mySubnet
    virtual_network_name: myVirtualNetwork 
    resource_group: myResourceGroup
  tasks:
    - name: Dissociate a route table
      azure_rm_subnet:
        name: "{{ subnet_name }}"
        virtual_network_name: "{{ virtual_network_name }}"
        resource_group: "{{ resource_group }}"
        address_prefix_cidr: "10.1.0.0/24"

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook route_table_dissociate.yml

경로 만들기

이 섹션의 플레이북 코드는 경로 테이블 내의 경로입니다.

다음 플레이북을 route_create.yml로 저장합니다.

- hosts: localhost
  vars:
    route_name: myRoute
    route_table_name: myRouteTable
    resource_group: myResourceGroup
  tasks:
    - name: Create route
      azure_rm_route:
        name: "{{ route_name }}"
        resource_group: "{{ resource_group }}"
        next_hop_type: virtual_network_gateway
        address_prefix: "10.1.0.0/16"
        route_table_name: "{{ route_table_name }}"

플레이북을 실행하기 전에 다음 정보를 참조하세요.

  • virtual_network_gatewaynext_hop_type으로 정의됩니다. Azure에서 경로를 선택하는 방법에 대한 자세한 내용은 라우팅 개요를 참조하세요.
  • address_prefix10.1.0.0/16으로 정의됩니다. 경로 테이블 내에서는 접두사를 복제할 수 없습니다.

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook route_create.yml

경로 삭제

이 섹션의 플레이북 코드는 경로 테이블에서 경로를 삭제합니다.

다음 플레이북을 route_delete.yml로 저장합니다.

- hosts: localhost
  vars:
    route_name: myRoute
    route_table_name: myRouteTable
    resource_group: myResourceGroup
  tasks:
    - name: Remove route
      azure_rm_route:
        name: "{{ route_name }}"
        resource_group: "{{ resource_group }}"
        route_table_name: "{{ route_table_name }}"
        state: absent

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook route_delete.yml

경로 테이블 정보 가져오기

이 섹션의 플레이북 코드는 Ansible 모듈 azure_rm_routetable_facts 을 사용하여 경로 테이블 정보를 검색합니다.

다음 플레이북을 route_table_facts.yml로 저장합니다.

- hosts: localhost
  vars:
    route_table_name: myRouteTable
    resource_group: myResourceGroup
  tasks: 
    - name: Get route table information
      azure_rm_routetable_facts:
         resource_group: "{{ resource_group }}"
         name: "{{ route_table_name }}"
      register: query
    
    - debug:
         var: query.route_tables[0]

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook route_table_facts.yml

경로 테이블 삭제

이 섹션의 플레이북 코드는 경로 테이블을 삭제합니다.

경로 테이블을 삭제하면 해당 경로도 모두 삭제됩니다.

경로 테이블이 서브넷과 연결된 경우 삭제할 수 없습니다. 경로 테이블을 삭제하기 전에 서브넷에서 경로 테이블을 분리합니다 .

다음 플레이북을 route_table_delete.yml로 저장합니다.

- hosts: localhost
  vars:
    route_table_name: myRouteTable
    resource_group: myResourceGroup
  tasks:
    - name: Create a route table
      azure_rm_routetable:
        name: "{{ route_table_name }}"
        resource_group: "{{ resource_group }}"
        state: absent

ansible-playbook을 사용하여 플레이북 실행

ansible-playbook route_table_delete.yml

다음 단계