I want to create a Jenkins job which runs a terrascript file for creating an EC2 instance. This job also runs an ansible-playbook for installing Tomcat on the new instance created. Here is a part of the main.tf file
resource "aws_instance" "my_vm" {
ami = var.ami //Linux AMI
instance_type = var.instance_type
key_name = "DevOpsKey_Licenta"
subnet_id = aws_subnet.public_subnet.id
vpc_security_group_ids = [aws_security_group.terra_tomcat_sg.id]
associate_public_ip_address = true
tags = {
Name = var.name_tag
}
provisioner "local-exec" {
command = "echo ${aws_instance.my_vm.public_ip} >> /opt/infrastructure/inventory"
}
}
and here is inventory file
[tomcat]
When the local-exec command runs it should write the ip adress in inventory file
When i run the Jenkins job i get this error
[0m[1maws_instance.my_vm (local-exec):[0m [0mExecuting: ["/bin/sh" "-c" "sudo echo
3.81.123.86 > /opt/infrastructure-pipeline-terraform/inventory"]
[0m[1maws_instance.my_vm (local-exec):[0m [0m/bin/sh: line 1: /opt/infrastructure-
pipeline-terraform/inventory: Permission denied
[31m╷[0m[0m
[31m│[0m [0m[1m[31mError: [0m[0m[1mlocal-exec provisioner error[0m
[31m│[0m [0m
[31m│[0m [0m[0m with aws_instance.my_vm,
[31m│[0m [0m on main.tf line 158, in resource "aws_instance" "my_vm":
[31m│[0m [0m 158: provisioner "local-exec" [4m{[0m[0m
[31m│[0m [0m
[31m│[0m [0mError running command 'sudo echo 3.81.123.86 >
[31m│[0m [0m/opt/infrastructure-pipeline-terraform/inventory': exit status 1.
Output:
[31m│[0m [0m/bin/sh: line 1: /opt/infrastructure-pipeline-terraform/inventory:
[31m│[0m [0mPermission denied
[31m│[0m [0m
[31m╵[0m[0m
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE