Usando dados externos e modelos
Insira valores dinâmicos no Terraform com a fonte de dados external e renderize arquivos de configuração usando a função templatefile.
Usando dados externos e modelos é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de DevOps Bootcamp, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de DevOps Bootcamp inclui 4 aulas no total.
Além das fontes de dados integradas
Você já consulta a AWS com fontes de dados. Às vezes, os dados necessários ficam fora de qualquer provedor, como a saída de um script de shell ou de uma API interna. A fonte de dados external e as funções de template preenchem essa lacuna.
A fonte de dados external
A fonte de dados external executa um programa e lê JSON da saída padrão. Ela é uma alternativa para lógicas que o Terraform não consegue expressar nativamente.
data "external" "git_sha" {
program = ["bash", "./scripts/git_sha.sh"]
}O contrato do programa
O programa externo recebe um objeto JSON na entrada padrão e deve imprimir na saída padrão um objeto JSON simples com valores de texto. Qualquer outra coisa é um erro.
#!/bin/bash
echo '{"sha": "abc123"}'Lendo resultados externos
Acesse os valores retornados por meio do mapa result. Todos os valores são textos; portanto, faça uma conversão se precisar de outro tipo.
resource "aws_instance" "app" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
tags = {
GitSha = data.external.git_sha.result.sha
}
}Quando evitar external
A fonte external é executada em todos os planos e prejudica a reprodutibilidade se o script for não determinístico. Prefira uma fonte de dados real do provedor quando houver uma; reserve external para lacunas genuínas.
Renderizando arquivos com templatefile
A função templatefile lê um modelo, substitui variáveis e retorna um texto. Ela é perfeita para dados de usuário do cloud-init e arquivos de configuração.
resource "aws_instance" "web" {
ami = "ami-0abcd1234"
instance_type = "t3.micro"
user_data = templatefile("init.tftpl", {
hostname = "web-01"
})
}Sintaxe de modelos
Dentro de um arquivo .tftpl, interpole valores usando a sintaxe dólar-chaves. O Terraform substitui as variáveis fornecidas.
#!/bin/bash
hostnamectl set-hostname ${hostname}
echo 'Provisioned by Terraform'Laços em modelos
Os modelos oferecem diretivas para iteração. Uma diretiva for renderiza linhas repetidas, o que é útil para gerar listas de hosts.
%{ for ip in ips ~}
server ${ip}:8080
%{ endfor ~}Modelos embutidos com templatestring
Para trechos curtos, você pode ignorar um arquivo e usar templatestring (ou o format mais antigo) para criar textos dinâmicos diretamente na configuração.
locals {
greeting = templatestring("Hello, $${name}!", { name = "Ops" })
}Combinando os dois
Um padrão comum: uma fonte external obtém um valor dinâmico e, em seguida, templatefile o insere em uma configuração renderizada como dados de usuário.
user_data = templatefile("app.tftpl", {
version = data.external.git_sha.result.sha
})Mantendo as renderizações idempotentes
Como alterações em user_data forçam a substituição da instância, mantenha estáveis as entradas do modelo. Fornecer um valor que muda constantemente, como um registro de data e hora, recriará as instâncias a cada aplicação.
Verificação rápida
Teste sua compreensão da fonte de dados external.
Recapitulação: entradas dinâmicas e modelos
Você ampliou os recursos de dados do Terraform:
- A fonte
externalexecuta scripts que retornam JSON. templatefilerenderiza arquivos de configuração e de dados de usuário.- As diretivas de modelos oferecem suporte a laços e interpolação.
- Mantenha as entradas estáveis para evitar substituições indesejadas.
Perguntas Frequentes
A aula “Usando dados externos e modelos” é grátis?
Sim — o texto completo de “Usando dados externos e modelos” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de DevOps Bootcamp, atualize para CoddyKit PRO. O curso de DevOps Bootcamp inclui 4 aulas no total.
O que vou aprender em “Usando dados externos e modelos”?
Insira valores dinâmicos no Terraform com a fonte de dados external e renderize arquivos de configuração usando a função templatefile. Você pratica DevOps Bootcamp com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar DevOps Bootcamp?
Nenhuma experiência prévia é necessária. DevOps Bootcamp no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Usando dados externos e modelos”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de DevOps Bootcamp?
Sim. Cada aula de DevOps Bootcamp inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Consultando dados com fontes de dados
- Provisionadores de execução local e remota
- Recursos nulos e gatilhos
- Usando dados externos e modelos