状況
Windows PC 上で WSL の Ubuntu を起動し、ここから Ansible で AWS の IAM グループを操作しようとしたところ、以下のようなエラーが発生しました。
メッセージ中の xxxxxxx は使用している PC のデバイス名です。
failed: [localhost] (item={'name': 'group1'}) => {"ansible_loop_var": "item", "changed": false, "item": {"name": "group1"}, "msg": "Failed to import the required Python library (botocore or boto3) on xxxxxxxx's Python /usr/bin/python3. Please read the module documentation and install it in the appropriate location. If the required library is installed, but Ansible is using the wrong Python interpreter, please consult the documentation on ansible_python_interpreter"}
https://docs.aws.amazon.com/ja_jp/efs/latest/ug/install-botocore.html
ググると、このエラーの対処方法はいくつか出てきますが、どれを試しても解決しなかったのでこちらに対処方法を記載しておきます。
やってみたこと
- Playbook 実行時に python のパスを指定 -> 改善せず
ansible-playbook -i inventory -e ansible_python_interpreter=/usr/bin/python3
- ansible.cfg に interpreter_python を追加 -> 改善せず
[defaults] interpreter_python=/usr/bin/python3
- そもそも WSL 上に botocore、boto3 がインストールされているのかを確認 -> インストールされている
$ pip list |grep boto* boto3 1.24.57 botocore 1.27.61
WSL の方は問題なさそうです。ということは、Windows 側の問題か?
最終的な解決方法
Windows マシン上に python3 と botocore、boto3 を導入することでエラーが解消されました。
- Windows に python3 をインストール
インストーラのダウンロードはこちらから - pip をインストール
PowerShellから以下のコマンドでインストールできます。py -m pip install --upgrade pip
- botocore、boto3 のインストール
こちらも、PowerShellで実行します。py -m pip install botocore py -m pip install boto3
これで再度 WSL から Ansible の Playbook を実行したところ、エラーが出ずに実行されました。
Windows 側に borocore、boto3 のインストールが必要だったとは…。
「やってみたこと」の項目で設定した内容はそのまま残してあるので、Windows 側の作業だけで改善しない場合は、ansible.cfg の設定と WSL 上にも botocore 、boto3 が入っていることを確認してみてください。