Öğretici: Ansible kullanarak Azure sanal ağ eşlemesini yapılandırma

Önemli

Bu makaledeki örnek playbook'ları çalıştırmak için Ansible 2.8 (veya üzeri) gereklidir.

Sanal ağ (VNet) eşlemesi , iki Azure sanal ağını sorunsuz bir şekilde bağlamanızı sağlar. Eşlendikten sonra, iki sanal ağ bağlantı amacıyla tek bir ağ olarak görünür.

Trafik, özel IP adresleri aracılığıyla aynı sanal ağdaki VM'ler arasında yönlendirilir. Benzer şekilde, eşlenmiş bir sanal ağdaki VM'ler arasındaki trafik Microsoft omurga altyapısı üzerinden yönlendirilir. Sonuç olarak, farklı sanal ağlardaki VM'ler birbirleriyle iletişim kurabilir.

Bu makalede şunları öğreneceksiniz:

  • İki sanal ağ oluşturma
  • İki sanal ağı eşleme
  • İki ağ arasındaki eşlemeyi silme

Önkoşullar

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

İki kaynak grubu oluşturma

Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır.

Bu bölümdeki örnek playbook kodu şunları yapmak için kullanılır:

  • İki kaynak grubu oluşturma
  - name: Create a resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: "{{ location }}"
  - name: Create secondary resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group_secondary }}"
      location: "{{ location }}"

İlk sanal ağı oluşturma

Bu bölümdeki örnek playbook kodu şunları yapmak için kullanılır:

  • Sanal ağ oluşturma
  • Sanal ağ içinde alt ağ oluşturma
  - name: Create first virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefixes: "10.0.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefix: "10.0.0.0/24"
      virtual_network: "{{ vnet_name1 }}"

İkinci sanal ağı oluşturma

Bu bölümdeki örnek playbook kodu şunları yapmak için kullanılır:

  • Sanal ağ oluşturma
  • Sanal ağ içinde alt ağ oluşturma
  - name: Create second virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ vnet_name2 }}"
      address_prefixes: "10.1.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name2 }}"
      address_prefix: "10.1.0.0/24"
      virtual_network: "{{ vnet_name2 }}"

İki sanal ağı eşleme

Bu bölümdeki örnek playbook kodu şunları yapmak için kullanılır:

  • Sanal ağ eşlemesini başlatma
  • Önceden oluşturulmuş iki sanal ağı eşleme
  - name: Initial vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group_secondary }}"
        name: "{{ vnet_name2 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Connect vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name2 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group }}"
        name: "{{ vnet_name1 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

Sanal ağ eşlemesini silin

Bu bölümdeki örnek playbook kodu şunları yapmak için kullanılır:

  • Önceden oluşturulmuş iki sanal ağ arasındaki eşlemeyi silme
  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

Örnek playbook'u edinin

Örnek playbook'un tamamını almanın iki yolu vardır:

  • Playbook'u indirin ve öğesine vnet_peering.ymlkaydedin.
  • adlı vnet_peering.yml yeni bir dosya oluşturun ve aşağıdaki içeriği bu dosyaya kopyalayın:
- hosts: localhost
  tasks:
    - name: Prepare random postfix
      set_fact:
        rpfx: "{{ 1000 | random }}"
      run_once: yes

- name: Connect virtual networks with virtual network peering
  hosts: localhost
  connection: local
  vars:
    resource_group: "{{ resource_group_name }}"
    resource_group_secondary: "{{ resource_group_name }}2"
    vnet_name1: "myVnet{{ rpfx }}"
    vnet_name2: "myVnet{{ rpfx }}2"
    peering_name: peer1
    location: eastus2
  tasks:
  - name: Create a resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group }}"
      location: "{{ location }}"
  - name: Create secondary resource group
    azure_rm_resourcegroup:
      name: "{{ resource_group_secondary }}"
      location: "{{ location }}"
  - name: Create first virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefixes: "10.0.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name1 }}"
      address_prefix: "10.0.0.0/24"
      virtual_network: "{{ vnet_name1 }}"
  - name: Create second virtual network
    azure_rm_virtualnetwork:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ vnet_name2 }}"
      address_prefixes: "10.1.0.0/16"
  - name: Add subnet
    azure_rm_subnet:
      resource_group: "{{ resource_group }}"
      name: "{{ vnet_name2 }}"
      address_prefix: "10.1.0.0/24"
      virtual_network: "{{ vnet_name2 }}"
  - name: Initial vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group_secondary }}"
        name: "{{ vnet_name2 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Connect vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group_secondary }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name2 }}"
      remote_virtual_network:
        resource_group: "{{ resource_group }}"
        name: "{{ vnet_name1 }}"
      allow_virtual_network_access: true
      allow_forwarded_traffic: true

  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

Örnek playbook'u çalıştırma

Bu bölümdeki örnek playbook kodu, bu öğretici boyunca gösterilen çeşitli özellikleri test etmek için kullanılır.

Örnek playbook ile çalışırken göz önünde bulundurmanız gereken bazı önemli notlar şunlardır:

  • vars bölümünde yer tutucuyu {{ resource_group_name }} kaynak grubunuzun adıyla değiştirin.

ansible-playbook komutunu kullanarak playbook'u çalıştırın:

ansible-playbook vnet_peering.yml

Playbook'u çalıştırdıktan sonra aşağıdaki sonuçlara benzer bir çıktı görürsünüz:

PLAY [localhost] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Prepare random postfix] 
ok: [localhost]

PLAY [Connect virtual networks with virtual network peering] 

TASK [Gathering Facts] 
ok: [localhost]

TASK [Create a resource group] 
changed: [localhost]

TASK [Create secondary resource group] 
changed: [localhost]

TASK [Create first virtual network] 
changed: [localhost]

TASK [Add subnet] 
changed: [localhost]

TASK [Create second virtual network] 
changed: [localhost]

TASK [Add subnet] 
changed: [localhost]

TASK [Initial vnet peering] 
changed: [localhost]

TASK [Connect vnet peering] 
changed: [localhost]

TASK [Delete vnet peering] 
changed: [localhost]

PLAY RECAP 
localhost                  : ok=12   changed=9    unreachable=0    failed=0    skipped=0   rescued=0    ignored=0

Kaynakları temizleme

Artık gerekli olmadığında, bu makalede oluşturulan kaynakları silin.

Bu bölümdeki örnek playbook kodu şunları yapmak için kullanılır:

  • Daha önce oluşturulan iki kaynak grubunu silin

Aşağıdaki playbook'u cleanup.yml olarak kaydedin:

- hosts: localhost	
  vars:	
    resource_group: "{{ resource_group_name-1 }}"	
    resource_group_secondary: "{{ resource_group_name-2 }}"	
  tasks:	
    - name: Delete a resource group	
      azure_rm_resourcegroup:	
        name: "{{ resource_group }}"	
        force_delete_nonempty: yes	
        state: absent	
    - name: Delete a resource group	
      azure_rm_resourcegroup:	
        name: "{{ resource_group_secondary }}"	
        force_delete_nonempty: yes	
        state: absent	

Örnek playbook ile çalışırken göz önünde bulundurmanız gereken bazı önemli notlar şunlardır:

  • Yer tutucuyu {{ resource_group_name-1 }} , oluşturulan ilk kaynak grubunun adıyla değiştirin.
  • Yer tutucuyu {{ resource_group_name-2 }} , oluşturulan ikinci kaynak grubunun adıyla değiştirin.
  • Belirtilen iki kaynak grubundaki tüm kaynaklar silinir.

ansible-playbook komutunu kullanarak playbook'u çalıştırın:

ansible-playbook cleanup.yml	

Sonraki adımlar