我正在使用源terraform-aws-modules/rds/aws
的terraform模块来创建一个基于postgresql的terraform实例。作为这个项目的一部分,我还希望在postgresql数据库中创建具有特定权限的角色。我知道有一个postresql提供程序,我可以包括如下:
provider "postgresql" {
host = "postgres_server_ip"
port = 5432
database = "postgres"
username = "postgres_user"
password = "postgres_password"
sslmode = "require"
connect_timeout = 15
}
然而,对于主机,我需要以某种方式访问刚刚创建的RDS实例的服务器IP -有人知道如何在使用RDS模块与我上面提到的源时做到这一点吗?
您不需要postgres IP, DNS Name也可以。
所讨论的模块有一个名为。db_instance_endpoint
module "rds" {
source = "terraform-aws-modules/rds/aws"
version = "5.2.3"
# Your variables
}
#You can use that variable using
locals {
the_result = module.rds.db_instance_endpoint
}
你要面对的问题是,一个提供者块不能来自动态值,如资源或模块。它们可以来自于输入变量。因此,要实现这一点,请将postgres代码放在它自己的terraform模块中。
并将主机作为允许的变量传入。