Início Rápido: Criar um servidor e uma base de dados da Base de Dados do SQL do Azure com o Terraform
Criar uma base de dados individual é a opção mais rápida e simples de criar uma base de dados na Base de Dados do SQL do Azure. Este início rápido mostra-lhe como criar uma base de dados individual com o Terraform.
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:
- Crie um valor aleatório para o nome do grupo de recursos do Azure com random_pet.
- Crie um grupo de recursos do Azure com azurerm_resource_group.
- Crie um valor aleatório para o servidor lógico no Azure com random_pet.
- Crie uma palavra-passe aleatória para o servidor lógico no Azure com random_password.
- Crie um servidor lógico no Azure com azurerm_mssql_server.
- Crie uma base de dados na Base de Dados do SQL do Azure com azurerm_mssql_database.
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 para testar e executar 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" { name = random_pet.rg_name.id location = var.resource_group_location } resource "random_pet" "azurerm_mssql_server_name" { prefix = "sql" } resource "random_password" "admin_password" { count = var.admin_password == null ? 1 : 0 length = 20 special = true min_numeric = 1 min_upper = 1 min_lower = 1 min_special = 1 } locals { admin_password = try(random_password.admin_password[0].result, var.admin_password) } resource "azurerm_mssql_server" "server" { name = random_pet.azurerm_mssql_server_name.id resource_group_name = azurerm_resource_group.rg.name location = azurerm_resource_group.rg.location administrator_login = var.admin_username administrator_login_password = local.admin_password version = "12.0" } resource "azurerm_mssql_database" "db" { name = var.sql_db_name server_id = azurerm_mssql_server.server.id }
Crie um ficheiro com o nome
variables.tf
e insira o seguinte código:variable "resource_group_location" { type = string description = "Location for all resources." default = "eastus" } variable "resource_group_name_prefix" { type = string description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription." default = "rg" } variable "sql_db_name" { type = string description = "The name of the SQL Database." default = "SampleDB" } variable "admin_username" { type = string description = "The administrator username of the SQL logical server." default = "azureadmin" } variable "admin_password" { type = string description = "The administrator password of the SQL logical server." sensitive = true default = null }
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 "sql_server_name" { value = azurerm_mssql_server.server.name } output "admin_password" { sensitive = true value = local.admin_password }
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. - Para ler mais sobre os planos de execução persistentes e a segurança, consulte a secção de aviso de segurança.
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 novo nome de servidor lógico.
sql_server_name=$(terraform output -raw sql_server_name)
Execute az sql db list para apresentar os nomes de todas as bases de dados no seu servidor.
az sql db list \ --resource-group $resource_group_name \ --server $sql_server_name \ --output table
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. - Para ler mais sobre os planos de execução persistentes e a segurança, consulte a secção de aviso de segurança.
- 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