Terraform-provider-aws: Kesalahan protokol / port Aturan Grup Keamanan AWS.

Dibuat pada 10 Jul 2017  ·  3Komentar  ·  Sumber: hashicorp/terraform-provider-aws

Hai,

Versi Terraform

Terraform v0.9.11

Sumber Daya yang Terkena Dampak

  • aws_security_group_rule

File Konfigurasi Terraform

variable "ports_logstash" {
  description = "Ports used by logstash and graphite"
  default     = ["40000", "40001", "40002", "40003", "40004", "40005", "40006", "40007", "40008", "40009", "40010", "2003", "2005", "8125", "80", "443"]
}

resource "aws_security_group_rule" "Logstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = -1
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

resource "aws_security_group" "SG-Logstash" {
  name        = "SG-Logstash"
  description = "Access to all ports required for Logstash communication"
  vpc_id      = "${aws_vpc.default.id}"

  tags {
    Name = "SG-Logstash"
  }
}

Perilaku yang Diharapkan

Terraform seharusnya menampilkan kesalahan bahwa mendefinisikan protokol sebagai -1 dan pengaturan from_port dan to_port, tidak didukung ATAU buat aturan untuk tcp dan udp.

Perilaku Sebenarnya

Melempar kesalahan bahwa aturan yang diminta sudah ditambahkan, karena menambahkan aturan bolehkan semua untuk CIDR yang ditentukan.

Langkah-langkah untuk Mereproduksi

  1. Tentukan sumber daya aturan SG baru, untuk port tertentu dengan CIDR yang sama dan port yang berbeda.
  2. Jalankan terraform apply.
  3. Dapatkan kesalahan di bawah ini:
    `` * aws_security_group_rule.Logstash [3]: 1 kesalahan terjadi:
  • aws_security_group_rule.Logstash.3: [WARN] Aturan Grup Keamanan duplikat ditemukan di (sg-xxxxxxxx). Ini mungkin
    efek samping dari masalah Terraform yang sekarang telah diperbaiki menyebabkan dua grup keamanan dengan
    atribut identik tetapi source_security_group_ids_id berbeda untuk ditimpa masing-masing
    lainnya di negara bagian. Lihat https://github.com/hashicorp/terraform/pull/2376 untuk lebih lanjut
    informasi dan instruksi untuk pemulihan. Pesan kesalahan: aturan yang ditentukan "peer: 10.0.1.0/8, ALL, ALLOW" sudah ada```
bug servicec2 stale

Komentar yang paling membantu

Ternyata itu adalah perilaku default dari AWS API, jika Anda memberikan protocol = -1 untuk aws_security_group_rule Anda akan mendapatkan aturan ALLOW. Ini harus disebutkan dalam dokumen terraform.

cara yang tepat untuk melakukannya adalah dengan membuat dua aws_security_group_rule baik untuk tcp dan udp fe

resource "aws_security_group_rule" "tcpLogstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = "tcp"
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

resource "aws_security_group_rule" "udpLogstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = "udp"
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

Semua 3 komentar

Ternyata itu adalah perilaku default dari AWS API, jika Anda memberikan protocol = -1 untuk aws_security_group_rule Anda akan mendapatkan aturan ALLOW. Ini harus disebutkan dalam dokumen terraform.

cara yang tepat untuk melakukannya adalah dengan membuat dua aws_security_group_rule baik untuk tcp dan udp fe

resource "aws_security_group_rule" "tcpLogstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = "tcp"
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

resource "aws_security_group_rule" "udpLogstash" {
  count       = "${length(var.ports_logstash)}"
  depends_on  = ["aws_security_group.SG-Logstash"]
  type        = "ingress"
  from_port   = "${var.ports_logstash[count.index]}"
  to_port     = "${var.ports_logstash[count.index]}"
  protocol    = "udp"
  cidr_blocks = ["10.0.1.0/8"]

  security_group_id = "${aws_security_group.SG-Logstash.id}"
}

Menandai masalah ini sebagai basi karena tidak aktif. Ini membantu pengelola kami menemukan dan fokus pada masalah aktif. Jika masalah ini tidak menerima komentar dalam 30 hari ke depan, masalah ini akan ditutup secara otomatis. Pemelihara juga dapat menghapus label basi.

Jika masalah ini ditutup secara otomatis dan Anda merasa masalah ini harus dibuka kembali, sebaiknya buat masalah baru yang menautkan kembali ke masalah ini untuk konteks tambahan. Terima kasih!

Saya akan mengunci masalah ini karena sudah ditutup selama _30 hari_ ⏳. Ini membantu pengelola kami menemukan dan fokus pada masalah aktif.

Jika Anda merasa masalah ini harus dibuka kembali, sebaiknya buat masalah baru yang menautkan kembali ke masalah ini untuk konteks tambahan. Terima kasih!

Apakah halaman ini membantu?
0 / 5 - 0 peringkat