Terraform本地EXEC置备程序中的转义字符 [英] Escape chars in Terraform local exec provisioner

查看:26
本文介绍了Terraform本地EXEC置备程序中的转义字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要使用local-exec置备程序链接Terraform和Ansible;

但是,由于这需要AnsibleTerraform输入,因此我不得不使用以下复杂命令:

provisioner "local-exec" {
        command = 'sleep 60; ansible-playbook -i ../ansible/inventory/ ../ansible/playbooks/site.yml --extra-vars "rancher_server_rds_endpoint="${aws_db_instance.my-server-rds.endpoint}" rancher_server_elastic_ip="${aws_eip.my-server-eip.public_ip}""'
    }

哪一个不断返回

非法字符

错误;

关于正确转义有什么建议吗?

如果ansible-playbook命令要直接在shell中运行,则为:

ansible-playbook -i inventory playbooks/site.yml --extra-vars "my_server_rds_endpoint=my-server-db.d30ikkj222.us-west-1.rds.amazonaws.com rancher_server_elastic_ip=88.148.17.236"

(路径不同)

推荐答案

Terraform syntax说明:

字符串用双引号引起来。

因此您需要将单引号替换为双引号,然后在内部转义引号,例如:

provisioner "local-exec" {
  command = "sleep 60; ansible-playbook -i ../ansible/inventory/ ../ansible/playbooks/site.yml --extra-vars "rancher_server_rds_endpoint='${aws_db_instance.my-server-rds.endpoint}' rancher_server_elastic_ip='${aws_eip.my-server-eip.public_ip}'""
}

这篇关于Terraform本地EXEC置备程序中的转义字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆