微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决加密环境变量并在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 举报,一经查实,本站将立刻删除。