Terraform 地形云:导入现有资源
我正在使用terraform cloud来管理AWS中配置的基础设施的状态 我正在尝试使用Terraform 地形云:导入现有资源,terraform,terraform-provider-aws,terraform-cloud,Terraform,Terraform Provider Aws,Terraform Cloud,我正在使用terraform cloud来管理AWS中配置的基础设施的状态 我正在尝试使用terraform import导入当前未由terraform管理的现有资源 我知道terraform import是一个仅限本地的命令。我已设置工作区参考,如下所示: terraform { required_version = "~> 0.12.0" backend "remote" { hostname = "app.terraform.io" organization
terraform import
导入当前未由terraform管理的现有资源
我知道terraform import
是一个仅限本地的命令。我已设置工作区参考,如下所示:
terraform {
required_version = "~> 0.12.0"
backend "remote" {
hostname = "app.terraform.io"
organization = "foo"
workspaces {
name = "bar"
}
}
}
AWS凭据在远程云工作区中配置,但terraform似乎没有引用工作区中的AWS凭据,而是尝试使用指向不同AWS帐户的本地凭据。我希望Terraform在运行Terraform import
时通过引用工作区中的变量来使用凭据
当我注释掉本地配置的凭据时,会出现以下错误:
Error: No valid credential sources found for AWS Provider.
我希望terraform使用工作区中配置的凭据
请注意,当我直接从云控制台运行plan/apply命令时,terraform能够正确使用凭据 使用数据提供程序,例如:-
data "terraform_remote_state" "test" {
backend = "s3"
config = {
bucket = "BUCKET_NAME"
key = "BUCKET_KEY WHERE YOUR TERRAFORM.TFSTATE FILE IS PRESENT"
region = "CLOUD REGION"
}
}
现在,您可以调用已配置的资源
例如:-
要获取VPC ID,请执行以下操作:-
data.terraform_remote_state.test.*.outputs.vpc_id
只需将要引用的云资源属性导出为输出,并存储在terraform.tfstate文件中,
计划
和应用
在terraform云中运行,而导入
在本地运行。因此,import命令将无法访问Terraform Cloud中设置的工作区凭据。从文档中:
为了将Terraform导入与远程状态后端一起使用,您可能需要设置与远程工作区变量等效的本地变量
因此,不要在本地运行以下操作(假设您提供了Terraform Cloud的访问密钥):
terraform导入aws_instance.myserver i-12345
例如,我们应该运行:
export AWS\u ACCESS\u KEY\u ID=abc
导出AWS\u密码\u访问\u密钥=1234
terraform导入aws_instance.myserver i-12345
其中,AWS\u ACCESS\u KEY\u ID
和AWS\u SECRET\u ACCESS\u KEY
与Terraform Cloud中配置的权限相同
AWS SSO用户注意事项
如果您使用的是AWS SSO和CLI v2,则根据添加了terraform能够使用SSO凭据缓存的功能。使用SSO配置文件导入的步骤包括:
- 确保您已执行了登录,并与aws sso登录等进行了活动会话--配置我的配置文件
- 将配置文件名称作为环境变量提供给terraform,例如,
AWS\u profile=my profile terraform import AWS\u instance.myserver i-12345
terraform import
似乎没有引用云工作区变量,而是使用本地变量作为凭据。