Este guia fornece instruções detalhadas para migrar do Azion Terraform Provider v1.x (API v3) para v2.0 (API v4). Siga os passos abaixo para garantir uma transição suave.
Visão Geral da Migração
O Terraform Provider v2.0 representa uma versão principal que migra para a API v4 da Azion. Esta versão introduz novos recursos e remove os descontinuados para se alinhar com a nova arquitetura da API.
Mudanças Principais
| Aspecto | v1.x (API v3) | v2.0 (API v4) |
|---|---|---|
| Versão da API | Azion API v3 | Azion API v4 |
| Gerenciamento de Domínios | recurso azion_domain | recursos azion_workload e azion_workload_deployment |
| Gerenciamento de Origins | recurso azion_edge_application_origin | recurso azion_connector |
| Functions | recurso azion_edge_function | recurso azion_function |
| Páginas Personalizadas | Não disponível | recurso azion_custom_page |
Compatibilidade de Versões
| Versão do Terraform Provider | Versão da API | Status |
|---|---|---|
| 1.41.0 e anteriores | API v3 | Descontinuado |
| 2.0.0 e posteriores | API v4 | Atual |
Antes de Começar
Antes de iniciar o processo de migração, certifique-se de ter concluído as seguintes preparações.
Pré-requisitos
- Terraform: Versão 1.0 ou posterior instalada
- Conta Azion: Conta válida com acesso à API v4
- Token Pessoal: Um token pessoal válido com permissões apropriadas
- Backup: Um backup completo do seu estado Terraform atual e configurações
Backup da Configuração
Crie um backup da sua configuração Terraform atual e dos arquivos de estado antes de fazer qualquer alteração:
# Criar um diretório de backupmkdir -p ~/terraform-backup
# Copiar seus arquivos de configuraçãocp -r ./seu-projeto-terraform ~/terraform-backup/
# Fazer backup do arquivo de estado (se usando estado local)cp terraform.tfstate ~/terraform-backup/cp terraform.tfstate.backup ~/terraform-backup/ 2>/dev/null || true
# Se usando estado remoto, baixar uma cópia localterraform state pull > ~/terraform-backup/terraform.tfstateFixar Sua Versão
Se você precisar permanecer na v1.x temporariamente, fixar a versão do provider:
terraform { required_providers { azion = { source = "aziontech/azion" version = "1.41.0" } }}A versão 1.41.0 e anteriores não recebem mais atualizações ou correções de bugs. Planeje sua migração para v2.0 o mais breve possível.
Breaking Changes
Esta seção detalha as breaking changes entre v1.x e v2.0.
Recursos Removidos
Os seguintes recursos e data sources foram removidos na v2.0:
| Recurso | Status | Substituto |
|---|---|---|
azion_domain | Removido | Use azion_workload e azion_workload_deployment |
azion_domains (data source) | Removido | Use data source azion_workloads |
azion_edge_application_origin | Removido | Use azion_connector |
azion_edge_applications_origins (data source) | Removido | Use data source azion_connectors |
Recursos Renomeados
| Recurso v1.x | Recurso v2.0 | Observações |
|---|---|---|
azion_edge_function | azion_function | Recurso renomeado para se alinhar com a nova nomenclatura do produto |
Novos Recursos na v2.0
| Recurso | Descrição |
|---|---|
azion_workload | Gerenciar workloads da Azion (substitui o gerenciamento de domínios) |
azion_workload_deployment | Gerenciar deployments de workload |
azion_connector | Gerenciar connectors da Azion (substitui o gerenciamento de origins) |
azion_custom_page | Gerenciar páginas personalizadas |
Recursos Inalterados
Os seguintes recursos permanecem disponíveis com seus nomes originais:
| Recurso | Descrição |
|---|---|
azion_edge_application_main_setting | Configurações principais da aplicação |
azion_edge_application_cache_setting | Configurações de cache |
azion_edge_application_rule_engine | Rules Engine |
azion_edge_application_edge_functions_instance | Instâncias de função para aplicações |
azion_edge_firewall_main_setting | Configurações principais do firewall |
azion_edge_firewall_edge_functions_instance | Instâncias de função para firewall |
azion_intelligent_dns_zone | Zonas DNS |
azion_intelligent_dns_record | Registros DNS |
azion_intelligent_dns_dnssec | Configurações DNSSEC |
azion_network_list | Network Lists |
azion_waf_rule_set | Conjuntos de regras WAF |
azion_digital_certificate | Certificados digitais |
azion_environment_variable | Variáveis de ambiente |
Mapeamento de Recursos
Esta seção fornece o mapeamento detalhado entre os recursos v1.x e v2.0.
Mapeamento de Domínio para Workload
O gerenciamento de domínios na v1.x foi substituído por um modelo de dois recursos na v2.0:
| v1.x (Domain) | v2.0 (Workload) |
|---|---|
azion_domain | azion_workload + azion_workload_deployment |
azion_domains (data source) | azion_workloads |
Diferenças Principais:
- v1.x: Um único recurso
azion_domaingerenciava todo o ciclo de vida do domínio - v2.0: Separação de responsabilidades com
azion_workload(definição) eazion_workload_deployment(deployment)
Mapeamento de Origin para Connector
O gerenciamento de origins foi substituído por connectors:
| v1.x (Origin) | v2.0 (Connector) |
|---|---|
azion_edge_application_origin | azion_connector |
azion_edge_applications_origins (data source) | azion_connectors |
Diferenças Principais:
- v1.x: Origins eram definidos dentro do contexto de Edge Applications
- v2.0: Connectors são recursos independentes que fornecem opções de integração mais flexíveis
Mapeamento de Edge Function para Function
| v1.x | v2.0 |
|---|---|
azion_edge_function | azion_function |
azion_edge_functions (data source) | data source azion_functions |
Exemplos de Migração
Esta seção fornece exemplos de configuração lado a lado para migrar seus recursos Terraform.
Migração de Domínio para Workload
Configuração v1.x
terraform { required_providers { azion = { source = "aziontech/azion" version = "1.41.0" } }}
provider "azion" { api_token = var.api_token}
# Recurso Domain (v1.x)resource "azion_domain" "example" { name = "meu-dominio" cname_access_only = false digital_certificate = 1234 edge_application = 5678 is_active = true
# Vinculação do nome do domínio domain_name = "exemplo.com"}Configuração v2.0
terraform { required_providers { azion = { source = "aziontech/azion" version = "2.0.0" } }}
provider "azion" { api_token = var.api_token}
# Recurso Workload (v2.0)resource "azion_workload" "example" { name = "meu-workload"
# Opções de configuração do workload # Consulte a documentação do Terraform Registry para opções completas}
# Deployment do workload (v2.0)resource "azion_workload_deployment" "example" { workload_id = azion_workload.example.id
# Configuração do deployment # Consulte a documentação do Terraform Registry para opções completas}Migração de Origin para Connector
Configuração v1.x
# Edge Application Origin (v1.x)resource "azion_edge_application_origin" "example" { edge_application_id = azion_edge_application_main_setting.example.id
name = "minha-origin" origin_type = "single_origin" origin_address = "origin.exemplo.com" origin_protocol = "https" origin_path = "/api" host_header = "origin.exemplo.com"
# Configurações de conexão connection_timeout = 30 read_timeout = 60}Configuração v2.0
# Connector (v2.0)resource "azion_connector" "example" { name = "meu-connector"
# Configuração do connector # Consulte a documentação do Terraform Registry para opções completas
# Exemplo de configuração origin = { address = "origin.exemplo.com" protocol = "https" path = "/api" }
# Configurações de conexão connection_timeout = 30 read_timeout = 60}Migração de Edge Function
Configuração v1.x
# Edge Function (v1.x)resource "azion_edge_function" "example" { name = "minha-funcao" active = true code = file("${path.module}/function.js")
# Argumentos da função json_args = jsonencode({ key = "valor" })}Configuração v2.0
# Function (v2.0)resource "azion_function" "example" { name = "minha-funcao" active = true code = file("${path.module}/function.js")
# Argumentos da função json_args = jsonencode({ key = "valor" })}Exemplo Completo: Aplicação com Workload
Configuração v1.x
terraform { required_providers { azion = { source = "aziontech/azion" version = "1.41.0" } }}
provider "azion" { api_token = var.api_token}
# Edge Applicationresource "azion_edge_application_main_setting" "app" { name = "minha-aplicacao"}
# Originresource "azion_edge_application_origin" "origin" { edge_application_id = azion_edge_application_main_setting.app.id name = "minha-origin" origin_type = "single_origin" origin_address = "origin.exemplo.com"}
# Domainresource "azion_domain" "domain" { name = "meu-dominio" edge_application = azion_edge_application_main_setting.app.id domain_name = "exemplo.com"}
# Edge Functionresource "azion_edge_function" "func" { name = "minha-funcao" active = true code = file("${path.module}/function.js")}Configuração v2.0
terraform { required_providers { azion = { source = "aziontech/azion" version = "2.0.0" } }}
provider "azion" { api_token = var.api_token}
# Edge Application (inalterada)resource "azion_edge_application_main_setting" "app" { name = "minha-aplicacao"}
# Connector (substitui origin)resource "azion_connector" "connector" { name = "meu-connector" # Configuração do connector}
# Workload (substitui domain)resource "azion_workload" "workload" { name = "meu-workload"}
# Workload deploymentresource "azion_workload_deployment" "deployment" { workload_id = azion_workload.workload.id # Configuração do deployment}
# Function (renomeada)resource "azion_function" "func" { name = "minha-funcao" active = true code = file("${path.module}/function.js")}Passos de Migração de Estado
Siga estes passos para migrar seu estado Terraform de v1.x para v2.0.
Passo 1: Atualizar a Versão do Provider
Atualize sua configuração Terraform para usar o Provider v2.0:
terraform { required_providers { azion = { source = "aziontech/azion" version = "2.0.0" } }}Passo 2: Inicializar o Novo Provider
Execute Terraform init para baixar o novo provider:
terraform init -upgradePasso 3: Remover Recursos Descontinuados do Estado
Remova os recursos descontinuados do seu estado Terraform:
# Remover recursos de domínioterraform state rm azion_domain.example
# Remover recursos de originterraform state rm azion_edge_application_origin.example
# Remover recursos de edge function (serão recriados como azion_function)terraform state rm azion_edge_function.examplePasso 4: Atualizar Arquivos de Configuração
Atualize seus arquivos .tf com as novas configurações de recursos seguindo os exemplos na seção Exemplos de Migração.
Passo 5: Importar Novos Recursos
Importe seus recursos existentes para os novos tipos de recursos:
# Importar workloadsterraform import azion_workload.example <workload_id>
# Importar connectorsterraform import azion_connector.example <connector_id>
# Importar functionsterraform import azion_function.example <function_id>Passo 6: Verificar o Plano
Execute um plan para verificar as mudanças esperadas:
terraform planRevise a saída cuidadosamente para garantir:
- Nenhum recurso será destruído inesperadamente
- Novos recursos serão criados corretamente
- Atributos dos recursos estão mapeados corretamente
Passo 7: Aplicar as Mudanças
Aplique as mudanças:
terraform applySolução de Problemas
Esta seção aborda problemas comuns encontrados durante a migração.
Erros Comuns e Soluções
Erro: Conflito de Versão do Provider
Error: Failed to query available provider packagesCould not retrieve the list of available versions for provider aziontech/azionSolução: Certifique-se de especificar a fonte e versão corretas. Execute:
terraform init -upgradeErro: Tipo de Recurso Não Encontrado
Error: Invalid resource typeon main.tf line 10:10: resource "azion_domain" "example" {The provider aziontech/azion does not support resource type "azion_domain".Solução: Este recurso foi removido na v2.0. Substitua pelos recursos azion_workload e azion_workload_deployment.
Erro: Falha na Migração de Estado
Error: Error refreshing state: azion_edge_application_origin.example:resource not foundSolução: O recurso já foi removido ou não existe. Remova-o do estado:
terraform state rm azion_edge_application_origin.exampleErro: Importação Não Encontrada
Error: Cannot import non-existent remote objectSolução: Certifique-se de que o ID do recurso que você está importando existe na API v4. Alguns recursos da API v3 podem ter IDs diferentes na API v4. Verifique o Console da Azion para encontrar os IDs de recursos corretos.
Recursos Adicionais
- Documentação do Terraform Provider v2.0
- Documentação do Terraform Provider v1.x (Descontinuado)
- Documentação da API v4 da Azion
- Terraform Registry - Azion Provider
Obtendo Ajuda
Se você encontrar problemas durante a migração:
- Revise a seção Solução de Problemas
- Consulte a documentação do Terraform Registry
- Entre em contato com o Suporte Azion através do Portal de Suporte
- Visite a Comunidade Azion para recursos adicionais