2017-08-12 6 views
2

J'ai ce qui suit et je veux savoir ce que je fais mal, car je suis sûr que je ne devrais pas avoir à doubler mon code juste à cause d'une condition.terraform conditionnelle ressource

Je veux faire:

variable "https" { value = true } 

resource "aws_security_group" "http_instance_sg" { 
    count  = "${var.https ? 0 : 1}" 

    ...... 

} 
resource "aws_security_group" "https_instance_sg" { 
    count  = "${var.https ? 1 : 0}" 

    ...... 

} 

resource "aws_elb" "fe_elb" { 
    security_groups = ["${var.https ? aws_aws_security_group.https_instance_sg.id : aws_aws_security_group.http_instance_sg.id}"] 
    ..... 
} 

Mais quand je fais ce que terraform se plaint http_instance_sg BISEAUTONS trouvé que je l'obtiens n'a pas être construit, mais sûrement je n'ai pas de doubler sur tous les le code et ont:

resource "aws_elb" "http_fe_elb" { 
    count = "${var.https ? 0 : 1}" 
    security_groups = ["${aws_aws_security_group.http_instance_sg.id}"] 
    ..... 
    } 

resource "aws_elb" "https_fe_elb" { 
    count = "${var.https ? 1 : 0}" 
    security_groups = ["${aws_aws_security_group.https_instance_sg.id}"] 
    ..... 
    } 

Répondre

0

vous devez utiliser:

resource "aws_security_group" "http_instance_sg" 

au lieu de:

resource "aws_aws_security_group" "http_instance_sg" 

Il n'y a pas de ressource avec le nom "aws_aws_security_group" dans Terraform, l'erreur est probablement due à ce nom de ressource typo.

J'espère que cela aidera!

+0

désolé c'est juste une faute de frappe dans ce que j'ai mis dans la question – Phil

0

Essayez-vous d'ajouter l'instruction depends_on? Quelque chose comme ça (je ne suis pas sûr de la syntaxe):

ressource "aws_elb" "fe_elb" { depends_on = [aws_aws_security_group.https_instance_sg, aws_aws_security_group.http_instance_sg] = [ security_groups "$ {var.https aws_aws_security_group? .https_instance_sg.id: aws_aws_security_group.http_instance_sg.id} "] ..... }