Ответ
Основное изменение — указать целевые хосты в директиве hosts. Вместо одного хоста (localhost или конкретного имени) нужно указать группу из инвентаря, несколько групп или шаблон.
Пример минимального изменения:
# Было для одного хоста:
- hosts: webserver01
tasks: ...
# Стало для группы 'webservers':
- hosts: webservers
tasks: ...
Ключевые подходы для работы с несколькими серверами:
-
Использование групп из инвентаря: Самый распространенный способ. Хосты объединяются в группы в файле инвентаря (
inventory.iniилиinventory.yml).# inventory.ini [webservers] web01.example.com web02.example.com [dbservers] db01.example.com [all_servers:children] webservers dbserversВ плейбуке:
- hosts: webserversили- hosts: all_servers. -
Шаблоны и перечисления: Можно использовать шаблоны для выбора хостов.
- hosts: '*.example.com' # Все хосты в домене - hosts: 'web0[1:5].example.com' # Диапазон имен - hosts: webservers:dbservers # Объединение групп -
Динамический инвентарь: Для облачных сред (AWS, GCP, Azure) инвентарь генерируется скриптом на лету, который возвращает JSON с группами хостов.
Важно: При работе с несколькими хостами часто требуется использовать become: true для привилегированных задач и учитывать, что задачи выполняются параллельно (по умолчанию — на 5 хостах одновременно, настраивается forks).