Provisioners — execute actions on resources during create/delete.
1resource "aws_instance" "web" {2 ami = "ami-0c55b159cbfafe1f0"3 instance_type = "t2.micro"4 key_name = aws_key_pair.deployer.key_name56 # File provisioner7 provisioner "file" {8 source = "scripts/deploy.sh"9 destination = "/tmp/deploy.sh"1011 connection {12 type = "ssh"13 host = self.public_ip14 user = "ubuntu"15 private_key = file("~/.ssh/id_rsa")16 }17 }1819 # Remote-exec provisioner20 provisioner "remote-exec" {21 inline = [22 "chmod +x /tmp/deploy.sh",23 "sudo /tmp/deploy.sh",24 ]25 }2627 # Local-exec provisioner28 provisioner "local-exec" {29 command = "ansible-playbook -i ${self.public_ip}, provision.yml"30 environment = {31 ANSIBLE_HOST_KEY_CHECKING = "False"32 }33 }3435 # Destroy provisioner36 provisioner "local-exec" {37 when = destroy38 command = "echo 'Instance ${self.id} destroyed' >> destroy.log"39 }40}
Types:
Best Practices: