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 tugas-tugas seperti merender grafik 3D, menganalisis himpunan data besar, atau memproses video. Dalam hal ini, sumber daya yang dibuat mencakup akun Batch (yang merupakan entitas pengorganisasi pusat untuk tugas pemrosesan terdistribusi), akun Penyimpanan untuk menyimpan data yang akan diproses, dan dua kumpulan Batch, yang merupakan grup komputer virtual 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.
- Buat nama acak untuk grup sumber daya Azure.
- Buat grup sumber daya dengan nama yang dihasilkan di lokasi tertentu.
- Buat string acak untuk nama akun Penyimpanan.
- Buat akun Penyimpanan dengan nama yang dihasilkan di grup sumber daya yang dibuat.
- Buat string acak untuk nama akun Batch.
- Buat akun Batch dengan nama yang dihasilkan di grup sumber daya yang dibuat dan ditautkan ke akun Penyimpanan yang dibuat.
- Buat nama acak untuk kumpulan Batch.
- Buat kumpulan Batch dengan skala tetap dalam grup sumber daya yang dibuat dan ditautkan ke akun Batch yang dibuat.
- Buat kumpulan Batch dengan skala otomatis di grup sumber daya yang dibuat dan ditautkan ke akun Batch yang dibuat.
- 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
Nota
Kode sampel untuk artikel ini terletak di repositori GitHub Azure Terraform. Anda dapat melihat file log yang berisi hasil pengujian dari versi Terraformsaat 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_D4_v3" 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_D4_v3" 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." }
Menginisialisasi Terraform
Jalankan terraform init untuk menginisialisasi implementasi Terraform. Perintah ini mengunduh penyedia Azure yang diperlukan untuk mengelola sumber daya Azure Anda.
terraform init -upgrade
Poin utama:
- Parameter
-upgrademeningkatkan plugin penyedia yang diperlukan ke versi terbaru yang sesuai dengan batasan versi konfigurasi.
Buat rencana pelaksanaan Terraform
Jalankan terraform plan untuk membuat rencana pelaksanaan.
terraform plan -out main.tfplan
Poin utama:
- Perintah
terraform planmembuat rencana eksekusi, tetapi tidak menjalankannya. Sebaliknya, ini menentukan tindakan apa yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda untuk memverifikasi apakah rencana eksekusi sesuai dengan harapan Anda sebelum membuat perubahan apa pun 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 implementasi Terraform
Untuk menerapkan rencana eksekusi pada infrastruktur cloud Anda, jalankan terraform apply.
terraform apply main.tfplan
Poin utama:
- Contoh perintah
terraform applymengasumsikan 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 hasilnya
Jalankan az batch account show untuk melihat akun Batch.
az batch account show --name <batch_account_name> --resource-group <resource_group_name>
Dalam perintah di atas, ganti <batch_account_name> dengan nama akun Batch Anda dan <resource_group_name> dengan nama grup sumber daya Anda.
Membersihkan sumber daya
Saat Anda tidak lagi memerlukan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:
Jalankan terraform plan dan tentukan flag
destroy.terraform plan -destroy -out main.destroy.tfplanPoin utama:
- Perintah
terraform planmembuat rencana eksekusi, tetapi tidak menjalankannya. Sebaliknya, ini menentukan tindakan apa yang diperlukan untuk membuat konfigurasi yang ditentukan dalam file konfigurasi Anda. Pola ini memungkinkan Anda untuk memverifikasi apakah rencana eksekusi sesuai dengan harapan Anda sebelum membuat perubahan apa pun 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 mengimplementasikan rencana eksekusi.
terraform apply main.destroy.tfplan
Memecahkan masalah Terraform di Azure
Memecahkan masalah umum saat menggunakan Terraform di Azure.