Ansible "winrm or requests is not installed: cannot import name certs"メッセージが出た場合に参考になる情報です。
以下は引用です。
Ansible の win_ping モジュールを使用して、Linux 制御マシンから Windows ホストに ping を実行しようとしています。
問題:
「hosts」ファイルと同じディレクトリから次のコマンドを実行すると、「"hosts" file and run into "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エラーの原因は何かわかりますか? バージョンの非互換性またはその他の不足しているモジュールが原因でしょうか?
私の環境では別エラーですが、以下のコマンドで改善しました。
いくつかのチェックを行った結果、ansible が Python バージョンを 3.11 に更新したようです。
そこで、次のように実行しました。
$ head -1 `which ansible`
#!/usr/bin/python3.11$ sudo yum install python3.11-pip python3.11-winrm
そして完了しました。今は再び動作します:)
> yum install python3.11-pip python3.11-winrm
「参考」