如何在通过Terraform创建时使用默认AWS VPC资源

时间:2015-03-16 03:37:33

标签: amazon-web-services cloud terraform

尝试学习使用Terraform(v 0.3.7)与Amazon Web Services。

当我通过以下方式使用Terraform创建VPC时:

resource "aws_vpc" "test-vpc" {
  cidr_block = "${var.vpc_cidr}"
  enable_dns_hostnames = true
  tags {
    Name = "test-vpc"
  }
}

VPC将有一个主路由表和一个"默认"安全组自动创建(我假设是AWS,而不是Terraform);这些可以通过创建的VPC上的属性来识别:main_route_table_iddefault_security_group_id

在关注this tutorial时,它讨论了创建自己的默认安全组和路由表 - 它没有提到将要创建的默认安全组(即使您创建自己的路由表," main"默认情况下创建的一个将保持坐在那里,与没有子网或任何东西相关联。)

我们不应该使用通过VPC创建的默认资源吗?特别是路由表,因为没有使用" main"会有任何影响。路由表?

如果我应该使用默认资源,我该如何使用Terraform?

我在Terraform文档中看不到有关这些默认资源的任何内容,如果我尝试覆盖它们(例如告诉Terraform创建一个名为default的安全组,我会收到错误)

1 个答案:

答案 0 :(得分:2)

AWS创建这些默认路由表和秒组。如果你不使用它们(我知道我们没有),它们可以被删除。 如果您需要创建默认的sec group,Terraform会抛出错误,因为该组可能已存在,或者可能保留此sec组名称。 您可以创建一个新资源“aws_security_group”(https://terraform.io/docs/providers/aws/r/security_group.html)并在资源上列出依赖关系

  

depends_on = [“aws_instance.instance-name-from-resource”]

对于实例,因此将首先创建sec group,然后使用“security_groups”将sec group分配给实例