无法使用win_ping ping我的Windows服务器

时间:2016-08-21 09:56:02

标签: windows ansible ansible-inventory

当我尝试使用ansible windows -i hosts.ini -m win_ping ping我的Windows实例时,出现以下错误:

54.197.197.91 | UNREACHABLE! => {
"changed": false,
"msg": "plaintext: the specified credentials were rejected by the server",
"unreachable": true
}

我的hosts.ini文件如下:

[windows]
54.197.197.91

[windows:vars]
ansible_ssh_user=Administrator
ansible_ssh_pass=MyPassword123!
ansible_ssh_port=5985
ansible_connection=winrm

要解决这个问题,我已经这样做了:

ansible-vault create secret.yml

并输入我的密码:

win_initial_password: MyPassword123!

然后,我的hosts.ini文件看起来像:

[windows]
54.197.197.91

[windows:vars]
ansible_ssh_user=Administrator
ansible_ssh_pass={{ win_initial_password }}
ansible_ssh_port=5985
ansible_connection=winrm

当我尝试ping时,我收到以下错误:

54.197.197.91 | FAILED! => {
"failed": true,
"msg": "the field 'password' has an invalid value, which appears to include a variable that is undefined. The error was: 'win_initial_password' is undefined"
}

我哪里错了?

5 个答案:

答案 0 :(得分:3)

我通过改变这些来解决它:

ansible_ssh_port=5986
ansible_winrm_server_cert_validation=ignore

这很有用。

答案 1 :(得分:2)

当我按照类似于原始帖子的Ansible示例时,接受的答案对我没有用,以下是让它正常工作

注意:这是以纯文本形式发送密码,因此不能在生产中使用

在目标计算机上,运行具有管理员权限的PowerShell并输入以下命令:

Set-Item -Path WSMan:\localhost\Service\Auth\Basic -Value $true winrm set winrm/config/service '@{AllowUnencrypted="true"}'

同时验证您的防火墙配置是否正确以允许必要的端口(TCP / 5985,TCP / 5986)

来源:

http://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html#authentication-options https://github.com/diyan/pywinrm/issues/114

答案 2 :(得分:0)

对我来说仍然是一个问题。我的解决方案是从头开始重新安装与python-pip相关的winrm个包。我不得不使用官方Ansible documentation。根据文件:

  1. apt-get install python-pip git libffi-dev libssl-dev -y
  2. pip install ansible pywinrm
  3. Windows的端口号为 5986 ,因此var配置应为ansible_ssh_port: 5986

答案 3 :(得分:0)

即使将“ AllowUnencrypted”设置为true,我也遇到了同样的问题。我发现win_ping正在为已添加到管理员组的IEUser工作,但失败了

windows-server | UNREACHABLE! => {
  "changed": false,
  "msg": "plaintext: the specified credentials were rejected by the server",
  "unreachable": true
}

针对不在管理员组中的test-user

所以我将test-user添加到了管理员组,问题得到解决。

答案 4 :(得分:0)

我在谷歌上搜索了很多,最后下面的配置对我有用。我已将 ntlm 添加到我的配置文件中。

ansible_user: user@DOMAIN.COM
ansible_password: password
ansible_connection: winrm
ansible_ssh_port: 5986
ansible_winrm_transport: ntlm
ansible_winrm_server_cert_validation: ignore