Bagikan melalui


Mulai cepat: Menggunakan Terraform untuk menyebarkan Azure Bastion

Dalam Mulai Cepat ini, Anda mempelajari cara menggunakan Terraform untuk menyebarkan Azure Bastion secara otomatis di portal Microsoft Azure. Untuk melakukan ini, Anda membuat host Azure Bastion dan sumber daya Azure terkait, yang mencakup grup sumber daya, jaringan virtual, subnet Azure Bastion, dan IP publik. Penyiapan ini memastikan lingkungan jaringan privat yang aman untuk layanan Azure Anda. Diagram berikut ini memberikan gambaran umum tentang penyebaran Azure Bastion:

Diagram yang memperlihatkan arsitektur Azure Bastion.

Menyebarkan Azure Bastion memungkinkan Anda menggunakan RDP dan SSH untuk mengakses komputer virtual Anda dalam portal Azure. Layanan ini disediakan langsung di jaringan virtual Anda dan mendukung semua komputer virtual di sana, mengurangi paparan koneksi jaringan publik. Saat Anda menyebarkan Bastion secara otomatis, Bastion disebarkan dengan SKU Standar. Untuk melakukan penyebaran dengan Bastion Developer, lihat Panduan Cepat: Menyambungkan dengan Azure Bastion Developer. Lihat panduan penyebaran Azure Bastion untuk informasi selengkapnya tentang cara menyesuaikan penyebaran Azure Bastion Anda.

Terraform memungkinkan definisi, pratinjau, dan penyebaran infrastruktur cloud. Dengan menggunakan Terraform, Anda membuat file konfigurasi menggunakan sintaks HCL. Sintaksis HCL memungkinkan Anda menentukan penyedia cloud - seperti Azure - dan elemen yang membentuk infrastruktur cloud Anda. Setelah membuat file konfigurasi, Anda membuat rencana eksekusi yang memungkinkan Anda mempratinjau perubahan infrastruktur sebelum disebarkan. Setelah memverifikasi perubahan, Anda menerapkan rencana eksekusi untuk menyebarkan infrastruktur.

  • Buat grup sumber daya Azure dengan nama unik.
  • Buat jaringan virtual dengan nama dan alamat tertentu.
  • Siapkan subnet khusus untuk Azure Bastion dalam jaringan virtual yang dibuat.
  • Alokasikan IP publik standar statis untuk Azure Bastion dalam grup sumber daya.
  • Buat host Azure Bastion dengan konfigurasi IP tertentu dalam grup sumber daya.
  • Keluarkan nama dan alamat IP grup sumber daya, ditambah host Azure Bastion.

Prasyarat

Menerapkan kode Terraform

  1. Buat direktori untuk menguji dan menjalankan sampel kode Terraform, dan menjadikannya direktori saat ini.

  2. Buat file bernama main.tf, dan sisipkan kode berikut:

    # Create Resource Group
    resource "random_pet" "rg_name" {
      prefix = var.resource_group_name_prefix
    }
    
    resource "azurerm_resource_group" "rg" {
      location = var.resource_group_location
      name     = random_pet.rg_name.id
    }
    
    # Create Virtual Network
    resource "azurerm_virtual_network" "vnet" {
      name                = "example-network"
      address_space       = ["10.0.0.0/16"]
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
    }
    
    # Create Subnet for Azure Bastion
    resource "azurerm_subnet" "bastion_subnet" {
      name                 = "AzureBastionSubnet"
      resource_group_name  = azurerm_resource_group.rg.name
      virtual_network_name = azurerm_virtual_network.vnet.name
      address_prefixes     = ["10.0.1.0/24"]
    }
    
    # Create Public IP for Azure Bastion
    resource "azurerm_public_ip" "bastion_pip" {
      name                = "example-pip"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
      allocation_method   = "Static"
      sku                 = "Standard"
    }
    
    # Create Azure Bastion Host
    resource "azurerm_bastion_host" "bastion" {
      name                = "example-bastion"
      location            = azurerm_resource_group.rg.location
      resource_group_name = azurerm_resource_group.rg.name
    
      ip_configuration {
        name                 = "configuration"
        subnet_id            = azurerm_subnet.bastion_subnet.id
        public_ip_address_id = azurerm_public_ip.bastion_pip.id
      }
    }
    
  3. Buat file bernama outputs.tf, dan sisipkan kode berikut:

    output "resource_group_name" {
      value = azurerm_resource_group.rg.name
    }
    
    output "bastion_host_name" {
      value = azurerm_bastion_host.bastion.name
    }
    
    output "bastion_host_ip" {
      value = azurerm_public_ip.bastion_pip.ip_address
    }
    
  4. Buat file bernama providers.tf, dan sisipkan kode berikut:

    terraform {
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>3.0"
        }
        random = {
          source  = "hashicorp/random"
          version = "~>3.0"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  5. Buat file bernama variables.tf, dan sisipkan kode berikut:

    variable "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location of the resource group."
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      default     = "rg"
      description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
    }
    

Inisialisasi Terraform

Jalankan terraform init untuk menginisialisasi penyebaran Terraform. Perintah ini mengunduh penyedia Azure yang diperlukan untuk mengelola sumber daya Azure Anda.

terraform init -upgrade

Poin-poin penting:

  • Parameter -upgrade meningkatkan plugin penyedia yang diperlukan ke versi terbaru yang sesuai dengan batasan versi konfigurasi.

Buat rencana eksekusi Terraform

Jalankan terraform plan untuk membuat rencana eksekusi.

terraform plan -out main.tfplan

Poin-poin penting:

  • Perintah terraform plan membuat rencana eksekusi, tetapi tidak menjalankannya. Perintah ini justru menentukan tindakan yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda memastikan apakah rencana eksekusi telah sesuai dengan ekspektasi Anda sebelum membuat perubahan pada sumber daya aktual.
  • Parameter -out opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter -out memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.

Terapkan rancangan eksekusi Terraform

Jalankan terraform apply untuk menerapkan rencana eksekusi ke infrastruktur cloud Anda.

terraform apply main.tfplan

Poin-poin penting:

  • Contoh terraform apply perintah mengasumsikan Anda sebelumnya menjalankan terraform plan -out main.tfplan.
  • Jika Anda menentukan nama file yang berbeda untuk parameter -out, gunakan nama file yang sama dalam panggilan ke terraform apply.
  • Jika Anda tidak menggunakan parameter -out, panggil terraform apply tanpa parameter apa pun.

Memverifikasi hasil

  1. Dapatkan nama grup sumber daya Azure.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Dapatkan nama host Azure Bastion.

    bastion_host_name=$(terraform output -raw bastion_host_name)
    
  3. Dapatkan alamat ip host Azure Bastion.

    bastion_host_ip=$(terraform output -raw bastion_host_ip)
    
  4. Jalankan az network bastion show untuk melihat host Azure Bastion.

    az network bastion show --name $bastion_host_name --resource-group $resource_group_name
    

Membersihkan sumber daya

Ketika Anda tidak lagi membutuhkan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:

  1. Jalankan terraform plan dan tentukan destroy flag.

    terraform plan -destroy -out main.destroy.tfplan
    

    Poin-poin penting:

    • Perintah terraform plan membuat rencana eksekusi, tetapi tidak menjalankannya. Perintah ini justru menentukan tindakan yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda memastikan apakah rencana eksekusi telah sesuai dengan ekspektasi Anda sebelum membuat perubahan pada sumber daya aktual.
    • Parameter -out opsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter -out memastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
  2. Jalankan terraform apply untuk menerapkan rencana pelaksanaan.

    terraform apply main.destroy.tfplan
    

Memecahkan masalah Terraform pada Azure

Memecahkan masalah umum saat menggunakan Terraform di Azure.

Langkah berikutnya

Dalam panduan cepat ini, Anda menggunakan Terraform untuk membuat grup sumber daya Azure dan sumber daya Azure tambahan lainnya untuk menyiapkan host Azure Bastion. Selanjutnya, Anda dapat menjelajahi sumber daya berikut untuk mempelajari selengkapnya tentang Azure Bastion dan Terraform.