加密环境变量并在地形代码中调用它



如何在Terraform中将变量的值设为机密或将其作为环境变量访问?

例如,我正在提供数据源资源,例如

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
# ...
}

在这里,我有一个参数,比如:master密码=var.rds_master_password

它的值作为明文存储在我的"terraform.tfwars"中,例如。rds_master_password=";myDBpwsddnn123";

我的问题是,如果我将编码的值存储在"terraform.tfwars"中,有什么方法可以在资源文件中对其进行解码吗?

我正在使用Bitbucket作为我的回购。我正在使用AWS Secrets Manager作为所有密码的集中存储库。然后我的问题是,我如何在Terraform资源中获得环境变量,任何指针?

根据您可以在此处找到的地形文档:https://www.terraform.io/docs/commands/environment-variables.html

将操作系统环境变量传递到地形的最简单方法是:

首先,您需要像这样在终端中定义env变量,您必须在变量名中添加前缀TF_VAR_

export TF_VAR_database_secret=<my_secret>

然后,在您的terraform代码中,您可以创建与OS env变量同名的terraform变量,但不带TF_VAR_前缀。

variable "database_secret" {
type = string
}

然后,您可以像以前一样使用变量,例如var.database_secret

您可以阅读本关于处理秘密的全面指南。

像@servin.julien一样,我个人觉得TF_VAR_很容易使用。

最新更新