Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
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
Buat akun Azure dengan langganan aktif. Anda dapat membuat akun secara gratis.
Menerapkan kode Terraform
Catatan
Kode sampel untuk artikel ini terletak di repositori GitHub Azure Terraform. Anda dapat melihat file log yang berisi hasil pengujian dari terraform versi saat ini dan sebelumnya.
Buat direktori untuk menguji dan menjalankan sampel kode Terraform, dan menjadikannya direktori saat ini.
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 } }
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 }
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 {} }
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 menjalankanterraform plan -out main.tfplan
. - Jika Anda menentukan nama file yang berbeda untuk parameter
-out
, gunakan nama file yang sama dalam panggilan keterraform apply
. - Jika Anda tidak menggunakan parameter
-out
, panggilterraform apply
tanpa parameter apa pun.
Memverifikasi hasil
Dapatkan nama grup sumber daya Azure.
resource_group_name=$(terraform output -raw resource_group_name)
Dapatkan nama host Azure Bastion.
bastion_host_name=$(terraform output -raw bastion_host_name)
Dapatkan alamat ip host Azure Bastion.
bastion_host_ip=$(terraform output -raw bastion_host_ip)
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:
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.
- Perintah
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.