Возможности Rundeck
Rundeck представляет собой кросс-платформенный инструмент, позволяющий
автоматизировать в ЦОД любые команды, скрипты и процедуры. Созданные при помощи
командной строки или через веб-интерфейс задачи могут быть запущены по требованию или
по расписанию на любом количестве узлов, администратор получает полную информацию о
ходе и результате выполнения. Доступны и другие необходимые в распределенных средах
возможности: контроль доступа, создание цепочки событий (многошаговый сценарий),
планирование, история и аудит.
Проект не возник на новом месте. Его основой является ControlTier(controltier.org), от
которого Rundeck отделился в 2010 году. Со временем большинство разработчиков перешли
в новый проект, как более перспективный. В Rundeck был опробован и реализован так
называемый сценарий-ориентированный подход, создан интерфейс для фильтрации команд
и скриптов для наборов узлов и возможность использования внешних поставщиков данных.
В отличие от монолитного ControlTier Rundeck поддерживает возможность интеграции с
другими инструментами Puppet, Chef, Vagrant, Jenkins, Nexus, Git и Amazon EC2.
Практически все дополнительные функции подключаются в качестве плагинов,
представляющих собой файлы обеспечивающие поддержку одного или нескольких сервисов
(Service Provider). Реализовано несколько типов плагинов позволяющих: добавить шаг
рабочего процесса, описания нодов (Resource Model), механизм исполнения и копирования
файлов, предупреждения. Правда в настоящее время реализованы в основном плагины
дающие возможность получать информацию о нодах. Ссылки на некоторые плагины можно
найти перейдя по адресу rundeck.org/plugins.
https://www.tux.in.ua/articles/3530 1/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
https://www.tux.in.ua/articles/3530 2/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
При создании проекта доступен вариант Stub позволяющий просто просмотреть команды,
вместо их выполнения. Это очень полезно когда требуется разобраться, что именно будет
сделано.
Поддерживается контроль доступа на основе политик, интеграция с LDAP и AD.
Написан Rundeck на Java, поддерживается установки на все популярные ОС — Linux,
Windows, Solaris и Mac OS X.
Ставим Rundeck
Для установки в Linux предлагается DEB пакет, RPM репозиторий и универсальный launcher.
Рекомендуется использовать возможности пакетных менеджеров дистрибутива, в этом
случае будут созданы все необходимые файлы. В Ubuntu и Debian процесс очень прост.
$ wget -c http://download.rundeck.org/deb/rundeck-1.5.3-1-GA.deb
$ sudo dpkg -i rundeck-1.5.3-1-GA.deb
Если для дистрибутива не собран пакет то, придется использовать launcher. После запуска
инсталятора необходимо будет ответить на пару вопросов.
https://www.tux.in.ua/articles/3530 3/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
Выпадающий список позволяет выбрать проект. Но проектов пока нет. При первом входе
пользователь будет сразу переброшен на страницу создания нового проекта. В самом
простом случае достаточно ввести имя, остальные периметры можно заполнить потом. Для
создания проекта в консоли используется утилита rd-project:
https://www.tux.in.ua/articles/3530 4/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
https://www.tux.in.ua/articles/3530 5/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
По окончании видим статус подсвеченный цветом, что упрощает восприятие (если все
нормально — Success, зеленым) и результат выполнения, его можно просмотреть в
нескольких представлениях и сохранить в виде txt-файла. Чуть ниже видим окно History в
котором выводится информация по всем заданиям выполненным в проекте.
Ссылка «Save As Job» позволяет сразу сохранить команду (ad-hoc command) для
последующего быстрого вызова или создать новую задачу. Просто заполняем предложенные
поля или устанавливаем, где нужно чекере: указываем имя, группу, выбираем проект,
вводим описание, отсылку оповещения о результате, периодичность выполнения и уровень
журналирования (Log level).
Чтобы добавить дополнительные команды и скрипты выбраем ссылку «Add step». Часть
параметров понятна и без описания, другие требуют объяснения:
https://www.tux.in.ua/articles/3530 6/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
Подключаем ноды
Каждый проект содержит как минимум один файл описания
ресурсов resources.xml (Resource Model), но при необходимости можно использовать
несколько файлов рассортировав по каталогам или URL. Каждое описание позволяет
однозначно определять ноды. Минимально требуется указать только имя узла под которым
оно будет показано в интерфейсе и его сетевое имя или IP, опционально задаются и другие
параметры — теги, ОС, архитектура и др. В resources.xml уже будет описание локальной
системы:
https://www.tux.in.ua/articles/3530 7/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
Если учетная запись входит в групу «Admin» справа вверху появится надпись «Admin» и
значок гаечного ключа. Выбрав этот пункт можно просмотреть состав групп, добавить
плагины, изменить и экспортировать настройки проекта.
По умолчанию предлагается получать список ресурсов с удаленного узла, URL которого
прописывается в «Resource Model Source URL». Чтобы задать файл ресурсов, каталог
содержащий файлы с описаниями, скрипт и URL выбираем «Resource Model Sources». Очень
удобно, что проект может поддерживать сразу несколько источников. Например часть нодов
выбирается из статического файла, а часть генерируется CGI скриптом.
Файл ресурсов самый простой способ, он может быть в формате XML или YAML. Для
небольших проектов достаточно прописать нужное количество нодов добавив новую секцию
«node name» в resources.xml. При помощи дополнительных параметров: username, password,
https://www.tux.in.ua/articles/3530 8/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
port указываются учетная запись и порт для соединения с узлом, если отличаются от
установок по умолчанию.
Плагины позволяют расширить эти возможности подключая Resource Model прописанные в
файлах Chef, Puppet, Amazon EC2 и других. Например, плагин Amazon EC2
(github.com/gschueler/rundeck-ec2-nodes-plugin) подключается очень просто:
Теперь при выборе «Add Source» появится новый тип «AWS EC2 Resources«. Плагин
поддерживает большое количество дополнительных опций, например автоматическую
расстановку тэгов.
В данный момент мы подключили все узлы, и можем выполнять на них команды и скрипты,
через веб-интерфейс или в командной строке.
Получаем список всех текущих ресурсов проекта и выполняем команду по фильтру os-
family:
Используем Chef
Основная мощь Rundeck проявляется совместном использовании с другими средствами
автоматизации вроде Chef, или Puppet. Принцип взаимодействия ни чем не отличается от
обычной работы. При создании задания указываем скрипт в котором расписаны все шаги
или прописываем их отдельно при помощи «Add step». Например, у нас есть готовый
cookbooks, и два файла (solo.rb,node.json) необходимые для работы chef-solo, которые
загружены на веб-сервер. Необходимо установить Chef и выполнить. Прописываем в проект
несколько новых шагов:
https://www.tux.in.ua/articles/3530 9/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
$ nano resources.xml
https://www.tux.in.ua/articles/3530 10/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
Проверяем из консоли:
$ nano project.properties
service.NodeExecutor.default.provider=script-exec
plugin.script-exec.default.command=knife winrm -m ${node.hostname} -P '${node
Вывод
https://www.tux.in.ua/articles/3530 11/12
05.05.2021 Унифицируем управление системами при помощи Rundeck | Linuxoid
Использование Rundeck заметно упрощает задачу админу, позволяя гибко определять ноды
и задачи, отслеживать их выполнения. Но как и любое другое средство управления также
требует внимания.
https://www.tux.in.ua/articles/3530 12/12