Recursos nulos e gatilhos
Descubra o `null_resource` para executar comandos arbitrários que não correspondem a um recurso real de nuvem e use gatilhos para controlar quando os provisionadores são executados.
Recursos nulos e gatilhos é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 3 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 é null_resource?
O null_resource do Terraform é um tipo especial de recurso que não cria nem gerencia diretamente nenhum objeto de infraestrutura no seu provedor de nuvem.
Em vez disso, ele atua como um espaço reservado para executar comandos ou scripts arbitrários, sendo frequentemente usado em tarefas que ficam fora do escopo do provisionamento típico de recursos.
Por que usar null_resource?
Você pode se perguntar por que precisaria de um recurso “nulo”. Ele é extremamente útil para:
- Executar scripts locais: executar comandos na máquina em que o Terraform é executado, por exemplo, para preparar arquivos de configuração.
- Realizar ações após a implantação: executar tarefas de configuração ou limpeza depois que os recursos reais forem provisionados.
- Interagir com APIs externas: quando não existe um provedor dedicado do Terraform para um serviço específico.
- Implementar lógica personalizada: orquestrar etapas personalizadas que não estão vinculadas a um recurso de nuvem específico.
Estrutura básica de null_resource
Um bloco null_resource se parece com qualquer outro recurso do Terraform. Sozinho, sem provisioners ou triggers, ele simplesmente cria um objeto “nulo” no estado do Terraform e não faz mais nada.
Normalmente, ele é combinado com provisioners para executar comandos e com triggers para controlar quando esses comandos são executados.
Exemplo simples de null_resource
Aqui está um null_resource mínimo. Se você executar terraform apply, ele será criado no estado, mas nenhuma ação externa ocorrerá.
Ele é apenas um espaço reservado, pronto para ser aprimorado com ações.
resource "null_resource" "my_placeholder" {
# This resource exists in state but performs no action.
# It's ready to attach provisioners or triggers.
}Provisioners com null_resource
O verdadeiro poder do null_resource aparece quando você o combina com provisioners.
Os provisioners permitem executar scripts ou comandos na máquina que executa o Terraform (local-exec) ou no próprio recurso remoto (remote-exec, embora seja menos comum com null_resource).
Isso permite que o null_resource se torne um executor de ações.
Introdução aos triggers
triggers são um mapa de pares arbitrários de chave e valor definidos dentro de um bloco null_resource.
A finalidade deles é informar ao Terraform: “Se algum valor deste mapa mudar, este null_resource e seus provisioners precisarão ser executados novamente”.
Isso é essencial para fazer o null_resource reagir às mudanças na sua infraestrutura.
Como os triggers funcionam
Quando um valor no mapa de triggers muda, o Terraform detecta uma modificação no null_resource.
Durante um terraform apply, o Terraform irá:
- Destruir o
null_resourceexistente, se ele existir. - Criar novamente o
null_resource. - Executar novamente todos os provisioners associados.
Esse mecanismo garante que suas ações personalizadas sejam executadas somente quando as dependências relevantes mudarem.
Exemplo: triggers e local-exec
Aqui, usamos um null_resource para simular a atualização de um arquivo de configuração com base em uma variável simples. O provisioner local-exec executa um comando, e os triggers garantem que ele seja executado novamente se var.app_version mudar.
variable "app_version" {
description = "The version of the application."
type = string
default = "1.0.0"
}
resource "null_resource" "update_config_file" {
triggers = {
version_change = var.app_version
}
provisioner "local-exec" {
command = "echo 'Config updated for version: ${self.triggers.version_change}' > app_config.txt"
}
}Práticas recomendadas e alternativas
Embora seja poderoso, use o null_resource com critério:
- Prefira provedores: se existir um provedor ou recurso dedicado do Terraform para uma tarefa, use-o.
- Mantenha a idempotência: garanta que os scripts executados pelos provisioners possam ser executados novamente várias vezes com segurança e sem efeitos colaterais.
- Evite gerenciar o estado: não tente gerenciar estado externo com o
null_resource; essa é a finalidade dos backends de estado remoto. - Considere a fonte de dados
external: para lógica externa complexa que retorna dados estruturados, a fonte de dadosexternalpode ser uma alternativa mais simples.
Verificação rápida: recursos nulos
Você aprendeu sobre null_resource e triggers. Vamos testar sua compreensão.
Recapitulação: nulo e triggers
Nesta lição, você descobriu a versatilidade do null_resource do Terraform, uma ferramenta poderosa para executar comandos e scripts personalizados que não correspondem a recursos concretos de nuvem.
Você também aprendeu sobre triggers, um mecanismo dentro de null_resource que permite definir dependências e garantir que os provisioners sejam executados novamente sempre que essas dependências mudarem. Isso possibilita uma automação personalizada, dinâmica e reativa na sua infraestrutura como código.
Perguntas Frequentes
A aula “Recursos nulos e gatilhos” é grátis?
Sim — o texto completo de “Recursos nulos e gatilhos” é 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 “Recursos nulos e gatilhos”?
Descubra o `null_resource` para executar comandos arbitrários que não correspondem a um recurso real de nuvem e use gatilhos para controlar quando os provisionadores são executados. 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 3 de 4.
Quanto tempo leva a aula “Recursos nulos e gatilhos”?
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