1

使用“terraform import”语法直接从 Terraform 导入资源。但是,没有关于这个问题的terraspace文档。他们的文档只讨论了如何通过将现有的 Terraform 状态文件移动到 S3 并配置后端来将现有的 Terraform 状态文件导入 Terraspace,以便 Terraspace 可以无缝地获取现有的 tfstate 文件。

有谁知道如何将现有基础设施导入 Terraspace?我在 AWS 中有一些现有的基础设施,我想导入并由 Terraspace 管理。

4

2 回答 2

2

您可以在 BUILD_DIR 中使用普通的 Terraform 命令(很可能在 .terraspace-cache///stacks/ 中);IE

TS_ENV=dev terraspace plan discombobulator
cd .terraspace-cache/us-east-1/dev/stacks/discombobulator
terraform state list aws_resource.foo
terraform import aws_resource.foo foo_id
于 2021-08-27T11:58:01.370 回答
0

这是你可以用 terraform 做的事情。对于要从​​基础架构导入的每个资源,您需要将一些参数传递给 terraform CLI。

因此,例如,如果您想将现有的认知池从 AWS 导入到 terraform 状态,您可以使用以下命令:

terraform import aws_cognito_identity_pool.my_resource cognito_resource_id

而“my_resource”将是 .tf 文件中的 terraform 资源块:

resource "aws_cognito_user_pool" "my_resource" {}

cognito_resource_id 将是您的 aws 控制台中显示的池 ID。

如果你去文档你会发现一个“导入”块,但不是所有的资源都可以导入,我建议你去那里检查每个资源以仔细检查它是否可以导入。

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cognito_user_pool#import

我经常使用这个导入命令来逆向工程 stufs,有时直接从 terraform 创建所有内容非常令人困惑,在这种情况下,我尝试在 AWS 控制台上创建东西,然后使用 terraform 导入。

导入后,您可以使用以下命令检查它附带的所有配置:

terraform state show module.cognito.aws_cognito_user_pool_client.my_resource

如果您不使用模块,您可以忽略“模块”并使用其余的。

于 2021-06-15T20:56:00.573 回答