Criar um sistema de ficheiros do Azure Managed Lustre com o Terraform
Neste artigo, vai utilizar o Terraform para criar um sistema de ficheiros do Azure Managed Lustre .
O Terraform permite a definição, pré-visualização e implementação da infraestrutura de cloud. Com o Terraform, pode criar ficheiros de configuração com a sintaxe HCL. A sintaxe HCL permite-lhe especificar o fornecedor de cloud ( como o Azure) e os elementos que compõem a sua infraestrutura de cloud. Depois de criar os seus ficheiros de configuração, cria um plano de execução que lhe permite pré-visualizar as alterações da infraestrutura antes de serem implementados. Depois de verificar as alterações, aplique o plano de execução para implementar a infraestrutura.
Neste artigo, vai aprender a:
- Criar um valor aleatório (a ser utilizado no nome do grupo de recursos) com random_pet
- Criar um grupo de recursos do Azure com azurerm_resource_group
- Criar um Rede Virtual do Azure com azurerm_virtual_network
- Criar uma sub-rede do Azure com azurerm_subnet
- Criar um valor aleatório (para ser utilizado como o nome do sistema de ficheiros Managed Lustre) com random_string
- Criar um sistema de ficheiros Managed Lustre com azurerm_managed_lustre_file_system
Nota
O exemplo de código neste artigo utiliza os recursos random_pet e random_string para gerar valores exclusivos para o nome do grupo de recursos e o nome do sistema de ficheiros Managed Lustre. Pode substituir estes valores pelos seus próprios nomes de recursos nos variables.tf
ficheiros e main.tf
.
Pré-requisitos
Implementar o código terraform
Nota
O código de exemplo para este artigo está localizado no repositório do GitHub do Azure Terraform. Pode ver o ficheiro de registo que contém os resultados do teste das versões atuais e anteriores do Terraform.
Veja mais artigos e código de exemplo que mostram como utilizar o Terraform para gerir recursos do Azure
Crie um diretório no qual testar o código terraform de exemplo e torná-lo no diretório atual.
Crie um ficheiro com o nome
providers.tf
e insira o seguinte código:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }
Crie um ficheiro com o nome
main.tf
e insira o seguinte código: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 } }
Crie um ficheiro com o nome
variables.tf
e insira o seguinte código: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." }
Crie um ficheiro com o nome
outputs.tf
e insira o seguinte código: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 }
Inicializar o Terraform
Execute o init do terraform para inicializar a implementação do Terraform. Este comando transfere o fornecedor do Azure necessário para gerir os recursos do Azure.
terraform init -upgrade
Pontos-chave:
- O
-upgrade
parâmetro atualiza os plug-ins do fornecedor necessários para a versão mais recente que está em conformidade com as restrições de versão da configuração.
Criar um plano de execução do Terraform
Execute o plano terraform para criar um plano de execução.
terraform plan -out main.tfplan
Pontos-chave:
- O
terraform plan
comando cria um plano de execução, mas não o executa. Em vez disso, determina que ações são necessárias para criar a configuração especificada nos seus ficheiros de configuração. Este padrão permite-lhe verificar se o plano de execução corresponde às suas expetativas antes de efetuar alterações aos recursos reais. - O parâmetro opcional
-out
permite-lhe especificar um ficheiro de saída para o plano. A utilização do-out
parâmetro garante que o plano que reviu é exatamente o que é aplicado.
Aplicar um plano de execução do Terraform
Execute terraform apply para aplicar o plano de execução à sua infraestrutura de cloud.
terraform apply main.tfplan
Pontos-chave:
- O comando de exemplo
terraform apply
pressupõe que executouterraform plan -out main.tfplan
anteriormente . - Se especificou um nome de ficheiro diferente para o
-out
parâmetro , utilize o mesmo nome de ficheiro na chamada paraterraform apply
. - Se não utilizou o
-out
parâmetro , chameterraform apply
sem parâmetros.
Verificar os resultados
Obtenha o nome do grupo de recursos do Azure.
resource_group_name=$(terraform output -raw resource_group_name)
Obtenha o nome do sistema de ficheiros Managed Lustre.
managed_lustre_file_system_name=$(terraform output -raw managed_lustre_file_system_name)
Execute az amlfs show para apresentar o nome do sistema de ficheiros Managed Lustre.
az amlfs show --resource-group $resource_group_name \ --name $managed_lustre_file_system_name \
Limpar os recursos
Quando já não precisar dos recursos criados através do Terraform, siga os seguintes passos:
Execute o plano terraform e especifique o
destroy
sinalizador.terraform plan -destroy -out main.destroy.tfplan
Pontos-chave:
- O
terraform plan
comando cria um plano de execução, mas não o executa. Em vez disso, determina que ações são necessárias para criar a configuração especificada nos seus ficheiros de configuração. Este padrão permite-lhe verificar se o plano de execução corresponde às suas expetativas antes de efetuar alterações aos recursos reais. - O parâmetro opcional
-out
permite-lhe especificar um ficheiro de saída para o plano. A utilização do-out
parâmetro garante que o plano que reviu é exatamente o que é aplicado.
- O
Execute terraform apply para aplicar o plano de execução.
terraform apply main.destroy.tfplan
Resolver problemas do Terraform no Azure
Resolver problemas comuns ao utilizar o Terraform no Azure
Passos seguintes
Em seguida, pode explorar mais sobre o Azure Managed Lustre.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários