Upnetix Labs · protocolo de experimento
Protocolo: O tempo de provisionamento de uma VM varia conforme o provedor usando Terraform?
Este protocolo avalia se o tempo total para provisionar uma máquina virtual difere entre dois provedores de nuvem, usando o mesmo código Terraform. O objetivo é medir o tempo decorrido do apply até a VM estar acessível via SSH.

O tempo de provisionamento de uma VM idêntica varia entre provedores de nuvem ao usar Terraform?
Hipótese
O tempo de provisionamento de uma VM com especificação idêntica difere significativamente entre provedores de nuvem, mesmo usando o mesmo código Terraform.
Variáveis
| Independentes (o que varia) | Provedor de nuvem (exemplo: AWS, GCP) |
|---|---|
| Dependentes (o que se mede) | Tempo total de provisionamento (segundos) |
| Controladas (o que fica fixo) | Configuração da VM (CPU, RAM, disco, SO); Versão do Terraform; Script de inicialização; Rede local de origem; Código Terraform |
Ambiente
Necessário: acesso a pelo menos dois provedores de nuvem suportados pelo Terraform, com credenciais válidas. Ferramentas: Terraform (código aberto, MPL 2.0), utilitário de linha de comando para SSH (por exemplo, OpenSSH). O teste deve ser feito a partir de uma máquina Linux dedicada, conectada a uma rede estável, preferencialmente em uma rede de fibra dedicada como a da Upnetix.
Procedimento
- Preparar código Terraform
Escreva um módulo Terraform que crie uma VM com especificação idêntica em ambos os provedores. Inclua um script de inicialização que habilite o SSH e crie um arquivo de flag em /tmp/ready.
- Configurar variáveis
Ajuste variáveis para alternar entre os provedores sem alterar a configuração da VM.
- Iniciar cronômetro
No terminal, inicie a contagem de tempo imediatamente antes de executar 'terraform apply'.
date +%s - Executar Terraform Apply
Aplique o código para iniciar o provisionamento.
terraform apply -auto-approve - Monitorar disponibilidade SSH
A partir da máquina local, tente conectar via SSH à VM criada até obter sucesso e o arquivo /tmp/ready existir.
ssh -o StrictHostKeyChecking=no user@ip 'test -f /tmp/ready' - Parar cronômetro
Registre o timestamp assim que o SSH e o arquivo de flag estiverem acessíveis.
date +%s - Calcular tempo
Subtraia o tempo inicial do tempo final para obter o tempo total de provisionamento.
- Repetir
Repita o experimento para cada provedor, pelo menos 5 vezes, alternando a ordem dos testes para reduzir viés temporal.
Planilha de coleta
| provedor (texto) | data_hora_inicio (timestamp (UTC)) | data_hora_fim (timestamp (UTC)) | tempo_provisionamento_s (segundos) |
|---|---|---|---|
| AWS, 2024-06-01T12:00:00Z, 2024-06-01T12:02:30Z, 150 (EXEMPLO) | |||
Repetições recomendadas: 5. Baixe a planilha vazia em CSV: colunas prontas.
Análise
Calcule média, mediana e desvio padrão do tempo de provisionamento para cada provedor. Compare os valores para identificar diferenças estatisticamente relevantes. Analise se há outliers e repita se necessário.
Critérios de decisão
- A diferença de tempo entre os provedores deve ser maior que 10% para ser considerada relevante (consulte a documentação para limites de cada provedor).
- O teste só é válido se todas as execuções completarem sem erro de infraestrutura ou timeout.
Fontes de erro e mitigação
- Variações de carga dos provedores podem afetar o tempo; mitigue alternando a ordem dos testes e rodando em horários distintos.
- A latência de rede local pode interferir; execute todos os testes a partir da mesma máquina e rede.
- Falhas de script de inicialização podem atrasar a detecção; valide o script antes.
Referências
- fonte oficial · HashiCorp (developer.hashicorp.com)
- fonte oficial · GitHub (repositório oficial do projeto) (github.com)
- Publicado
- 09/09/2026
- Última revisão
- 09/09/2026
- Versão do conteúdo
- 1.0
- Referências
- 2 oficiais
- Revisão técnica
- redação e revisão por IA, URLs conferidas na publicação
- Status
- Atual
