首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Terraform无法修改DNS设置(最近创建的VPC对等连接),因为它尚未激活。

Terraform无法修改DNS设置(最近创建的VPC对等连接),因为它尚未激活。
EN

DevOps用户
提问于 2020-04-30 22:10:56
回答 1查看 355关注 0票数 3

我有以下配置文件:

environment/main.tf

代码语言:javascript
复制
resource "aws_vpc_peering_connection" "sb_vpc_peering" {
  vpc_id      = var.vpc_id
  peer_vpc_id = var.peer_vpc_id
  peer_region = var.peer_region

  #Other vars
}

resource "aws_vpc_peering_connection_accepter" "sb_vpc_peering_accepter" {
  vpc_peering_connection_id = aws_vpc_peering_connection.sb_vpc_peering.id
  auto_accept               = true
}

resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options" {
  vpc_peering_connection_id = aws_vpc_peering_connection.sb_vpc_peering.id

  accepter {
    allow_remote_vpc_dns_resolution = var.accepter_dns_resolution
  }

  requester {
    allow_remote_vpc_dns_resolution = var.requester_dns_resolution
  }
}

这里的问题是resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options"中的最后一个块:

代码语言:javascript
复制
  accepter {
    allow_remote_vpc_dns_resolution = var.accepter_dns_resolution
  }

  requester {
    allow_remote_vpc_dns_resolution = var.requester_dns_resolution
  }

这将导致以下错误:

代码语言:javascript
复制
Error: error modifying VPC Peering Connection (pcx-084fe8578b2935b6a) Options: OperationNotPermitted: Peering pcx-084fe8578b2935b6a is not active. Peering options can be added only to active peerings.
    status code: 400, request id: 2aa0a163-e9db-4c55-aee5-4f7ffbbf8b9f

  on ../../../aws/vpc/peering-connection-accepter/main.tf line 15, in resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options":
  15: resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options" {

如果我给它几分钟时间,然后再次运行terraform apply,它就会工作,因为VPC已经有了激活的时间。

最初,我在aws_vpc_peering_connection资源本身中使用了DNS解析位,但是同样的错误发生了,所以我像这样将它们分开,但这并没有解决问题。

在应用这些选项之前,我是否需要某种程度的睡眠?

EN

回答 1

DevOps用户

回答已采纳

发布于 2020-05-01 13:17:57

弄明白了!问题是,在aws_vpc_peering_connection_options中设置的DNS设置在对等连接激活(已批准)之前无法设置。它只依赖于现有的aws_vpc_peering_connection,因此在aws_vpc_peering_connection_accepter之前或同时运行。

aws_vpc_peering_connection_options中,这只是通过从aws_vpc_peering_connection_accepter而不是aws_vpc_peering_connection获取vpc_peering_connection_id来修正的,因此terraform依赖树将自动以正确的顺序进行依赖工作。

在此之前:

代码语言:javascript
复制
resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options" {
  vpc_peering_connection_id = aws_vpc_peering_connection.sb_vpc_peering.id

  accepter {
    allow_remote_vpc_dns_resolution = var.accepter_dns_resolution
  }

  requester {
    allow_remote_vpc_dns_resolution = var.requester_dns_resolution
  }
}

之后:

代码语言:javascript
复制
resource "aws_vpc_peering_connection_options" "sb_vpc_peering_options" {
  vpc_peering_connection_id = aws_vpc_peering_connection_accepter.sb_vpc_peering_accepter.id

  accepter {
    allow_remote_vpc_dns_resolution = var.accepter_dns_resolution
  }

  requester {
    allow_remote_vpc_dns_resolution = var.requester_dns_resolution
  }
}
票数 4
EN
页面原文内容由DevOps提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://devops.stackexchange.com/questions/11476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档