Tutorial: Mengonfigurasi peering jaringan virtual Azure menggunakan Ansible

Penting

Ansible 2.8 (atau yang lebih baru) diperlukan untuk menjalankan sampel playbook dalam artikel ini.

Peering jaringan virtual (VNet) memungkinkan Anda menyambungkan dua jaringan virtual Azure tanpa hambatan. Setelah peering, dua jaringan virtual muncul sebagai satu untuk semua tujuan konektivitas.

Lalu lintas dirutekan antara VM dalam jaringan virtual yang sama melalui alamat IP pribadi. Demikian pula, lalu lintas antara VM dalam jaringan virtual yang di-peer dirutekan melalui infrastruktur backbone Microsoft. Akibatnya, VM di jaringan virtual yang berbeda dapat berkomunikasi satu sama lain.

Dalam artikel ini, Anda akan mempelajari cara:

  • Membuat dua jaringan virtual
  • Peering kedua jaringan virtual
  • Hapus peering antara kedua jaringan

Prasyarat

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Buat dua grup sumber daya baru

Grup sumber daya Azure adalah kontainer logis yang disebarkan dan dikelola oleh sumber daya Azure.

Sampel kode playbook di bagian ini digunakan untuk:

  • Buat dua grup sumber daya baru
  - 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 }}"

Buat jaringan virtual pertama

Sampel kode playbook di bagian ini digunakan untuk:

  • Membuat jaringan virtual
  • Membuat subnet dalam jaringan virtual
  - 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 }}"

Buat jaringan virtual kedua

Sampel kode playbook di bagian ini digunakan untuk:

  • Membuat jaringan virtual
  • Membuat subnet dalam jaringan virtual
  - 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 }}"

Peering kedua jaringan virtual

Sampel kode playbook di bagian ini digunakan untuk:

  • Inisialisasi peering jaringan virtual
  • Peer dua jaringan virtual yang dibuat sebelumnya
  - 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

Hapus peering jaringan virtual

Sampel kode playbook di bagian ini digunakan untuk:

  • Hapus peering antara dua jaringan virtual yang dibuat sebelumnya
  - name: Delete vnet peering
    azure_rm_virtualnetworkpeering:
      resource_group: "{{ resource_group }}"
      name: "{{ peering_name }}"
      virtual_network: "{{ vnet_name1 }}"
      state: absent

Dapatkan sampel playbook

Ada dua cara untuk mendapatkan sampel playbook lengkap:

  • Unduh playbook dan simpan ke vnet_peering.yml.
  • Buat file baru bernama vnet_peering.yml dan salin konten berikut ke dalamnya:
- 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

Jalankan sampel playbook

Sampel kode playbook di bagian ini digunakan untuk menguji berbagai fitur yang ditampilkan sepanjang tutorial ini.

Berikut adalah beberapa catatan penting yang perlu dipertimbangkan saat bekerja dengan sampel playbook:

  • Pada bagian vars, ganti nilai placeholder {{ resource_group_name }} dengan nama grup sumber daya Anda.

Jalankan playbook menggunakan perintah ansible-playbook:

ansible-playbook vnet_peering.yml

Setelah menjalankan playbook, Anda melihat output yang mirip dengan hasil berikut:

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

Membersihkan sumber daya

Bila tidak lagi diperlukan, hapus sumber daya yang dibuat dalam artikel ini.

Sampel kode playbook di bagian ini digunakan untuk:

  • Hapus dua grup sumber daya yang dibuat sebelumnya

Simpan playbook berikut sebagai cleanup.yml:

- 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	

Berikut adalah beberapa catatan penting yang perlu dipertimbangkan saat bekerja dengan sampel playbook:

  • Ganti tempat penampung {{ resource_group_name-1 }} dengan nama grup sumber daya pertama yang dibuat.
  • Ganti tempat penampung {{ resource_group_name-2 }} dengan nama grup sumber daya kedua yang dibuat.
  • Semua sumber daya dalam dua grup sumber daya yang ditentukan akan dihapus.

Jalankan playbook menggunakan perintah ansible-playbook:

ansible-playbook cleanup.yml	

Langkah berikutnya