Provisionadores de execução local e remota
Implemente provisionadores `local-exec` e `remote-exec` para executar comandos, respectivamente, na máquina que executa o Terraform ou nos recursos criados.
Provisionadores de execução local e remota é uma aula grátis de DevOps Bootcamp no CoddyKit. Esta é a aula 2 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.
Conheça os provisionadores do Terraform
E se você precisasse executar um script ou comando depois que o Terraform criasse um recurso? É aí que entram os provisionadores!
Os provisionadores permitem executar ações na máquina local ou em um recurso remoto como parte do ciclo de vida dele. Eles fazem a ligação entre a criação da infraestrutura e a configuração inicial do software.
Pense neles como ganchos que permitem personalizar seus recursos logo depois que são criados.
`local-exec`: executar localmente
O provisionador local-exec executa comandos na máquina em que o Terraform está sendo executado.
Isso é útil para tarefas como:
- Gerar arquivos de configuração localmente.
- Acionar scripts ou ferramentas locais.
- Executar operações de limpeza após a destruição de um recurso.
Ele é ideal para ações que não precisam ocorrer no próprio recurso de nuvem.
Exemplo básico de `local-exec`
Veja como o local-exec cria um arquivo simples na sua máquina local depois que um recurso nulo é criado.
Um null_resource é um espaço reservado que não cria nada na nuvem, mas é útil para acionar provisionadores.
resource "null_resource" "local_file_creator" {
provisioner "local-exec" {
command = "echo 'Local file created by Terraform!' > local_output.txt"
}
triggers = {
always_run = timestamp()
}
}Quando usar `local-exec`
O local-exec é excelente para:
- Notificações pós-implantação: enviar um e-mail ou uma mensagem no Slack.
- Geração de arquivos locais: criar arquivos de inventário para o Ansible ou outras ferramentas.
- Verificações pré-implantação: executar scripts locais de validação.
- Acionamento de CI/CD: iniciar um pipeline após alterações na infraestrutura.
Lembre-se de que ele opera a partir do local em que você executa terraform apply.
`remote-exec`: executar no recurso
Ao contrário do local-exec, o provisionador remote-exec executa comandos no próprio recurso remoto.
Isso é essencial para tarefas de configuração inicial em um servidor recém-criado, como:
- Instalar pacotes de software, como servidor Web ou banco de dados.
- Configurar definições do sistema operacional.
- Implantar o código da aplicação.
É necessária conectividade de rede, como SSH para Linux ou WinRM para Windows, com o recurso de destino.
Conectando-se para usar `remote-exec`
Para que o remote-exec funcione, o Terraform precisa se conectar ao seu recurso.
Os tipos comuns de conexão incluem:
- SSH: para instâncias Linux, exigindo uma chave privada.
- WinRM: para instâncias Windows, exigindo credenciais.
Normalmente, você configurará os detalhes da conexão dentro do bloco provisioner ou os herdará do recurso.
`remote-exec` em uma instância EC2
Veja como usar o remote-exec para instalar o Apache em uma nova instância EC2 da AWS.
Observação: isso exige que uma instância EC2 tenha sido provisionada e esteja acessível via SSH. Para simplificar, vamos supor que já existam um par de chaves e um grupo de segurança.
resource "aws_instance" "web_server" {
ami = "ami-0abcdef1234567890" # Replace with valid AMI ID
instance_type = "t2.micro"
key_name = "my-ssh-key" # Replace with your SSH key name
vpc_security_group_ids = ["sg-0123456789abcdef0"] # Replace with your SG ID
provisioner "remote-exec" {
inline = [
"sudo yum update -y",
"sudo yum install -y httpd",
"sudo systemctl start httpd",
"sudo systemctl enable httpd"
]
connection {
type = "ssh"
user = "ec2-user"
private_key = file("~/.ssh/my-ssh-key.pem")
host = self.public_ip
}
}
}Quando usar `remote-exec`
O remote-exec é ideal para:
- Inicialização de servidores: instalar servidores Web, bancos de dados ou o Docker.
- Implantação de aplicações: copiar o código da aplicação e configurá-lo.
- Gerenciamento de configurações: executar diretamente playbooks do Ansible ou receitas do Chef.
- Validação após a criação: verificar se os serviços estão em execução na nova instância.
Ele é a opção principal para configurar o estado inicial de um servidor.
Provisioners na destruição
Os provisioners também podem ser executados quando um recurso está sendo destruído. Isso é útil para tarefas de limpeza.
Você pode especificar when = destroy dentro de um bloco de provisioner. Por exemplo, para remover uma instância de um balanceador de carga antes que ela seja encerrada.
O comportamento de on_failure também pode ser configurado, determinando o que acontece se um comando do provisioner falhar. Por padrão, é gerado um erro.
Questionário sobre provisioners
Qual provisioner você usaria para instalar um servidor web, como o Nginx, em uma instância de máquina virtual recém-criada?
Provisioners: local versus remoto
Você explorou os provisioners do Terraform, ferramentas poderosas para executar comandos durante o ciclo de vida dos recursos.
local-execexecuta comandos na máquina em que o Terraform é executado, sendo útil para scripts locais ou notificações.remote-execexecuta comandos diretamente no recurso provisionado, sendo ideal para preparar servidores com software ou configurações.
Os provisioners ajudam a preencher a lacuna entre a implantação da infraestrutura e a configuração inicial da aplicação. Em seguida, você conhecerá técnicas avançadas de gerenciamento de estado!
Perguntas Frequentes
A aula “Provisionadores de execução local e remota” é grátis?
Sim — o texto completo de “Provisionadores de execução local e remota” é 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 “Provisionadores de execução local e remota”?
Implemente provisionadores `local-exec` e `remote-exec` para executar comandos, respectivamente, na máquina que executa o Terraform ou nos recursos criados. 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 2 de 4.
Quanto tempo leva a aula “Provisionadores de execução local e remota”?
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