2016-06-16 5 views
1

내 terraform 스크립트의 provisioner "remote-exec" 블록에 정기적 인 인용문 "을 사용하는 간단한 방법이 필요합니다. 오직 "만이 내가하고 싶은 것을 위해 작동 할 것이고 단지 시도 할 것이다 \"는 작동하지 않는다. terraform에 문자 그대로 명령을 해석하게하는 가장 쉬운 방법은 무엇입니까? 여기에 참고로 내가 실행하려고하고있는 무슨이다 :Terraform, 명령에서 큰 따옴표를 사용하는 간단한 방법을 찾으십니까?

provisioner "remote-exec" { 
    inline = [ 
     "echo 'DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"' > /etc/default/docker", 
    ] 
} 
+1

아마 당신은 파일 제공자를 사용하는 대신 쉘 스크립트를 사용하여이 작업을 수행 할 수 있습니다. 약간의 오버 헤드가 있지만, 적어도 나중에 구축하는 것이 더 쉽고/깔끔합니다. – Joakim

답변

5

백 슬래시 이스케이프하는 것은 나를 위해 잘 작동 :

$ cat main.tf 

resource "null_resource" "test" { 
    provisioner "local-exec" { 
     command = "echo 'DOCKER_OPTS=\"-H tcp://0.0.0.0:2375\"' > ~/terraform/37869163/output" 
    } 
} 

$ terraform apply . 

null_resource.test: Creating... 
null_resource.test: Provisioning with 'local-exec'... 
null_resource.test (local-exec): Executing: /bin/sh -c "echo 'DOCKER_OPTS="-H tcp://0.0.0.0:2375"' > ~/terraform/37869163/output" 
null_resource.test: Creation complete 

Apply complete! Resources: 1 added, 0 changed, 0 destroyed. 

... 

$ cat output 

DOCKER_OPTS="-H tcp://0.0.0.0:2375"