動的インベントリ:ec2.py
ansible 2.1.0.0
Python 2.7.10
Mac OS X 10.11.6
ec2.pyをスタンドアロンで実行すると、インポートエラーが発生します。
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で導入されました。
インポートが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
が利用できない場合は、スクリプトに有益なエラーをスローさせることができます。
最も参考になるコメント
バグではないと聞いてうれしいです。 これはドキュメントのどこかに記載されていますか?
私は自分の側でそれを引き起こした原因を理解しました:
brew
Ansibleをインストールすると、Pythonインタープリターがansibleを使用できなくなりました。これを修正するために、Ansibleをアンインストールし、pipを使用して再度インストールしました。
現在、ansibleが利用可能です:
スクリプトは期待どおりに機能します。
ドキュメントのどこかでこれに言及する価値があるかもしれません。あるいは、Pythonパスで
ansible
が利用できない場合は、スクリプトに有益なエラーをスローさせることができます。