Roster-файл

Тема дорожной карты · SaltStack

Roster — это инвентарь для salt-ssh, который содержит информацию о целевых хостах и способах подключения к ним. В классическом режиме Salt миньоны регистрируются у мастера, и список хостов формируется автоматически. В agentless-режиме такой регистрации нет, поэтому список хостов нужно вести явно. По умолчанию roster находится в /etc/salt/roster и представлен в формате YAML: идентификатор цели и параметры подключения. Идентификатор из roster играет ту же роль, что и имя миньона, и используется для таргетинга в командах salt-ssh.

Как это работает

Минимальная запись в roster включает идентификатор и адрес: web1: {host: 192.168.1.10}. В реальных сценариях добавляют user — пользователя SSH, port — если порт нестандартный, priv — путь к приватному ключу, sudo: True — для поднятия привилегий на целевом хосте, passwd — пароль (что не рекомендуется, см. ниже). По умолчанию roster представляет собой плоский YAML, но можно использовать другие модули для получения списка целей из скриптов, облачных инвентарей или кэша миньонов. Модуль выбирается опцией --roster при запуске. Таргетинг по roster поддерживает glob-шаблоны по идентификаторам: salt-ssh 'web*' state.apply применяет состояние ко всем записям, начинающимся с web. Важно понимать, что запись в roster не создаёт криптографического доверия, как это делают ключи мастера; подлинность хоста проверяется обычными механизмами SSH (host-ключи, известные хосты).

Когда применять

Roster необходим при использовании salt-ssh. Для небольшого статичного парка хостов достаточно рукописного YAML под контролем версий. Если хосты создаются динамически (например, в облаке или через IaC-пайплайны), рукописный файл быстро устаревает — генерируйте его из источника истины: из вывода Terraform, API облака или CMDB. В смешанной инфраструктуре разумно использовать обычных миньонов для основного парка и в roster включать только «края»: хосты для бутстрапа, машины без агента и изолированные сегменты. Держать в roster то, что уже подключено миньоном, не нужно — это два расходящихся списка одного и того же.

Типичные ошибки

Самая опасная ошибка — хранение паролей открытым текстом в passwd: roster-файл доступен всем, у кого есть доступ к машине с salt-ssh, и попадает в бэкапы; используйте SSH-ключи и ограничьте права доступа к файлу. Вторая ошибка — рассинхронизация с реальностью: хост переехал, запись осталась, и salt-ssh стучится в пустоту или в чужую машину с тем же адресом. Третья ошибка — забывать про sudo: подключение под непривилегированным пользователем без sudo: True приводит к ошибкам прав. Наконец, не путайте идентификатор из roster с настоящим именем миньона: если позже на хост поставят агента, его имя задаётся конфигурацией миньона, и таргеты в состояниях могут перестать совпадать.

Связанные понятия

Полезные ресурсы

🔤 Английские термины в этой теме

Слова из этой темы, которые русскоязычные часто произносят неверно. Кнопка 🔊 произносит голосом браузера.

Весь словарь терминов →