2016-06-16 37 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

也许你可以只使用文件供应者,并用shell脚本,而不是这样做。更多的开销,但至少在未来建立更容易/更清洁。 – 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"