Membuat mesin virtual Linux di Azure menggunakan Ansible

Perhatian

Artikel ini mereferensikan CentOS, distribusi Linux yang mendekati status End Of Life (EOL). Harap pertimbangkan penggunaan dan rencanakan yang sesuai. Untuk informasi selengkapnya, lihat panduan Akhir Masa Pakai CentOS.

Artikel ini menyajikan playbook Ansible sampel untuk mengonfigurasi mesin virtual Linux.

Dalam artikel ini, Anda akan mempelajari cara:

  • Buat grup sumber daya
  • Membuat jaringan virtual
  • Membuat alamat IP publik
  • MembuatĀ grup keamanan jaringan
  • Membuat kartu antarmuka jaringan virtual
  • Membuat mesin virtual

1. Mengonfigurasi lingkungan Anda

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

2. Buat pasangan kunci SSH

  1. Jalankan perintah berikut. Saat diminta, tentukan file yang akan dibuat pada direktori berikut: /home/azureuser/.ssh/authorized_keys.

    ssh-keygen -m PEM -t rsa -b 4096
    
  2. Salin seluruh konten file kunci umum. Secara default, file kunci publik diberi nama id_rsa.pub. Nilainya adalah string panjang yang dimulai dengan "ssh-rsa". Anda akan membutuhkan nilai ini pada langkah berikutnya.

3. Terapkan playbook Ansible

  1. Buat direktori untuk menguji dan menjalankan kode Ansible sample dan menjadikannya direktori saat ini.

  2. Buat file bernama main.yml dan masukkan kode berikut. Ganti tempat penampung <key_data> dengan nilai kunci umum dari langkah sebelumnya.

    - name: Create Azure VM
      hosts: localhost
      connection: local
      tasks:
      - name: Create resource group
        azure_rm_resourcegroup:
          name: myResourceGroup
          location: eastus
      - name: Create virtual network
        azure_rm_virtualnetwork:
          resource_group: myResourceGroup
          name: myVnet
          address_prefixes: "10.0.0.0/16"
      - name: Add subnet
        azure_rm_subnet:
          resource_group: myResourceGroup
          name: mySubnet
          address_prefix: "10.0.1.0/24"
          virtual_network: myVnet
      - name: Create public IP address
        azure_rm_publicipaddress:
          resource_group: myResourceGroup
          allocation_method: Static
          name: myPublicIP
        register: output_ip_address
      - name: Public IP of VM
        debug:
          msg: "The public IP is {{ output_ip_address.state.ip_address }}."
      - name: Create Network Security Group that allows SSH
        azure_rm_securitygroup:
          resource_group: myResourceGroup
          name: myNetworkSecurityGroup
          rules:
            - name: SSH
              protocol: Tcp
              destination_port_range: 22
              access: Allow
              priority: 1001
              direction: Inbound
      - name: Create virtual network interface card
        azure_rm_networkinterface:
          resource_group: myResourceGroup
          name: myNIC
          virtual_network: myVnet
          subnet: mySubnet
          public_ip_name: myPublicIP
          security_group: myNetworkSecurityGroup
      - name: Create VM
        azure_rm_virtualmachine:
          resource_group: myResourceGroup
          name: myVM
          vm_size: Standard_DS1_v2
          admin_username: azureuser
          ssh_password_enabled: false
          ssh_public_keys:
            - path: /home/azureuser/.ssh/authorized_keys
              key_data: "<key_data>"
          network_interfaces: myNIC
          image:
            offer: CentOS
            publisher: OpenLogic
            sku: '7.5'
            version: latest
    

4. Jalankan playbook

Jalankan ansible-playbook untuk menjalankan playbook Ansible.

ansible-playbook main.yml

5. Memverifikasi hasil

Jalankan az vm list untuk memverifikasi VM yang telah dibuat.

az vm list -d -o table --query "[?name=='myVM']"

6. Sambungkan ke VM

Jalankan perintah SSH untuk menghubungkan ke VM Linux baru Anda. Ganti tempat penampung <ip-address> dengan alamat IP dari langkah sebelumnya.

ssh azureuser@<ip_address> -i /home/azureuser/.ssh/authorized_keys/id_rsa

Membersihkan sumber daya

  1. Simpan kode berikut sebagai delete_rg.yml.

    ---
    - hosts: localhost
      tasks:
        - name: Deleting resource group - "{{ name }}"
          azure_rm_resourcegroup:
            name: "{{ name }}"
            state: absent
          register: rg
        - debug:
            var: rg
    
  2. Jalankan playbook menggunakan perintah ansible-playbook. Ganti tempat penampung dengan nama grup sumber daya yang akan dihapus. Semua sumber daya dalam grup sumber daya akan dihapus.

    ansible-playbook delete_rg.yml --extra-vars "name=<resource_group>"
    

    Poin utama:

    • Karena variabel register dan bagian debug dari playbook, hasilnya akan ditampilkan ketika perintah selesai.

Langkah berikutnya