Compartilhar via


Configurar os Arquivos do Azure usando o Terraform

Artigo testado com as seguintes versões do Terraform e do provedor do Terraform:

O Terraform permite a definição, a visualização e a implantação da infraestrutura de nuvem. Usando o Terraform, você cria arquivos de configuração usando sintaxe de HCL. A sintaxe da HCL permite que você especifique o provedor de nuvem, como o Azure, e os elementos que compõem sua infraestrutura de nuvem. Depois de criar os arquivos de configuração, você cria um plano de execução que permite visualizar as alterações de infraestrutura antes de serem implantadas. Depois de verificar as alterações, você aplica o plano de execução para implantar a infraestrutura.

O Azure oferece várias soluções de armazenamento que você pode usar para armazenar seu contêiner de perfis FSLogix. Este artigo aborda a configuração de soluções de armazenamento de Arquivos do Azure para contêineres de perfil de usuário FSLogix da Área de Trabalho Virtual do Azure usando o Terraform

Neste artigo, você aprenderá a:

  • Usar o Terraform para a conta do Armazenamento de Arquivos do Azure
  • Usar o Terraform para configurar o Compartilhamento de Arquivos
  • Usar o Terraform para configurar a permissão RBAC no Armazenamento de Arquivos do Azure

1. Configurar seu ambiente

  • Assinatura do Azure: Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

2. Implementar o código terraform

  1. Crie um diretório em que você vai testar o código de exemplo do Terraform, depois transforme-o no diretório atual.

  2. Crie um arquivo chamado providers.tf, depois insira o código a seguir.

    terraform {
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>2.0"
        }
        azuread = {
          source = "hashicorp/azuread"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
  3. Crie um arquivo chamado main.tf e insira o seguinte código:

    ## Create a Resource Group for Storage
    resource "azurerm_resource_group" "rg_storage" {
      location = var.deploy_location
      name     = var.rg_stor
    }
    
    # generate a random string (consisting of four characters)
    # https://registry.terraform.io/providers/hashicorp/random/latest/docs/resources/string
    resource "random_string" "random" {
      length  = 4
      upper   = false
      special = false
    }
    
    ## Azure Storage Accounts requires a globally unique names
    ## https://docs.microsoft.com/en-us/azure/storage/common/storage-account-overview
    ## Create a File Storage Account 
    resource "azurerm_storage_account" "storage" {
      name                     = "stor${random_string.random.id}"
      resource_group_name      = azurerm_resource_group.rg_storage.name
      location                 = azurerm_resource_group.rg_storage.location
      account_tier             = "Premium"
      account_replication_type = "LRS"
      account_kind             = "FileStorage"
    }
    
    resource "azurerm_storage_share" "FSShare" {
      name                 = "fslogix"
      storage_account_name = azurerm_storage_account.storage.name
      depends_on           = [azurerm_storage_account.storage]
    }
    
    ## Azure built-in roles
    ## https://docs.microsoft.com/en-us/azure/role-based-access-control/built-in-roles
    data "azurerm_role_definition" "storage_role" {
      name = "Storage File Data SMB Share Contributor"
    }
    
    resource "azurerm_role_assignment" "af_role" {
      scope              = azurerm_storage_account.storage.id
      role_definition_id = data.azurerm_role_definition.storage_role.id
      principal_id       = azuread_group.aad_group.id
    }
    
  4. Crie um arquivo chamado variables.tf e insira o seguinte código:

variable "deploy_location" {
  type        = string
  default     = "eastus"
  description = "The Azure Region in which all resources in this example should be created."
}

variable "rg_stor" {
  type        = string
  default     = "rg-avd-storage"
  description = "Name of the Resource group in which to deploy storage"
}

variable "avd_users" {
  description = "AVD users"
  default = [
    "avduser01@contoso.net",
    "avduser02@contoso.net"
  ]
}

variable "aad_group_name" {
  type        = string
  default     = "AVDUsers"
  description = "Azure Active Directory Group for AVD users"
}
  1. Crie um arquivo chamado output.tf e insira o seguinte código:
output "location" {
  description = "The Azure region"
  value       = azurerm_resource_group.rg_storage.location
}

output "storage_account" {
  description = "Storage account for Profiles"
  value       = azurerm_storage_account.storage.name
}

output "storage_account_share" {
  description = "Name of the Azure File Share created for FSLogix"
  value       = azurerm_storage_share.FSShare.name
}

output "AVD_user_groupname" {
  description = "Azure Active Directory Group for AVD users"
  value       = azuread_group.aad_group.display_name
}

3. Inicializar Terraform

Execute terraform init para inicializar a implantação do Terraform. Esse comando baixa o provedor do Azure necessário para gerenciar seus recursos do Azure.

terraform init -upgrade

Pontos principais:

  • O parâmetro -upgrade atualiza os plug-ins do provedor necessários para a versão mais recente que esteja em conformidade com as restrições de versão da configuração.

4. Criar um plano de execução do Terraform

Execute o comando terraform plan para criar um plano de execução.

terraform plan -out main.tfplan

Pontos principais:

  • O comando terraform plan cria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite verificar se o plano de execução corresponde às suas expectativas antes de fazer alterações nos recursos reais.
  • O parâmetro opcional -out permite que você especifique um arquivo de saída para o plano. Usar o parâmetro -out garante que o plano que você examinou seja exatamente o que é aplicado.

5. Aplicar um plano de execução do Terraform

Execute o comando terraform apply para aplicar o plano de execução à sua infraestrutura de nuvem.

terraform apply main.tfplan

Pontos principais:

  • O exemplo de comando do terraform apply pressupõe que você executou o terraform plan -out main.tfplan anteriormente.
  • Se você especificou um nome de arquivo diferente para o parâmetro -out, use esse mesmo nome de arquivo na chamada para terraform apply.
  • Se você não usou o parâmetro -out, chame terraform apply sem nenhum parâmetro.

6. Limpar os recursos

Quando você não precisar mais dos recursos criados por meio do Terraform, execute as seguintes etapas:

  1. Execute o comando terraform plan e especifique a flag destroy.

    terraform plan -destroy -out main.destroy.tfplan
    

    Pontos principais:

    • O comando terraform plan cria um plano de execução, mas não o executa. Em vez disso, ele determina quais ações são necessárias para criar a configuração especificada em seus arquivos de configuração. Esse padrão permite verificar se o plano de execução corresponde às suas expectativas antes de fazer alterações nos recursos reais.
    • O parâmetro opcional -out permite que você especifique um arquivo de saída para o plano. Usar o parâmetro -out garante que o plano que você examinou seja exatamente o que é aplicado.
  2. Execute o comando terraform apply para aplicar o plano de execução.

    terraform apply main.destroy.tfplan
    

Solucionar problemas do Terraform no Azure

Solucionar problemas comuns ao usar o Terraform no Azure

Próximas etapas