Amazon web services 加密环境变量并在terraform代码中调用它
我如何将变量的值作为机密,或者在Terraform中作为环境变量访问它们 例如,我正在设置数据源资源,例如Amazon web services 加密环境变量并在terraform代码中调用它,amazon-web-services,environment-variables,terraform,terraform-provider-aws,Amazon Web Services,Environment Variables,Terraform,Terraform Provider Aws,我如何将变量的值作为机密,或者在Terraform中作为环境变量访问它们 例如,我正在设置数据源资源,例如 resource "aws_rds_cluster" "aurora" { cluster_identifier = var.db_cluster_identifier database_name = var.rds_db_name master_username
resource "aws_rds_cluster" "aurora" {
cluster_identifier = var.db_cluster_identifier
database_name = var.rds_db_name
master_username = var.rds_master_username
master_password = var.rds_master_password
backup_retention_period = var.backup_retention_period
preferred_backup_window = var.preferred_backup_window
preferred_maintenance_window = var.preferred_maintenance_window
db_subnet_group_name = aws_db_subnet_group.aurora.name
#final_snapshot_identifier = var.db_snapshot_cluster_identifier
vpc_security_group_ids = [aws_security_group.allow-aurora-db.id]
skip_final_snapshot = true
# ...
}
在这里,我有一个如下参数:
主密码=var.rds\u主密码
它的值以明文形式存储在我的“terraform.tfvars”中,例如。
rds_master_password=“myDBpwsddnn123”
我的问题是,如果我将编码值存储在“terraform.tfvars”中,是否有任何方法可以在我的资源文件中对其进行解码
我使用Bitbucket作为我的回购协议。我使用AWS Secrets Manager作为所有密码的集中存储库,然后我的问题是如何在我的Terraform资源中获取环境变量、任何指针?根据您可以在此处找到的Terraform文档: 将OS环境变量传递到terraform的最简单方法是: 首先,您需要像这样在终端中定义env变量,您必须在变量名中添加前缀
TF\u VAR
export-TF\u-VAR\u-database\u-secret=
然后在terraform代码中,您可以创建与OS env变量同名的terraform变量,而不使用TF\u VAR\u
前缀
variable "database_secret" {
type = string
}
然后您可以像以前一样使用变量,例如
var.database\u secret
您的问题可能很难理解。如果在terraform.tfvars中存储了一个值,则在资源文件中引用该值。如果我理解正确的话,您不想硬编码terraform.tfvars中的值,而是希望通过环境变量传递它。