如何在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_
很容易使用。