0Pricing
DevOps Bootcamp · Aula

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

  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