Ansible: AWSダイナミックインベントリPythonスクリプトの実行に失敗する

作成日 2016年08月19日  ·  2コメント  ·  ソース: ansible/ansible

問題の種類
  • バグレポート
    コンポーネント名

動的インベントリ:ec2.py

ANSIBLEバージョン
ansible 2.1.0.0
Python 2.7.10
OS /環境

Mac OS X 10.11.6

概要

ec2.pyをスタンドアロンで実行すると、インポートエラーが発生します。

再現する手順
  1. ドキュメントの指示に従ってec2.py動的インベントリスクリプトとec2.iniファイルをダウンロードします。
  2. Python2.7でスクリプトを実行する
python ec2.py --list
Traceback (most recent call last):
  File "ec2.py", line 134, in <module>
    from ansible.module_utils import ec2 as ec2_utils
ImportError: No module named ansible.module_utils
期待される結果

インスタンスのリスト

実績

上記のエラー。

回避策

from ansible.module_utils import ec2 as ec2_utils行をコメントアウトすると、スクリプトは正常に実行されます。

このラインは#16606で導入されました。

aws bug cloud

最も参考になるコメント

バグではないと聞いてうれしいです。 これはドキュメントのどこかに記載されていますか?

私は自分の側でそれを引き起こした原因を理解しました: brew Ansibleをインストールすると、Pythonインタープリターがansibleを使用できなくなりました。

これを修正するために、Ansibleをアンインストールし、pipを使用して再度インストールしました。

brew uninstall ansible
pip install ansible

現在、ansibleが利用可能です:

python -c "import ansible;print(ansible.__version__)"
2.1.1.0

スクリプトは期待どおりに機能します。

ドキュメントのどこかでこれに言及する価値があるかもしれません。あるいは、Pythonパスでansibleが利用できない場合は、スクリプトに有益なエラーをスローさせることができます。

全てのコメント2件

インポートがhttps://github.com/ansible/ansible/commit/59e499f8f00e4068b68c147b8f3002535ad706e0によって追加された@jonatanblueは、botoクライアントのセットアップコードを正規化する試みのようです。

つまり、インベントリスクリプトを使用するには、デフォルトのPythonインタープリターのPythonパスで「ansible」を使用できるように、マシンにansibleをインストールする必要があります。 今後、動的インベントリスクリプトでansibleライブラリをさらに活用する予定なので、この変更を元に戻すつもりはありません。

バグではないと聞いてうれしいです。 これはドキュメントのどこかに記載されていますか?

私は自分の側でそれを引き起こした原因を理解しました: brew Ansibleをインストールすると、Pythonインタープリターがansibleを使用できなくなりました。

これを修正するために、Ansibleをアンインストールし、pipを使用して再度インストールしました。

brew uninstall ansible
pip install ansible

現在、ansibleが利用可能です:

python -c "import ansible;print(ansible.__version__)"
2.1.1.0

スクリプトは期待どおりに機能します。

ドキュメントのどこかでこれに言及する価値があるかもしれません。あるいは、Pythonパスでansibleが利用できない場合は、スクリプトに有益なエラーをスローさせることができます。

このページは役に立ちましたか?
0 / 5 - 0 評価