Terraform本地EXEC置备程序中的转义字符 [英] Escape chars in Terraform local exec provisioner
本文介绍了Terraform本地EXEC置备程序中的转义字符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我要使用local-exec
置备程序链接Terraform和Ansible;
但是,由于这需要到Ansible从Terraform输入,因此我不得不使用以下复杂命令:
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"
(路径不同)
推荐答案
字符串用双引号引起来。
因此您需要将单引号替换为双引号,然后在内部转义引号,例如:
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屋!
查看全文