2017-08-12 175 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}「] ..... }