0Pricing
DevOps Bootcamp · Aula

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-exec executa comandos na máquina em que o Terraform é executado, sendo útil para scripts locais ou notificações.
  • remote-exec executa 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

  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