Ansible: Сценарий Python для динамической инвентаризации AWS не запускается

Созданный на 19 авг. 2016  ·  2Комментарии  ·  Источник: ansible/ansible

ТИП ПРОБЛЕМЫ
  • Сообщение об ошибке
    КОМПОНЕНТ НАЗВАНИЕ

Динамический инвентарь: ec2.py

ДОСТУПНАЯ ВЕРСИЯ
ansible 2.1.0.0
Python 2.7.10
ОС / СРЕДА

Mac OS X 10.11.6

РЕЗЮМЕ

Автономный запуск ec2.py вызывает ошибку импорта.

ДЕЙСТВИЯ ПО ВОСПРОИЗВЕДЕНИЮ
  1. Загрузите сценарий динамической инвентаризации ec2.py и файл ec2.ini в соответствии с инструкциями в документации .
  2. Запустите скрипт с Python 2.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

Самый полезный комментарий

Приятно слышать, что это не ошибка. Это описано где-нибудь в документации?

Я выяснил, что вызвало это с моей стороны: установка Ansible с brew сделала ansible недоступным для моего интерпретатора Python.

Чтобы исправить это, я удалил Ansible и снова установил его с помощью pip:

brew uninstall ansible
pip install ansible

Теперь доступен анзибль:

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

и сценарий работает как положено.

Возможно, стоит упомянуть об этом где-нибудь в документации или сделать так, чтобы сценарий выдал информативную ошибку, если ansible недоступен в пути python.

Все 2 Комментарий

@jonatanblue , импорт был добавлен https://github.com/ansible/ansible/commit/59e499f8f00e4068b68c147b8f3002535ad706e0, что, похоже, является попыткой нормализовать код настройки клиента Boto.

Подразумевается, что для использования скрипта инвентаризации на компьютере должен быть установлен ansible, чтобы в пути python для вашего интерпретатора python по умолчанию был доступен «ansible». Мы планируем со временем более широко использовать доступные библиотеки в сценариях динамической инвентаризации, поэтому я не собираюсь отменять это изменение.

Приятно слышать, что это не ошибка. Это описано где-нибудь в документации?

Я выяснил, что вызвало это с моей стороны: установка Ansible с brew сделала ansible недоступным для моего интерпретатора Python.

Чтобы исправить это, я удалил Ansible и снова установил его с помощью pip:

brew uninstall ansible
pip install ansible

Теперь доступен анзибль:

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

и сценарий работает как положено.

Возможно, стоит упомянуть об этом где-нибудь в документации или сделать так, чтобы сценарий выдал информативную ошибку, если ansible недоступен в пути python.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги