Ansible msg: “winrm or requests is not installed: cannot import name certs”
我正在尝试使用Ansible的win_ping模块从Linux控制计算机ping Windows主机。
问题:
我从与"主机"文件相同的目录中运行以下命令,并运行到" winrm或未安装请求:无法导入名称证书"错误。
1 2 3 4 | $> ansible win -i ./hosts -m win_ping dev-app1 | FAILED! => { "msg":"winrm or requests is not installed: cannot import name certs" } |
"主机"中的定义:
1 2 3 4 5 6 7 8 | [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
知道导致错误的原因是什么?可能是由于版本不兼容或其他缺少的模块吗?
谢谢!
即使通过yum已经安装了python2-winrm版本0.3.0,该操作也会失败。
原因:yum不会为winrm安装所有相关模块。请改用python软件包管理器(pip)。
1 2 3 | thinkred1cartoon:$ ansible all -i hosts.txt -m win_ping 172.16.96.135 | FAILED! => { "msg":"winrm or requests is not installed: cannot import name certs" |
找到已安装的确切Winrm软件包-
1 2 | yum list installed | grep winrm python2-winrm.noarch 0.3.0-1.el7 @epel |
运行接下来的2条命令-
1 2 3 | 1) yum autoremove python2-winrm.noarch #uninstalls python2-winrm.noarch along with all its dependencies 2) pip install"pywinrm>=0.3.0" # Installs pywinrm using pip. |
此处有更多详细信息
然后ping:pong在https上工作得很好,端口= 5986
1 2 3 4 5 | ram@thinkred1cartoon$ ansible all -i hosts.txt -m win_ping 172.16.96.135 | SUCCESS => { "changed": false, "ping":"pong" } |
快速浏览一下我的库存状况:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | ram@thinkred1cartoon$ cat hosts.txt [win] 172.16.96.135 [win:vars] ansible_user='Raman' ansible_password='XXXXX' #ansible_port=5985 ansible_port=5986 ansible_connection=winrm #ansible_winrm_scheme=http ansible_winrm_scheme=https ansible_winrm_server_cert_validation=ignore |
相反,如果您不能/不想运行命令1,则命令2将对您不起作用。
在这种情况下,仅运行命令3。
1 | 3 ) pip install --ignore-installed"pywinrm>=0.3.0" |