【发布时间】:2019-01-04 19:21:01
【问题描述】:
我正在尝试使用 Ansible 的 win_ping 模块从 Linux 控制机器 ping Windows 主机。
问题:
我从与“hosts”文件相同的目录运行以下命令并遇到“winrm or requests is not installed: cannot import name certs”错误。
$> ansible win -i ./hosts -m win_ping
dev-app1 | FAILED! => {
"msg": "winrm or requests is not installed: cannot import name certs"
}
“主机”中的定义:
[win]
dev-app1 ansible_host=10.123.456.78
[win:vars]
ansible_user=admin
ansible_password=adminspassword
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
我的 Linux 机器上安装的所有内容的版本:
* ansible 2.7.2
* python 版本 = 2.7.5(默认,2018 年 9 月 12 日,05:31:16)[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
* Winrm:python2-winrm-0.3.0-1.el7.noarch
* 请求:
python-requests-2.6.0-1.el7_1.noarch
python2-requests_ntlm-1.1.0-1.el7.noarch
知道是什么导致了错误吗?会不会是版本不兼容或者缺少其他模块?
谢谢!
【问题讨论】:
-
我强烈建议尝试不使用这么多 rpm,因为它们通常无法正确获取依赖关系树。创建一个 virtualenv,
pip install ansible==2.7 pywinrm,然后尝试使用该 virtualenv 的 ansible。另外,您似乎没有指定ansible_winrm_transport