Local-Exec Provisioner
The local-exec provisioner invokes a local executable after a resource is created. This invokes a process on the machine running Terraform, not on the resource.
let's use local-exec, modify instance.tf file with below content.
resource "aws_instance" "web" {
ami = data.aws_ami.ubuntu.id
instance_type = var.instance_type
key_name = aws_key_pair.key-tf.key_name
vpc_security_group_ids = ["${aws_security_group.allow_tls.id}"]
tags = {
Name = "first-tf-instance"
}
user_data = file("${path.module}/script.sh")
connection {
type = "ssh"
user = "ubuntu"
private_key = file("${path.module}/id_rsa")
host = self.public_ip
}
provisioner "local-exec" {
command = "echo testing > /tmp/test.txt"
}
provisioner "local-exec" {
working_dir = "/tmp"
command = "echo ${self.public_ip}>myip.txt"
}
provisioner "local-exec" {
interpreter = [
"/usr/bin/python3", "-c"
]
command = "print('HelloWorld')"
}
provisioner "local-exec" {
command = "env>env.txt"
environment = {
envname = "envvalue"
}
}
}