2017-10-19 14 views
1

I 다음 terraform 있습니다terraform 데이터 원본 원격 상태는 작동하지 않습니다

data "terraform_remote_state" "stack" { 
    backend = "local" 

    config { 
    path = "terraform.tfstate" 
    } 
} 
output "diditwork" { 
    value = "${data.terraform_remote_state.stack.aws_autoscaling_group.main.id}" 
} 

와 나는 같은 폴더에 terraform.tfstate 파일이 있습니다

{ 
    "version": 3, 
    "terraform_version": "0.9.3", 
    "serial": 14, 
    "lineage": "dc16a61f-72dd-435b-ba3f-5e36e14aace2", 
    "modules": [ 
     { 
      "path": [ 
       "root" 
      ], 
      "outputs": {}, 
      "resources": { 
       "aws_autoscaling_group.main": { 
        "type": "aws_autoscaling_group", 
        "depends_on": [ 
         "aws_launch_configuration.lc" 
        ], 
        "primary": { 
         "id": "djin-sample-asg-stag", 
         "attributes": { 
          "arn": "arn:aws:autoscaling:us-east-1:174120285419:autoScalingGroup:04c470fa-45f8-4711-aa31-b3ede40d6… 

을하지만, 어떤 이유로 경우에 대한 내가 할 테라 폼 적용출력 자동 인쇄 그룹 ID에 대한 아무것도 인쇄되지 않습니다. 적용은 성공적이며 아무런 오류도 발생시키지 않습니다. 무엇이 누락 되었습니까??

답변

2

잘못되었습니다.

value = "${data.terraform_remote_state.stack.aws_autoscaling_group.main.id}" 

데이터에는 루트 레벨 출력 만 가능합니다. 원격 상태에서

https://www.terraform.io/docs/providers/terraform/d/remote_state.html#root-outputs-only

은 루트 레벨 출력은 접근 가능하다. 상태에있는 모듈의 출력에 액세스 할 수 없습니다. 원격 상태를 통해 모듈 출력을 액세스 가능하게하려면 출력을 루트 출력으로 연결해야합니다.

output "asg_id" { 
value = "${aws_autoscaling_group.main.id}" 
} 

그리고 데이터를 얻을에 다음, 당신이 할 것, 또한

output "diditwork" { 
    value = "${data.terraform_remote_state.stack.asg_id}" 
} 

하는 일 :

그래서 먼저 배율이 자동 ID, 뭔가처럼 출력이 필요합니다 동일한 위치에있는 원격 데이터 소스는 일반적으로 잠금을 지원하는 백엔드 (또는 실제로 사용하려는 시나리오)에 좋지 않은 개념입니다. 나는 실험적으로 동일한 위치에서 원격 데이터 소스를 수행하고 있다고 가정하고 있으므로 아무런 해를 끼치 지 않았지만 실제 사용에서는 위의 출력에 사용 된 값만 사용해야합니다.

+0

실험 만. 뿌리 산출량을 알아 냈지만 당신도 그 답을 보았습니다! 모듈 내에서이 데이터 소스를 사용하고 모듈을 사용하여 결과를 출력 할 수있는 추가 문제가 있습니까? 나에게는 효과가없는 것 같다. 아프다. 또 다른 질문을한다. – Scooby