在Terraform中定义AWS提供程序时,
provider "aws" {
access_key = "<AWS_ACCESS_KEY>"
secret_key = "<AWS_SECRET_KEY>"
region = "<AWS_REGION>"
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用已经定义的系统变量
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
Run Code Online (Sandbox Code Playgroud)
有什么办法可以让tf文件读取环境变量?做类似的事情,
provider "aws" {
access_key = env.AWS_ACCESS_KEY_ID
secret_key = env.AWS_SECRET_KEY_ID
region = env.AWS_REGION
}
Run Code Online (Sandbox Code Playgroud)
是的,可以在Terraform中读取环境变量。有一种非常特定的方法必须完成。您将需要使环境变量成为Terraform中的变量。
例如,我想将super_secret_variable传递给terraform。我需要在terraform文件中为其创建一个变量。
variable "super_secret_variable" {
type = "string
}
Run Code Online (Sandbox Code Playgroud)
然后根据约定,我将必须在我的环境变量前加上TF_VAR_作为前缀:
TF_VAR_super_secret_variable
Run Code Online (Sandbox Code Playgroud)
然后terraform将自动检测并使用它。Terraform处理器基于特定顺序的变量,该顺序为-var选项,-var-file选项,环境变量,如果在tf文件中定义,则为默认值。
或者,您可以通过CLI传递环境变量,以像这样在terraform中设置变量。
> terraform apply -var super_secret_variable=$super_secret_variable
Run Code Online (Sandbox Code Playgroud)
这不需要在其前面加上前缀,因此,如果它们不能更改,则可能是最好的做法。
你可以阅读更多这里的文档。
归档时间: |
|
查看次数: |
3613 次 |
最近记录: |