2017-09-27 1 views
1

Ich brauche Hilfe ein Terraforming Skript fro AWS in schriftlicher Form wie folgt:Wie wenden Sie Sicherheitsgruppenregeln in verschiedenen Regionen an?

ich eine Liste von Sicherheitsgruppen in mehreren Regionen, zum Beispiel, - us-east-2 - us-west-1 - etc .

Wenn ich jetzt eine neue Instanz in einer beliebigen Region hinzufüge, wende ich eine EIP an. Ich muss hinzufügen, dass EIP allen Verkehr in der Sicherheitsgruppe jeder Region.

Bisher was ich versucht:

  • Speichern des EIP in einem node_ips.txt
  • Datei namens Lesen Sie die Datei
  • Wenden Sie es auf Sicherheitsgruppe

Hier ist das Skript Beispiel:

variable "list_eips" { type=list" }  
resource "aws_eip_association" "eip_assoc" { 
     count = "${local.number_of_instances}" 
     instance_id = "${element(aws_instance.ec2_instance.*.id, count.index)}" 
     allocation_id = "${element(data.aws_eip.db_ip.*.id, count.index)}" 
     provisioner "local-exec" { 
     command = "echo ${self.public_ip} >> node_ips.txt" 
     } 
    } 

    data "template_file" "read_node_ips" { 
     template = "${file("${path.cwd}/node_ips.txt")}" 
    } 



    resource "aws_security_group_rule" "allow_db_communication" { 
     type   = "ingress" 
     from_port  = 0 
     to_port   = 65535 
     protocol  = "tcp" 
     cidr_blocks  = ["${split(",", "${join("/32,", concat(compact(split("\n",data.template_file.read_node_ips.rendered)),var.list_eips) )}/32")}"] 
     security_group_id = "${data.aws_security_group.cassandra_sg.id}" 
    } 

Th Es funktioniert nicht für mich. Es fügt Regeln nur für list_eips hinzu. Wenn ich eine neue Instanz in einer anderen Region hinzufüge, ist die Sicherheitsgruppe anders. Also kann ich nicht wissen, was meine Sicherheitsgruppe in der vorherigen Region war. Bitte geben Sie eine Idee.

Danke.

Antwort

0

Terraform hat die Idee "Mehrere Provider-Instanzen". Sie können Provider für jede Region erstellen, die auf Ressourcen zugreifen und diese bearbeiten müssen.

# West coast region 
provider "aws" { 
    alias = "west" 
    region = "us-west-2" 
} 

resource "aws_instance" "foo" { 
    provider = "aws.west" 

    # ... 
} 

https://www.terraform.io/docs/configuration/providers.html

Verwandte Themen