Назад | Перейти на главную страницу

Ansible ec2_instance_facts с жалобой на то, что boto3 не установлен (но это так)

Попытка получить метаданные 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