Dev*_*ice 10 winrm ansible jenkins-pipeline
我在使用 Ansible 在 Windows 2008 服务器上进行部署时遇到问题。我有一个詹金斯管道,它有一个 Ansible 部署阶段,其中我将文件从清单中放到目标服务器上。我已经能够在相当多的服务器上成功地做到这一点。但是对于某些服务器,我看到上述错误消息。
这是詹金斯管道的输出
TASK [debug] *******************************************************************
ok: [ch3dw026394.mydomain.com] => {
"msg": "Hello world!"
}
TASK [Testing connection to windows] *******************************************
fatal: [ch3dw026394.mydomain.com]: UNREACHABLE! => {"changed": false, "msg": "ntlm: ('Connection aborted.', error(104, 'Connection reset by peer'))", "unreachable": true}
Run Code Online (Sandbox Code Playgroud)
这是 win_ping 的 Ansible playbook 模块
#Testing connection with Target
- debug:
msg: "Testing connection to windows {{ inventory_hostname }}"
- name: Testing connection to windows
win_ping: null
any_errors_fatal: true
Run Code Online (Sandbox Code Playgroud)
我对此做了很多研究,但以下选项均无效
关闭 Windows 2008 服务器上的 UAC。
不起作用 网上有些帖子说发生这个错误是因为清单文件不包含 FQDN,而是包含 IP。我的清单文件包含 FQDN(完全限定域名),但仍然不起作用另一篇文章说 vars.yml 中的端口号(5986)应该被注释掉,并在清单文件中包含主机名:5986。还是没起作用
我尝试删除服务器上的侦听器并运行 powershell 脚本以启用 WinRM ( https://github.com/ansible/ansible/blob/devel/examples/scripts/ConfigureRemotingForAnsible.ps1 )。这也行不通。使用删除监听器
winrm delete winrm/config/Listener?Address=*+Transport=HTTP
winrm delete winrm/config/Listener?Address=*+Transport=HTTS
Run Code Online (Sandbox Code Playgroud)将 WinRM 设置为具有基本 Auth = true 和AllowUncrypted = true(见下文),但仍然不起作用。(请注意,我不需要在其他 Windows 2008 服务器中执行任何此操作,并且工作得非常好)。
winrm set winrm/config/service '@{AllowUnencrypted= "true"}'
Set-Item -Path "WSMan:\localhost\Service\Auth\Basic" -Value $true
Run Code Online (Sandbox Code Playgroud)请你帮我解决这个错误。
提前感谢你的帮助!温暖的问候
好吧,伙计们,对于那些想知道这个问题是否已修复的人来说,答案是肯定的,我已经成功了。但是,我不确定这是否是正确的方法。
因此,这里是如何解决此错误的解决方法:
该问题是由于 TLS 1.2 注册表设置造成的。
于是进入注册表编辑器(regedit),遍历到以下位置 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols
检查是否有 TLS 1.2 的条目。如果是,则将其删除。现在再次尝试部署,它应该可以工作!
正如我所说,这是一种解决方法。如果需要存在 TLS 1.2,则需要从 Ansible 剧本的角度进行更深入的研究。
| 归档时间: |
|
| 查看次数: |
16353 次 |
| 最近记录: |