0Pricing
DevOps Bootcamp · Aula

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 external executa scripts que retornam JSON.
  • templatefile renderiza 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

  1. Consultando dados com fontes de dados
  2. Provisionadores de execução local e remota
  3. Recursos nulos e gatilhos
  4. Usando dados externos e modelos
← Voltar para DevOps Bootcamp