Рубрика:
Администрирование /
Инструменты
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ ЯРЕМЧУК, автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС, grinder@samag.ru
Управление системами с помощью Rundeck
Когда используется несколько средств управления системами, то требуется инструмент, позволяющий их объединить. Так и появился «the swiss army knife for ops» Rundeck
Различных средств управления конфигурацией сегодня разработано очень много, до определенного момента они работают хорошо и свою задачу выполняют. Но как только сеть становится большой и сложной, начинаются перебои. Растет количество скриптов, параметров и переменных внутри, появляются ветвления, следить за всеми узлами, правами, пользователями и выполненными командами становится непросто. Инструменты уже начинают мешать.
Проект Rundeck
Rundeck [1] – сервер сценариев, позволяющий автоматизировать выполнение команд и скриптов на любом количестве узлов с возможностью их отбора, планирования заданий, отслеживания результата, ведения истории (фактически библиотеки сценариев), а также аудита и организации контроля доступа. Rundeck фактически объединяет под одним интерфейсом все известные инструменты для управления системами – shell, Puppet, Chef, Vagrant, Jenkins, Nexus, Amazon EC2, PowerShell и другие.
Дополнительные функции реализованы в виде плагинов, обеспечивающих поддержку сервисов.
Задание, которое будет выполнено на узлах, может состоять из одной команды или содержать набор команд, скриптов и инструментов. Задание может быть вызвано планировщиком или вручную через веб-интерфейс, CLI или Web API. Администратор в консоли указывает команду и выбирает по фильтру узлы, после чего активирует его выполнение.
Поддерживаются многошаговые сценарии, выполняемые при возникновении определенных событий.
Каждый узел описывает определенные метаданные, представленные в виде Resource Model, которые показывают, как подключиться к узлу, и атрибуты (параметр, значение), их список можно определять самостоятельно. Для классификации или группировки по определенным признакам используются метки (теги). Реализован поиск узлов. Узлы могут быть как физические, так и виртуальные, Unix или Windows. Rundeck фактически предоставляет и возможности поинвентаризации систем.
Администратор получает полную информацию о ходе и результате выполнения запущенных заданий. Задания можно выполнять параллельно сразу на всех узлах или последовательно. Доступен тестовый прогон (Stub), позволяющий просмотреть команды, которые будут выполняться, без фактического их прогона.
Описания заданий могут экспортироваться в текстовые файлы, архив, сохраняться в Git. Пользователи могут использовать Rundeck как хранилище кода для заданий, публикуя его с помощью командной строки или API.
Задания могут объединяться в группы и являются частью проекта. Проекты – это основа Rundeck, все управление реализовано на уровне проекта. На сервере может быть несколько проектов для разных задач.
Реализован контроль доступа на основе политик (Role-based Access Control Policies), позволяющих разрешать пользователям и группам выполнять на ресурсе определенные действия в данном контексте. Это дает возможность легко, например, делегировать права на выполнение заданий определенным сотрудникам и стандартизировать повседневные операции.
Например, саппорт может выполнить задание по диагностике или устранению неисправности в случае возникновения определенных штатных или внештатных ситуаций, не дожидаясь, пока найдут админа. Так же легко можно разрешить пользователям самим создавать тестовые среды, автоматизировать развертывание после сборки и т.д. Система аудита позволяет сохранять все операции и ошибки, генерировать отчеты.
Журналы могут храниться локально или на удаленном сервере. Поддерживается интеграция с Active Directory или LDAP.
Оповещение о результате задания отправляется по электронной почте или путем отправки POST-запроса по указанному URL. Реализованы плагины [2], позволяющие отправлять сообщения в Telegram или Redmine. Плагин SCM (source code management), устанавливаемый по умолчанию, позволяет импортировать и экспортировать настройки проекта в Git.
Агенты в Rundeck не используются, это упрощает развертывание. Для управления удаленными системами и передачей файлов используется стандартный SSH/SCP. Для аутентификации используются ключи или пара логин/пароль. Команды могут выполняться от имени нужной учетной записи.
Доступные плагины позволяют просто подключить любой другой механизм. Например, для Windows используется WinRM, возможно использование внешнего скрипта или делегирование выполнения команд установленным агентам (например, SaltStack, MCollective). Также возможно получить все параметры и настройки по URL с удаленного узла.
Статью целиком читайте в журнале «Системный администратор», №07-08 за 2016 г. на страницах 31-35.
PDF-версию данного номера можно приобрести в нашем магазине.
- Проект Rundeck – http://rundeck.org.
- Плагины Rundeck – http://rundeck.org/plugins.
- Исходный код Rundeck – https://github.com/rundeck/rundeck.
- Проект anvils-demo – https://github.com/rundeck/anvils-demo.
- Документация Rundeck – http://rundeck.org/docs/administration.
- Плагин WinRM Executor – https://github.com/dtolabs/rundeck-winrm-plugin.
- Проект Knife-windows – https://github.com/opscode/knife-windows.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|