由于 # 在 /etc/ansible/hosts 中被视为注释,因此我无法使用包含尖符号的密码。
[hosts]
host1 ansible_ssh_user=user ansible_ssh_pass=userpass ansible_su_pass=My#Password
然后使用原始命令:
$ ansible host1 -m raw -a "whoami" --su
host1 | FAILED | rc=1 >>
su: Authentication failure
如果我使用不带 # 的密码,则一切正常。有解决方法吗?
答案1
在库存文件中,下面的示例给出了所需的结果。
[hosts:vars]
ansible_su_pass=My#Password
但是该变量与主机组中的所有主机相关,因此更好的方法是创建一个文件“/etc/ansible/host_vars/host1”并将以下内容放入其中:
ansible_su_pass: My#Password
答案2
您可以使用#
内联,通过使用 进行转义\
,即ansible_su_pass=My\#Password
。确保您使用的是最新版 Ansible,因为 ini 解析器已经随着时间的推移而发展。