Ansible中执行含双引号命令的疑问及执行有效性咨询
Ansible双引号转义与命令执行问题解答
为啥debug输出里多了反斜杠?
这只是Ansible输出字符串时的转义显示效果,不是实际传给shell的命令带反斜杠。因为YAML语法里,当字符串用双引号包裹时,内部的双引号需要转义才能被正确解析,debug模块输出时会把这种转义状态显示出来,但实际执行shell任务时,Ansible会自动处理,把不带转义的命令传递给目标主机的shell。
原命令能不能直接正常执行?
完全可以,不需要额外处理双引号。你写的shell任务是正确的:
- name: Initializing Kubernetes cluster shell: kubeadm init --control-plane-endpoint "hostname:port"
Ansible会把这条命令原封不动传给目标主机的shell执行,和你在服务器终端直接敲这条命令的效果一模一样。
额外验证小技巧(不用碰生产环境)
要是还不放心,可以用ansible-playbook --check(dry-run模式)模拟执行,看看任务的参数处理是否符合预期;或者换用command模块配合debug查看实际传递的参数,不过shell模块的处理逻辑和直接在终端执行是一致的。
内容的提问来源于stack exchange,提问作者bobs
相关产品推荐
相关产品推荐

