Ansible Terraform本地执行供应器中的转义字符
我想使用Ansible Terraform本地执行供应器中的转义字符,ansible,terraform,Ansible,Terraform,我想使用localexecprovisioner链接Terraform和Ansible 然而,由于这需要从地形输入到Ansible,我只能使用以下复杂命令: provisioner "local-exec" { command = 'sleep 60; ansible-playbook -i ../ansible/inventory/ ../ansible/playbooks/site.yml --extra-vars "rancher_server_rds_endpoint="
localexec
provisioner链接Terraform和Ansible
然而,由于这需要从地形输入到Ansible,我只能使用以下复杂命令:
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}""'
}
它不断地回来
非法字符
错误
有没有关于正确逃跑的建议
如果直接在shell中运行ansible playbook
命令,则该命令将是:
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}'\""
}