2016-07-27 3 views
3

私は、さまざまな変数入力で複数回インスタンス化できるモジュールをTerraformに作成しようとしています。モジュール内で、名前が入力変数に依存する場合、どのようにリソースを参照するのですか?私はブラケットの構文("${aws_ecs_task_definition[var.name].arn}")を介してそれをやろうとしていますが、私はそれをちょうど推測しました。Terraformの変数で指定されたリソースを参照します。

(警告:私は完全に間違った方法でこれについて行くことがあります)

ここに私のモジュールの(簡体字)main.tfファイルです:

:私は次のエラーを取得しています

variable "name" {} 

resource "aws_ecs_service" "${var.name}" { 
    name = "${var.name}_service" 
    cluster = "" 
    task_definition = "${aws_ecs_task_definition[var.name].arn}" 
    desired_count = 1 
} 

resource "aws_ecs_task_definition" "${var.name}" { 
    family = "ecs-family-${var.name}" 
    container_definitions = "${template_file[var.name].rendered}" 
} 

resource "template_file" "${var.name}_task" { 
    template = "${file("task-definition.json")}" 

    vars { 
     name = "${var.name}" 
    } 
} 

Error loading Terraform: Error downloading modules: module foo: Error loading .terraform/modules/af13a92c4edda294822b341862422ba5/main.tf: Error reading config for aws_ecs_service[${var.name}]: parse error: syntax error 

答えて

5

私は基本的にモジュールの仕組みを誤解していました。

Terraformはリソース名(relevantissuesを参照)で補間をサポートしていませんが、私の場合はモジュールの各インスタンスのリソースがインスタンスの名前空間にあるため問題ありません。私はリソース名が衝突するのを心配しましたが、モジュールシステムはすでにそれを処理しています。

+0

また、リソース名を補間することはできません。 (まだですか?) –

+1

これは、これと同様の問題を抱えている他の人にとっては役に立ちません。私はあなたがエラーが起こっていた理由とそれを修正する方法(特にリソース名を補間することができないという事実に焦点を当てる)や質問/回答のコンボを削除する方法を解答することを提案します。 – ydaetskcoR

+0

@ydaetskcoR、よろしくお願いします。明確にするために私の答えを更新しましたが、他の人にとって役に立たない場合は、この質問/回答コンボを削除しても問題ありません。 –

関連する問題