terraform

I want to identify the public ip of the terraform execution environment and add it to the security group


I want to identify the public IP of the terraform execution environment and add it to aws security group inbound to prevent access from other environments.

Currently, I am manually editing the values in the variables.tf file.

variables.tf

variable public_ip_address {
  default     = "xx"
}

I would like to execute the "curl ifconfig.co" command on the local host and automatically set the security group based on the result

Is there a way to do such things?

I could do it by putting the result of local-exec in some variable but I don't know how to do it.


Solution

  • There's an easier way to do that without any scripts. The trick is having a website such as icanhazip.com which retrieve your IP, so set it in your terraform file as data:

    data "http" "myip" {
      url = "https://ipv4.icanhazip.com"
    }
    

    And whenever you want to place your IP just use data.http.myip.body, example:

    ingress {
      from_port = 5432
      to_port = 5432
      protocol = "tcp"
      cidr_blocks = ["${chomp(data.http.myip.response_body)}/32"]
    }