如何解决加密环境变量并在terraform代码中调用它
如何在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_password = var.rds_master_password
我的值是作为纯文本存储在“ terraform.tfvars”中的,例如 rds_master_password =“ myDBpwsddnn123”
我的问题是,是否将编码后的值存储在“ terraform.tfvars”中,有什么办法可以在资源文件中对其进行解码?
我正在使用Bitbucket作为我的仓库。我将AWS Secrets Manager用作所有密码的集中存储库,然后我的问题是如何在terraform资源中获取环境变量以及任何指针?
解决方法
根据您可以在此处找到的terraform文档:https://www.terraform.io/docs/commands/environment-variables.html
将OS环境变量传递到terraform的最简单方法是:
首先,您需要像这样在终端中定义env变量,必须在变量名称中添加前缀TF_VAR_
。
export TF_VAR_database_secret=<my_secret>
然后在terraform代码中,您可以创建与OS env变量名称相同但不带TF_VAR_
前缀的terraform变量。
variable "database_secret" {
type = string
}
然后,您可以像以前使用变量一样使用var.database_secret
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。