我创建了一个简单的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-ports
的local-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