【发布时间】:2022-12-29 04:58:03
【问题描述】:
我有两个资源:
resource "aws_lightsail_instance" "myserver-sig" {
name = "myserver-Sig"
availability_zone = "eu-west-2a"
blueprint_id = "ubuntu_20_04"
bundle_id = "nano_2_0"
key_pair_name = "LightsailDefaultKeyPair"
}
和
resource "aws_lightsail_instance_public_ports" "myserver-sig-public-ports" {
instance_name = aws_lightsail_instance.myserver-sig.name
port_info {
protocol = "tcp"
from_port = 443
to_port = 443
}
port_info {
protocol = "tcp"
from_port = 80
to_port = 80
}
depends_on = [
aws_lightsail_instance.myserver-sig,
]
}
当我第一次运行terraform apply时,两个资源都被创建了。
如果我想用新版本替换 aws_lightsail_instance,那么 aws_lightsail_instance 将重新部署,但 aws_lightsail_instance_public_ports 不会,因为端口没有改变。
然而,作为aws_lightsail_instance 部署的一部分,它将公共端口更改为关闭 443 并打开 22。这意味着重新部署 aws_lightsail_instance 的最终状态是端口 443 已关闭。
如果我再次运行terraform apply,它将正确替换aws_lightsail_instance_public_ports打开端口 443
我如何强制重新创建aws_lightsail_instance_public_ports 资源以便我只需要运行terraform apply 一次?
【问题讨论】:
-
您是唯一运行此代码的人吗?是否实施了状态文件锁定?
-
我是唯一运行此代码的人。是 lightsail 实例本身以打开的默认端口启动。每当您重新创建 lightsail 实例时,您总是需要重新配置端口。这意味着您无法通过锁定状态来阻止实例打开和关闭它自己的端口。
-
这似乎是您应该提交给他们的 AWS Terraform 提供商中的错误。同时运行
apply两次可能是最好的选择。
标签: amazon-web-services terraform amazon-lightsail