Как объявить хост в файле инвентаря Ansible в формате YAML?

«Как объявить хост в файле инвентаря Ansible в формате YAML?» — вопрос из категории Ansible, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В YAML-инвентаре Ansible хосты объявляются как ключи в секции hosts. Каждый хост может иметь переменные подключения, такие как ansible_host и ansible_user.

Пример базового инвентаря inventory.yml:

all:
  hosts:
    web_server_1:
      ansible_host: 192.168.1.10
      ansible_user: deploy
      ansible_ssh_private_key_file: ~/.ssh/id_rsa
    database_server:
      ansible_host: db.internal.company.com
  children:
    web_servers:
      hosts:
        web_server_1:
    database_servers:
      hosts:
        database_server:

Ключевые моменты:

  • Структура: Корневой элемент — all. Хосты перечисляются в hosts:.
  • Группы: Группы создаются в секции children. В примере web_servers и database_servers — это группы, содержащие соответствующие хосты.
  • Переменные: Параметры подключения (IP, пользователь, ключ) задаются как переменные для каждого хоста.
  • Важно: YAML чувствителен к отступам. Используйте пробелы, а не табуляцию.