Membuat sistem file Azure Managed Lustre menggunakan Terraform
Dalam artikel ini, Anda menggunakan Terraform untuk membuat sistem file Azure Managed Lustre .
Terraform memungkinkan definisi, pratinjau, dan penyebaran infrastruktur cloud. Menggunakan Terraform, Anda membuat file konfigurasi menggunakan sintaksis HCL. Sintaksis HCL memungkinkan Anda untuk menentukan penyedia cloud - seperti Azure - dan elemen yang membentuk infrastruktur cloud Anda. Setelah membuat file konfigurasi, Anda membuat rencana eksekusi yang memungkinkan Anda untuk melihat pratinjau perubahan infrastruktur Anda sebelum disebarkan. Setelah memverifikasi perubahan, Anda menerapkan rencana eksekusi untuk menyebarkan infrastruktur.
Dalam artikel ini, Anda akan mempelajari cara:
- Membuat nilai acak (untuk digunakan dalam nama grup sumber daya) menggunakan random_pet
- Buat grup sumber daya Azure menggunakan azurerm_resource_group
- Membuat Virtual Network Azure menggunakan azurerm_virtual_network
- Buat subnet Azure menggunakan azurerm_subnet
- Buat nilai acak (untuk digunakan sebagai nama sistem file Lustre Terkelola) menggunakan random_string
- Membuat sistem file Lustre Terkelola menggunakan azurerm_managed_lustre_file_system
Catatan
Contoh kode dalam artikel ini menggunakan sumber daya random_pet dan random_string untuk menghasilkan nilai unik untuk nama grup sumber daya dan nama sistem file Lustre Terkelola. Anda dapat mengganti nilai-nilai ini dengan nama sumber daya Anda sendiri di variables.tf
file dan main.tf
.
Prasyarat
Menerapkan kode Terraform
Catatan
Kode sampel untuk artikel ini terletak di repositori Azure Terraform GitHub. Anda dapat melihat file log yang berisi hasil pengujian dari terraform versi terraform saat ini dan sebelumnya.
Buat direktori untuk menguji dan menjalankan kode Terraform sampel dan menjadikannya direktori saat ini.
Buat file bernama
providers.tf
dan masukkan 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
main.tf
dan masukkan 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" "azurerm_virtual_network_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_virtual_network" "example" { name = coalesce(var.virtual_network_name, "vnet-${random_string.azurerm_virtual_network_name.result}") resource_group_name = azurerm_resource_group.rg.name address_space = ["10.0.0.0/16"] location = azurerm_resource_group.rg.location } resource "random_string" "azurerm_subnet_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_subnet" "example" { name = coalesce(var.subnet_name, "subnet-${random_string.azurerm_subnet_name.result}") resource_group_name = azurerm_resource_group.rg.name virtual_network_name = azurerm_virtual_network.example.name address_prefixes = ["10.0.2.0/24"] } resource "random_string" "azurerm_amlfs_name" { length = 13 lower = true numeric = false special = false upper = false } resource "azurerm_managed_lustre_file_system" "example" { name = coalesce(var.amlfs_name, "amlfs-${random_string.azurerm_amlfs_name.result}") resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location sku_name = var.amlfs_sku_name subnet_id = azurerm_subnet.example.id storage_capacity_in_tb = var.amlfs_storage_capacity_in_tb zones = ["1"] maintenance_window { day_of_week = var.amlfs_maintenance_day_of_week time_of_day_in_utc = var.amlfs_maintenance_time_of_day } }
Buat file bernama
variables.tf
dan masukkan kode berikut: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." } variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "virtual_network_name" { type = string description = "The name of the virtual network resource. The value will be randomly generated if blank." default = "" } variable "subnet_name" { type = string description = "The name of the virtual network subnet. The value will be randomly generated if blank." default = "" } variable "amlfs_name" { type = string description = "The name of the Manage Lustre file system resource. The value will be randomly generated if blank." default = "" } variable "amlfs_sku_name" { type = string default = "AMLFS-Durable-Premium-40" validation { condition = contains(["AMLFS-Durable-Premium-40", "AMLFS-Durable-Premium-125", "AMLFS-Durable-Premium-250", "AMLFS-Durable-Premium-500"], var.amlfs_sku_name) error_message = "The SKU value must be one of the following: AMLFS-Durable-Premium-40, AMLFS-Durable-Premium-125, AMLFS-Durable-Premium-250, AMLFS-Durable-Premium-500." } description = "SKU name for the Azure Managed Lustre file system." } variable "amlfs_storage_capacity_in_tb" { type = number default = 48 description = "The size of the Managed Lustre file system, in TiB. This might be rounded up." } variable "amlfs_maintenance_day_of_week" { type = string default = "Saturday" validation { condition = contains(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], var.amlfs_maintenance_day_of_week) error_message = "The maintenance day of week value must be one of the following: Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday." } description = "Day of the week on which the maintenance window will occur." } variable "amlfs_maintenance_time_of_day" { type = string default = "02:00" description = "The time of day (in UTC) to start the maintenance window." }
Buat file bernama
outputs.tf
dan masukkan kode berikut:output "resource_group_name" { value = azurerm_resource_group.rg.name } output "virtual_network_name" { value = azurerm_virtual_network.example.name } output "subnet_name" { value = azurerm_subnet.example.name } output "managed_lustre_file_system_name" { value = azurerm_managed_lustre_file_system.example.name } output "amlfs_sku_name" { value = azurerm_managed_lustre_file_system.example.sku_name } output "amlfs_storage_capacity_in_tb" { value = azurerm_managed_lustre_file_system.example.storage_capacity_in_tb }
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 rencana 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 sistem file Lustre Terkelola.
managed_lustre_file_system_name=$(terraform output -raw managed_lustre_file_system_name)
Jalankan az amlfs show untuk menampilkan nama sistem file Lustre Terkelola.
az amlfs show --resource-group $resource_group_name \ --name $managed_lustre_file_system_name \
Membersihkan sumber daya
Ketika Anda tidak lagi membutuhkan sumber daya yang dibuat melalui Terraform, lakukan langkah-langkah berikut:
Jalankan terraform plan dan tentukan bendera
destroy
.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 eksekusi.
terraform apply main.destroy.tfplan
Memecahkan masalah Terraform pada Azure
Memecahkan masalah umum saat menggunakan Terraform di Azure
Langkah berikutnya
Selanjutnya, Anda dapat menjelajahi selengkapnya tentang Azure Managed Lustre.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk