如何使用Terraform为AWS Lightsail实例设置防火墙规则



我创建了一个简单的Terraform配方来设置AWS Lightsail实例,并在其中安装Open Distro for Elasticsearch。

在这几天里,一切都很顺利,我可以访问并玩5601端口的Kibana实例。但几天后,它无法访问,我发现我需要设置防火墙规则,让流量访问5601端口。

我想在Terraform配方中设置它,就像我为GCP所做的那样:

resource "google_compute_firewall" "kibana" {
name    = "kibana-${random_id.instance_id.hex}"
network = "default"
allow {
protocol = "tcp"
ports    = ["5601"]
}
source_ranges = ["0.0.0.0/0"]
}

但我还没有找到一个明确的方法。aws_security_group是我需要的,还是不是从Terraform设置它的方法?

谢谢!

到目前为止,最新的地形提供程序aws2.50.0不支持我们为lightsail实例创建防火墙规则。

但我们可以通过使用内置aws-cli-put-instance-public-portslocal-exec来欺骗它。它将在提供实例后在运行terraform:的机器中运行

resource "aws_lightsail_instance" "worker" {
...
name              = "worker-${count.index+1}"
availability_zone = "ap-southeast-1a"
blueprint_id      = "ubuntu_18_04"
bundle_id         = "nano_2_0"
...
provisioner "local-exec" {
command = "aws lightsail put-instance-public-ports --instance-name=worker-${count.index+1} --port-infos fromPort=22,toPort=22,protocol=tcp fromPort=5601,toPort=5601,protocol=tcp"
}
}
resource "aws_lightsail_instance_public_ports" "test" {
instance_name = aws_lightsail_instance.test.name
port_info {
protocol  = "tcp"
from_port = 80
to_port   = 80
}
}

https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lightsail_instance_public_ports

在AWS提供商3.34.0中添加(2021年3月26日(https://github.com/hashicorp/terraform-provider-aws/blob/v3.34.0/CHANGELOG.md

Yikes。不要通过Lightsail向世界展示5601。我至少会设置一个反向代理来使用SSL,但你最好为Kibana 配置Xpack

最新更新