如何使用 Terraform 为 AWS Lightsail 实例设置防火墙规则?
How to set up a firewall rule using Terraform for an AWS Lightsail instance?
我已经创建 a simple Terraform recipe to set up an AWS Lightsail instance,以便在其中安装 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 进行设置?
谢谢!
哎呀。不要通过 Lightsail 向全世界公开 5601。我至少会设置一个反向代理来使用 SSL,但你最好为 Kibana 配置 Xpack
目前最新的 terraform-provider-aws 2.50.0
不支持我们为 lightsail 实例创建防火墙规则。
但是我们可以通过使用 local-exec
和内置的 aws cli put-instance-public-ports
来欺骗它。在提供实例后,它将是 运行,在 运行 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
}
}
已添加到 AWS 提供商 3.34.0(2021 年 3 月 26 日)https://github.com/hashicorp/terraform-provider-aws/blob/v3.34.0/CHANGELOG.md
我已经创建 a simple Terraform recipe to set up an AWS Lightsail instance,以便在其中安装 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 进行设置?
谢谢!
哎呀。不要通过 Lightsail 向全世界公开 5601。我至少会设置一个反向代理来使用 SSL,但你最好为 Kibana 配置 Xpack
目前最新的 terraform-provider-aws 2.50.0
不支持我们为 lightsail 实例创建防火墙规则。
但是我们可以通过使用 local-exec
和内置的 aws cli put-instance-public-ports
来欺骗它。在提供实例后,它将是 运行,在 运行 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
}
}
已添加到 AWS 提供商 3.34.0(2021 年 3 月 26 日)https://github.com/hashicorp/terraform-provider-aws/blob/v3.34.0/CHANGELOG.md