Ansible не может найти хост в инвентаре

Вопрос или проблема

Я пытаюсь запустить плейбук на определенном хосте после его настройки с помощью более раннего набора задач.

Я могу пинговать хост, и он доступен в файле /etc/ansible/hosts, однако плей сообщает пропуск: не найдено соответствующих хостов и не запускается.

Файл хостов Ansible выглядит следующим образом

vm1  ansible_host=192.168.200.52

Я пытался указать файл инвентаризации, используя -i, но безуспешно, что может быть не так?

ОБНОВЛЕНИЕ: Добавил /etc/ansible/hosts как файл инвентаризации по умолчанию, однако плейбук все равно говорит, что не может увидеть ВМ.

скриншот

Файл хостов Ansible выглядит следующим образом

vm1  ansible_host=192.168.200.52

В: “Я пытался указать файл инвентаризации, используя -i, но безуспешно, что может быть не так?”

О: Чтобы увидеть, в чем проблема, выполните команду ниже

$ ansible-inventory -i hosts --list

Вывод должен быть следующим

{
    "_meta": {
        "hostvars": {
            "vm1": {
                "ansible_host": "192.168.200.52"
            }
        }
    }, 
    "all": {
        "children": [
            "ungrouped"
        ]
    }, 
    "ungrouped": {
        "hosts": [
            "vm1"
        ]
    }
}

Простой плейбук

- hosts: vm1
  gather_facts: false
  tasks:
    - debug:
        var: ansible_host

должен дать

$ ansible-playbook -i hosts playbook.yml
...
ok: [vm1] => {
    "ansible_host": "192.168.200.52"

Ответ или решение

Если вы столкнулись с проблемой, при которой Ansible не может найти хост из инвентаря и вы получаете сообщение «skipping: no hosts matched», это может быть вызвано несколькими причинами. Давайте рассмотрим основные шаги, которые помогут вам определить и устранить источник проблемы.

1. Проверьте синтаксис файла инвентаря

Первым делом необходимо убедиться, что ваш файл инвентаря настроен правильно. В вашем случае он выглядит следующим образом:

vm1 ansible_host=192.168.200.52

Убедитесь, что:

  • Каждый хост указан с правильным отступом.
  • Нет лишних пробелов или символов.

2. Убедитесь, что хост доступен

Вы упомянули, что можете пинговать хост. Убедитесь, что вы используете правильную команду для проверки доступности:

ansible -i /etc/ansible/hosts vm1 -m ping

Это базовая команда, которая помогает вам проверить, доступен ли хост на момент выполнения.

3. Проверка инвентаря с помощью ansible-inventory

Важно также использовать инструмент ansible-inventory для отладки вашего инвентаря. Выполните следующую команду:

ansible-inventory -i /etc/ansible/hosts --list

Вы должны увидеть что-то похожее на это:

{
    "_meta": {
        "hostvars": {
            "vm1": {
                "ansible_host": "192.168.200.52"
            }
        }
    }, 
    "all": {
        "children": [
            "ungrouped"
        ]
    }, 
    "ungrouped": {
        "hosts": [
            "vm1"
        ]
    }
}

Если вы не видите хоста vm1 в выходных данных этой команды, это указывает на проблему в синтаксисе файла инвентаря.

4. Проверка вашего playbook

Убедитесь, что ваш playbook правильно указан:

- hosts: vm1
  gather_facts: false
  tasks:
    - debug:
        var: ansible_host

Эта конфигурация должна быть без ошибок. Убедитесь, что вы запускаете playbook с использованием правильного файла инвентаря:

ansible-playbook -i /etc/ansible/hosts playbook.yml

5. Убедитесь, что нет конфликтов в инвентаре

Если вы обновили ваш файл инвентаря или используете разные инвентари, убедитесь, что у вас нет конфликта в именах хостов. Например, если вы настраиваете инвентарь в нескольких местах, проверьте, чтобы хост vm1 не дублировался.

6. Проверьте переменные хостов

Иногда, если в переменных хостов возникли проблемы, это также может привести к подобным ошибкам. Проверьте, есть ли другие конфигурации или файлы переменных, которые могут конфликтовать.

Заключение

Если вы испробовали все вышеописанные шаги и проблема все еще сохраняется, рекомендуется:

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

Следуя этим рекомендациям, вы сможете выявить и устранить проблему с недоступностью хоста в Ansible.

Оцените материал
Добавить комментарий

Капча загружается...