问题描述
在尝试运行一个连接到托管在AWS EC2上的Windows机器的playbook时,遇到了以下错误。他已经启用了winrm,并且win_ping工作正常,但是当他调用ansible-playbook时,不知道为什么会使用sudo,就好像目标机器是Linux主机一样。他尝试在ansible.cfg中禁用become=True,但是出现了相同的问题。他想知道是否必须使用ansible_winrm_transport=ntlm才能使win_ping工作。他觉得这可能是导致这个问题的原因。希望能得到帮助。
解决方案
请注意以下操作注意版本差异及修改前做好备份。
方案1
根据文档,Ansible 2.4之前,become只能在ansible_winrm_transport设置为basic或credssp时工作,但是自从Ansible 2.4之后,become现在在所有传输类型上都可以工作。你正在使用Ansible 2.2,可能是这个原因导致的错误信息有点误导人。建议升级到最新版本的Ansible,然后再尝试运行playbook。
方案2
你可以尝试在特权升级部分添加一个条目。将become_method设置为runas。所以我认为只需将become_method更改为runas,就可以正常工作。请确保在AWS控制台中打开了5985/5986端口的安全组,并再次尝试。如果可以,请提供日志。
请注意,如果将ansible_winrm_transport设置为basic,则win_ping将无法工作。
正文完