使用“terraform import”语法直接从 Terraform 导入资源。但是,没有关于这个问题的terraspace文档。他们的文档只讨论了如何通过将现有的 Terraform 状态文件移动到 S3 并配置后端来将现有的 Terraform 状态文件导入 Terraspace,以便 Terraspace 可以无缝地获取现有的 tfstate 文件。
有谁知道如何将现有基础设施导入 Terraspace?我在 AWS 中有一些现有的基础设施,我想导入并由 Terraspace 管理。
使用“terraform import”语法直接从 Terraform 导入资源。但是,没有关于这个问题的terraspace文档。他们的文档只讨论了如何通过将现有的 Terraform 状态文件移动到 S3 并配置后端来将现有的 Terraform 状态文件导入 Terraspace,以便 Terraspace 可以无缝地获取现有的 tfstate 文件。
有谁知道如何将现有基础设施导入 Terraspace?我在 AWS 中有一些现有的基础设施,我想导入并由 Terraspace 管理。
您可以在 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
这是你可以用 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
如果您不使用模块,您可以忽略“模块”并使用其余的。