ani*_*ish 0 amazon-web-services terraform terraform-provider-aws
您好,我正在尝试使用 terraform 模块导入现有资源 terraform-aws-modules/vpc/aws
这是我的模块定义
\nmodule "vpc" {\n source = "terraform-aws-modules/vpc/aws"\n\n name = "eks-dev"\n cidr = "10.0.0.0/16"\n\n azs = ["us-east-1b", "us-east-1a"]\n public_subnets = ["10.0.2.0/24", "10.0.1.0/24"]\n\n enable_nat_gateway = false\n enable_vpn_gateway = false\n\n tags = {\n Terraform = "true"\n Environment = "dev"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n当我执行计划时
\n # module.vpc.module.vpc.aws_vpc.this[0] will be created\n + resource "aws_vpc" "this" {\n + arn = (known after apply)\n + cidr_block = "10.0.0.0/16"\n + default_network_acl_id = (known after apply)\n + default_route_table_id = (known after apply)\n + default_security_group_id = (known after apply)\n + dhcp_options_id = (known after apply)\n + enable_dns_hostnames = true\n + enable_dns_support = true\n + enable_network_address_usage_metrics = (known after apply)\n + id = (known after apply)\n + instance_tenancy = "default"\n + ipv6_association_id = (known after apply)\n + ipv6_cidr_block = (known after apply)\n + ipv6_cidr_block_network_border_group = (known after apply)\n + main_route_table_id = (known after apply)\n + owner_id = (known after apply)\n + tags = {\n + "Environment" = "dev"\n + "Name" = "eks-dev"\n + "Terraform" = "true"\n }\n + tags_all = {\n + "Environment" = "dev"\n + "Name" = "eks-dev"\n + "Terraform" = "true"\n }\n }\n\nRun Code Online (Sandbox Code Playgroud)\n这向我展示了有关如何导入的足够信息,但是当我尝试导入这些内容时
\n\xe2\x9d\xaf terraform import module.vpc.aws_vpc.this vpc-0d8bf51e96d3bc819\nError: resource address "module.vpc.aws_vpc.this" does not exist in the configuration.\n\nBefore importing this resource, please create its configuration in module.vpc. For example:\n\nresource "aws_vpc" "this" {\n # (resource arguments)\n}\n\nRun Code Online (Sandbox Code Playgroud)\n公有子网相同
\n\xe2\x9d\xaf terraform import "module.vpc.aws_subnet.public" "subnet-0d958d42eec08c493"\n\nError: resource address "module.vpc.aws_subnet.public" does not exist in the configuration.\n\nBefore importing this resource, please create its configuration in module.vpc. For example:\n\nresource "aws_subnet" "public" {\n # (resource arguments)\n}\n\nRun Code Online (Sandbox Code Playgroud)\n如何解决这个语法是否正确?
\n基于Marko Ecommen的这解决了问题
\n\xe2\x9d\xaf terraform import 'module.vpc.module.vpc.aws_vpc.this[0]' vpc-0d8bf51e96d3bc819\nmodule.vpc.module.vpc.aws_vpc.this[0]: Importing from ID "vpc-0d8bf51e96d3bc819"...\nmodule.vpc.module.vpc.aws_vpc.this[0]: Import prepared!\n Prepared aws_vpc for import\nmodule.vpc.module.vpc.aws_vpc.this[0]: Refreshing state... [id=vpc-0d8bf51e96d3bc819]\n\nImport successful!\n\nThe resources that were imported are shown above. These resources are now in\nyour Terraform state and will henceforth be managed by Terraform.\n\nRun Code Online (Sandbox Code Playgroud)\n
由于您似乎正在使用嵌套模块,即模块内的模块,因此仅使用问题中的命令是不够的:
terraform import module.vpc.aws_vpc.this vpc-0d8bf51e96d3bc819
Run Code Online (Sandbox Code Playgroud)
从计划输出可以看出,该模块实际上会尝试创建:
# module.vpc.module.vpc.aws_vpc.this[0] will be created
Run Code Online (Sandbox Code Playgroud)
这也意味着要使导入工作,您必须使用以下命令:
# module.vpc.module.vpc.aws_vpc.this[0] will be created
Run Code Online (Sandbox Code Playgroud)
相同的逻辑应该应用于属于嵌套模块的所有资源。
| 归档时间: |
|
| 查看次数: |
723 次 |
| 最近记录: |