Попытка получить метаданные AWS с помощью Ansible с помощью простой инструкции, например:
---
- hosts: tag_mytagname_mytagvalue
tasks:
- ec2_instance_facts
- ping
Я получаю сообщение об отсутствии Boto3 (хотя он уже установлен)
ЗАДАЧА [ec2_instance_facts] ******************************************** ************************************************* ********** фатальный: [ip-10-186-27-189.ec2.internal]: НЕ ПРОШЕЛ! => {"изменено": false, "msg": "для этого модуля требуется boto3"}
Оказалось, что это связано с тем, что Ansible пытается получить факты EC2. на удаленном хосте (потому что это то, что я сказал, о!)
Необходимо получить факты с помощью localhost:
---
- hosts: localhost
tasks:
- ec2_instance_facts:
Благодарим этот реддит за решение (но более полезно иметь его здесь, в SF): https://www.reddit.com/r/ansible/comments/8p4l9f/awsec2_group_facts_error_boto3_required_for_this/
Я получил такое же точное сообщение об ошибке в аналогичной ситуации - при использовании ec2_instance_facts
модуль с connection: local
(как часть большого списка задач, в котором удаленные задачи смешиваются с локальными):
---
- ec2_instance_facts:
connection: local
Решение в этом случае - использовать delegate_to: localhost
вместо того connection: local
:
---
- ec2_instance_facts:
delegate_to: localhost