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 membuat akun Azure Batch, akun Azure Storage, dan dua kumpulan Batch menggunakan Terraform. Batch adalah layanan penjadwalan pekerjaan berbasis cloud yang menyejajarkan dan mendistribusikan pemrosesan data dalam volume besar di banyak komputer. Ini biasanya digunakan untuk pembersihan parametrik, simulasi Monte Carlo, pemodelan risiko keuangan, dan aplikasi komputasi berkinerja tinggi lainnya. Akun Batch adalah sumber daya tingkat atas dalam layanan Batch yang menyediakan akses ke kumpulan, pekerjaan, dan tugas. Akun Penyimpanan digunakan untuk menyimpan dan mengelola semua file yang digunakan dan dihasilkan oleh layanan Batch, sementara dua kumpulan Batch adalah kumpulan simpul komputasi yang menjalankan tugas.
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.
- Tentukan versi Terraform yang diperlukan dan penyedia yang diperlukan.
- Tentukan penyedia Azure tanpa fitur tambahan.
- Tentukan variabel untuk lokasi grup sumber daya dan awalan nama grup sumber daya.
- Buat nama acak untuk grup sumber daya menggunakan awalan yang disediakan.
- Buat grup sumber daya Azure dengan nama yang dihasilkan di lokasi yang ditentukan.
- Buat string acak yang akan digunakan sebagai nama untuk akun Storage.
- Buat akun Penyimpanan dengan nama yang dihasilkan dalam grup sumber daya yang dibuat, di lokasi yang sama, dan dengan tingkat akun standar dan jenis replikasi Penyimpanan yang berlebihan secara lokal.
- Buat string acak lain untuk digunakan sebagai nama untuk akun Batch.
- Buat akun Batch dengan nama yang dihasilkan dalam grup sumber daya yang dibuat, di lokasi yang sama, dan tautkan ke akun Penyimpanan yang dibuat dengan mode autentikasi kunci Penyimpanan.
- Buat nama acak untuk kumpulan Batch dengan awalan "kumpulan".
- Buat kumpulan Batch dengan skala tetap menggunakan nama yang dihasilkan dalam grup sumber daya yang dibuat, ditautkan ke akun Batch yang dibuat, dengan ukuran komputer virtual (VM) A1 standar, SKU agen simpul Ubuntu 22.04, dan tugas mulai yang menggemakan 'Halo Dunia dari $env' dengan maksimum satu coba lagi dan menunggu keberhasilan.
- Buat kumpulan Batch lain dengan skala otomatis, menggunakan nama yang dihasilkan yang sama, dalam grup sumber daya yang dibuat, ditautkan ke akun Batch yang dibuat, dengan ukuran VM A1 standar, SKU agen simpul Ubuntu 22.04, dan rumus skala otomatis.
- Keluarkan nama grup sumber daya yang dibuat, akun Penyimpanan, akun Batch, dan kedua kumpulan Batch.
Prasyarat
- Buat akun Azure dengan langganan aktif. Anda dapat membuat akun secara gratis.
- Menginstal dan mengonfigurasi Terraform.
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: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 } resource "random_string" "storage_account_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_storage_account" "example" { name = random_string.storage_account_name.result resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location account_tier = "Standard" account_replication_type = "LRS" } resource "random_string" "batch_account_name" { length = 8 lower = true numeric = false special = false upper = false } resource "azurerm_batch_account" "example" { name = random_string.batch_account_name.result resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location storage_account_id = azurerm_storage_account.example.id storage_account_authentication_mode = "StorageKeys" } resource "random_pet" "azurerm_batch_pool_name" { prefix = "pool" } resource "azurerm_batch_pool" "fixed" { name = "${random_pet.azurerm_batch_pool_name.id}-fixed-pool" resource_group_name = azurerm_resource_group.rg.name account_name = azurerm_batch_account.example.name display_name = "Fixed Scale Pool" vm_size = "Standard_A1" node_agent_sku_id = "batch.node.ubuntu 22.04" fixed_scale { target_dedicated_nodes = 2 resize_timeout = "PT15M" } storage_image_reference { publisher = "Canonical" offer = "0001-com-ubuntu-server-jammy" sku = "22_04-lts" version = "latest" } start_task { command_line = "echo 'Hello World from $env'" task_retry_maximum = 1 wait_for_success = true common_environment_properties = { env = "TEST" } user_identity { auto_user { elevation_level = "NonAdmin" scope = "Task" } } } metadata = { "tagName" = "Example tag" } } resource "azurerm_batch_pool" "autopool" { name = "${random_pet.azurerm_batch_pool_name.id}-autoscale-pool" resource_group_name = azurerm_resource_group.rg.name account_name = azurerm_batch_account.example.name display_name = "Auto Scale Pool" vm_size = "Standard_A1" node_agent_sku_id = "batch.node.ubuntu 22.04" auto_scale { evaluation_interval = "PT15M" formula = <<EOF startingNumberOfVMs = 1; maxNumberofVMs = 25; pendingTaskSamplePercent = $PendingTasks.GetSamplePercent(180 * TimeInterval_Second); pendingTaskSamples = pendingTaskSamplePercent < 70 ? startingNumberOfVMs : avg($PendingTasks.GetSample(180 * TimeInterval_Second)); $TargetDedicatedNodes=min(maxNumberofVMs, pendingTaskSamples); EOF } storage_image_reference { publisher = "Canonical" offer = "0001-com-ubuntu-server-jammy" sku = "22_04-lts" version = "latest" } }Buat file bernama
outputs.tf, dan sisipkan kode berikut:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "storage_account_name" { value = azurerm_storage_account.example.name } output "batch_account_name" { value = azurerm_batch_account.example.name } output "batch_pool_fixed_name" { value = azurerm_batch_pool.fixed.name } output "batch_pool_autopool_name" { value = azurerm_batch_pool.autopool.name }Buat file bernama
providers.tf, dan sisipkan kode berikut:terraform { required_version = ">=1.0" 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
-upgrademeningkatkan plugin penyedia yang diperlukan ke versi terbaru yang sesuai dengan batasan versi konfigurasi.
Buat rencana eksekusi Terraform
Jalankan terraform plan untuk menyusun rencana eksekusi.
terraform plan -out main.tfplan
Poin-poin penting:
- Perintah
terraform planmembuat 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
-outopsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter-outmemastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
Terapkan rencana eksekusi Terraform
Jalankan terraform apply untuk menerapkan rencana eksekusi ke infrastruktur cloud Anda.
terraform apply main.tfplan
Poin-poin penting:
- Contoh
terraform applyperintah 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 applytanpa parameter apa pun.
Memverifikasi hasil
Jalankan az batch account show untuk melihat akun Batch.
az batch account show --name <batch_account_name> --resource-group <resource_group_name>
Ganti <batch_account_name> dengan nama akun Batch Anda dan <resource_group_name> dengan nama grup sumber daya Anda.
Membersihkan sumber daya
Ketika Anda tidak lagi membutuhkan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:
Jalankan terraform plan dan tentukan flag
destroy.terraform plan -destroy -out main.destroy.tfplanPoin-poin penting:
- Perintah
terraform planmembuat 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
-outopsional memungkinkan Anda menentukan file output untuk rencana. Menggunakan parameter-outmemastikan bahwa rencana yang Anda tinjau benar-benar sesuai dengan yang diterapkan.
- Perintah
Jalankan terraform apply untuk menjalankan rencana eksekusi.
terraform apply main.destroy.tfplan
Memecahkan masalah Terraform pada Azure
Memecahkan masalah umum saat menggunakan Terraform di Azure.