2017-08-12 107 views
2

我有以下,我想知道我做错了什么,因为我相信我不应该因为条件而加倍我的代码。terraform有条件的资源

所以我想做的事:

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}"] 
    ..... 
} 

但是,当我做到这一点terraform抱怨http_instance_sg不能被发现,这是我得到它尚未建成,但肯定我没有对所有翻倍代码和有:

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}"] 
    ..... 
    } 

回答

0

必须使用:

resource "aws_security_group" "http_instance_sg" 

代替:

resource "aws_aws_security_group" "http_instance_sg" 

在Terraform中没有名为“aws_aws_security_group”的资源,错误很可能是由于此资源名称错别字。

希望它会帮助!

+0

对不起,这只是我提出的一个错误的问题 – Phil

0

您是否尝试添加depends_on指令?像这样的东西(我不知道有关语法):

资源 “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}“] ..... }