Nea*_*eal 7 terraform terraform-provider-azure
我对 Terraform 还是很陌生,尽管我已经浏览了 Hashicorp 网站上提供的所有教学模块。
目前,我正在努力理解如何设置环境变量。我知道如何在 main.tf config ( access_key = "${var.access_key}"
) 中引用变量,并且我知道如何将该访问密钥保存到一个单独的文件并引用它,但是我不明白(并且找不到任何文档/说明) 是如何设置环境变量,因此我不必将访问密钥保存到文件中。
有谁知道如何最好地做到这一点?
yda*_*coR 11
有些提供商允许您直接通过环境变量设置提供商凭据/配置。例如,对于 AWS 提供商,您可以使用AWS 提供商文档中提到的AWS 开发工具包环境变量:
您可以通过环境变量 AWS_ACCESS_KEY_ID 和 AWS_SECRET_ACCESS_KEY 提供凭证,分别代表您的 AWS 访问密钥和 AWS 密钥。
示例用法如下所示:
$ export AWS_ACCESS_KEY_ID="anaccesskey"
$ export AWS_SECRET_ACCESS_KEY="asecretkey"
$ export AWS_DEFAULT_REGION="us-west-2"
$ terraform plan
Run Code Online (Sandbox Code Playgroud)
对于Azure 提供程序,大多数提供程序配置可以通过环境变量设置,而无需在提供程序配置中定义:
$ export ARM_CLIENT_ID="aclientid"
$ export ARM_SUBSCRIPTION_ID="asubscriptionid"
$ export ARM_TENANT_ID="atenantid"
$ terraform plan
Run Code Online (Sandbox Code Playgroud)
在更一般的情况下,Terraform 将自动加载任何以TF_VAR_
.
所以如果你有这样的事情:
variable "foo" {}
Run Code Online (Sandbox Code Playgroud)
您可以通过导出环境变量来设置该值TF_VAR_foo
:
export TF_VAR_foo=bar
Run Code Online (Sandbox Code Playgroud)
Terraform 可以为 AWS 推断以下环境变量
export AWS_ACCESS_KEY_ID="anaccesskey"
export AWS_SECRET_ACCESS_KEY="asecretkey"
Run Code Online (Sandbox Code Playgroud)
参考:https : //www.terraform.io/docs/providers/aws/#environment-variables
但我建议尝试使用AWS Profile
. 您可以将凭据添加到~/.aws/credentials
文件中,例如
[myprofile]
aws_access_key_id = anaccesskey
aws_secret_access_key = asecretkey
Run Code Online (Sandbox Code Playgroud)
然后你可以设置环境变量export AWS_PROFILE=myprofile
。现在,如果您从此 shell 运行 terraform,它应该选择myprofile
.
此外,您可以让您的AWS Provider
代码如下:
provider "aws" {
profile = "myprofile"
region = "${var.region}"
}
Run Code Online (Sandbox Code Playgroud)
根据我的经验,使用 AWS 进行交互profile
比在每个 shell 上设置环境变量更容易且更好。
您可以在此处参考示例https://github.com/pradeepbhadani/tf-examples/blob/master/ex2/provider.tf
希望这可以帮助。
归档时间: |
|
查看次数: |
16285 次 |
最近记录: |