Consultando dados com fontes de dados
Utilize fontes de dados para obter informações sobre uma infraestrutura existente ou serviços externos, permitindo configurações mais dinâmicas e adaptáveis.
Consultando dados com fontes de dados é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 1 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.
O que são fontes de dados?
No Terraform, frequentemente precisamos fazer referência a uma infraestrutura existente ou a dados externos que não são gerenciados pela nossa configuração atual.
É aí que entram as fontes de dados! Elas permitem que a configuração do Terraform busque informações sobre recursos que já foram provisionados ou sobre serviços externos.
Fontes de dados versus recursos
É importante distinguir as fontes de dados dos recursos.
- Recursos definem a infraestrutura que o Terraform criará, atualizará ou excluirá.
- Fontes de dados apenas buscam informações sobre a infraestrutura ou os dados existentes. Elas não criam nem modificam nada.
Pense nelas como consultas somente leitura para a sua infraestrutura.
Casos de uso práticos
As fontes de dados são extremamente úteis para:
- Encontrar o ID de uma Virtual Private Cloud (VPC) existente.
- Obter a Amazon Machine Image (AMI) mais recente para uma instância EC2.
- Recuperar segredos de um serviço de gerenciamento de segredos.
- Consultar registros DNS ou configurações de rede.
Elas tornam suas configurações mais dinâmicas e menos dependentes de valores codificados diretamente.
Definindo uma fonte de dados
Um bloco de fonte de dados é semelhante a um bloco de recurso. Ele começa com a palavra-chave data, seguida pelo provedor e pelo tipo e, depois, por um nome local.
data "aws_vpc" "selected" {
filter {
name = "tag:Name"
values = ["my-existing-vpc"]
}
}Usando os dados obtidos
Depois que uma fonte de dados busca as informações, seus atributos ficam disponíveis para outras partes da configuração. Você pode fazer referência a eles usando a sintaxe: data.<TYPE>.<NAME>.<ATTRIBUTE>.
Por exemplo, para obter o ID da VPC selecionada:
output "vpc_id" {
value = data.aws_vpc.selected.id
}Obtendo a AMI mais recente
Uma tarefa comum é encontrar a Amazon Machine Image (AMI) mais recente para uma instância EC2. Isso evita codificar diretamente os IDs das AMIs, tornando sua configuração mais robusta.
Veja como obter a AMI mais recente do Amazon Linux 2:
provider "aws" {
region = "us-east-1"
}
data "aws_ami" "amazon_linux_2" {
most_recent = true
owners = ["amazon"]
filter {
name = "name"
values = ["amzn2-ami-hvm-*-x86_64-gp2"]
}
filter {
name = "virtualization-type"
values = ["hvm"]
}
}
output "latest_ami_id" {
value = data.aws_ami.amazon_linux_2.id
}Documento de política dinâmico do S3
As fontes de dados não servem apenas para recursos de nuvem. A fonte de dados aws_iam_policy_document ajuda a construir políticas complexas do IAM de forma estruturada.
Ela não cria uma política, mas gera o documento JSON que você poderá aplicar a um recurso, como um bucket S3.
provider "aws" {
region = "us-east-1"
}
data "aws_iam_policy_document" "s3_read_only_policy" {
statement {
principals {
type = "AWS"
identifiers = ["arn:aws:iam::123456789012:user/example-user"]
}
actions = [
"s3:GetObject",
"s3:ListBucket"
]
resources = [
"arn:aws:s3:::my-example-bucket",
"arn:aws:s3:::my-example-bucket/*"
]
}
}
output "policy_json" {
value = data.aws_iam_policy_document.s3_read_only_policy.json
}Refinando sua pesquisa
Muitas fontes de dados aceitam blocos filter. Eles permitem especificar critérios para restringir os resultados e garantir que você obtenha o recurso ou os dados corretos.
Os filtros normalmente aceitam um name, que é o atributo usado para filtrar, e values, uma lista de valores aceitáveis para esse atributo.
data "aws_instance" "web" {
instance_state_names = ["running"]
filter {
name = "tag:Environment"
values = ["production"]
}
filter {
name = "instance-type"
values = ["t2.micro", "t3.micro"]
}
}Práticas recomendadas para fontes de dados
Para manter suas configurações organizadas e eficientes:
- Seja específico: use filtros para garantir que você obtenha exatamente os dados necessários, evitando ambiguidades.
- Idempotência: as fontes de dados são inerentemente idempotentes, o que significa que executá-las várias vezes produz o mesmo resultado.
- Minimize as chamadas: busque dados apenas quando necessário para acelerar as operações de
terraform plan. - Combine com saídas: use saídas para disponibilizar dados obtidos de que outras configurações ou usuários possam precisar.
Questionário sobre fontes de dados
Quais das afirmações a seguir são TRUE sobre as fontes de dados do Terraform?
Resumo: consultando dados
Você aprendeu como as fontes de dados do Terraform permitem que suas configurações consultem e obtenham informações sobre a infraestrutura existente ou serviços externos.
Esse recurso poderoso permite criar configurações dinâmicas, flexíveis e robustas, evitando valores codificados diretamente e adaptando-se ao estado atual do seu ambiente. Lembre-se: as fontes de dados apenas leem; elas nunca criam nem modificam nada!
Perguntas Frequentes
A aula “Consultando dados com fontes de dados” é grátis?
Sim — o texto completo de “Consultando dados com fontes de dados” é 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 “Consultando dados com fontes de dados”?
Utilize fontes de dados para obter informações sobre uma infraestrutura existente ou serviços externos, permitindo configurações mais dinâmicas e adaptáveis. 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 1 de 4.
Quanto tempo leva a aula “Consultando dados com fontes de dados”?
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