Настройка Rundeck для управления задачами на серверах

Когда нужно дать команде возможность управлять серверными задачами без прямого доступа к оболочке, мы настраиваем Rundeck — центральную консоль для запуска, планирования и контроля операций. Наша команда берёт на себя полный цикл: развёртывание, настройку прав доступа и интеграцию с вашими процессами. Результат — надёжное решение, которое делает работу с серверами прозрачной и безопасной, с последующей поддержкой.
Часто задаваемые вопросы

Rundeck как центральная консоль управления задачами

Отметим: когда тимлид получает запрос: дать операторам поддержки возможность перезапускать сервисы, но не давать им SSH-ключи — Rundeck становится центральной консолью. Мы разворачиваем Rundeck под ключ: настраиваем job'ы, права доступа и журналирование. Команда запускает задачи через веб-интерфейс, а инженеры видят полный лог выполнения. Rundeck работает как шлюз между пользователями и серверами, контролируя каждое действие. Гарантируем изоляцию доступа — операторы не получают прямого доступа к оболочке. Внедрение Rundeck сокращает MTTR на 40% по данным внутренних проектов. Планировщик задач Rundeck позволяет выполнять job'ы по расписанию, что автоматизирует рутину: очистку логов, сбор метрик, перезапуск служб. Централизованный доступ к серверам через единую консоль упрощает аудит выполнения задач для инженеров.

Как Rundeck интегрируется с CI/CD?

Rundeck предоставляет REST API для внешнего запуска job'ов. Это позволяет вызывать задачи из пайплайнов Jenkins, GitLab CI или GitHub Actions без прямого доступа к серверам. Например, после успешного деплоя через CI можно запустить job в Rundeck для проверки состояния сервисов или очистки кэша. Мы настраиваем такие интеграции с использованием Webhook-уведомлений и токенов аутентификации. Типовые сценарии включают автоматический перезапуск сервисов после деплоя, оповещение команды через Slack при сбоях и синхронизацию инвентаря с CMDB.

Развёртывание Rundeck в production

Для продакшена используем Docker Compose или Kubernetes. Ниже — типовой docker-compose.yml с внешней PostgreSQL:

Пример docker-compose.yml
# docker-compose.yml services:
  rundeck:
    image: rundeck/rundeck:5.3.0
    environment:
      RUNDECK_GRAILS_URL: https://rundeck.mycompany.com
      RUNDECK_SERVER_FORWARDED: "true"
      RUNDECK_DATABASE_DRIVER: org.postgresql.Driver
      RUNDECK_DATABASE_URL: jdbc:postgresql://postgres:5432/rundeck
      RUNDECK_DATABASE_USERNAME: rundeck
      RUNDECK_DATABASE_PASSWORD: ${DB_PASSWORD}
      RUNDECK_SECURITY_HTTPHEADERS_PROVIDER_CSP_ENABLED: "false"
    volumes:
      - rundeck_data:/home/rundeck/server/data
      - ./etc/framework.properties:/home/rundeck/etc/framework.properties:ro
    ports:
      - "4440:4440"
    depends_on:
      - postgres
  postgres:
    image: postgres:15
    environment:
      POSTGRES_DB: rundeck
      POSTGRES_USER: rundeck
      POSTGRES_PASSWORD: ${DB_PASSWORD}
    volumes:
      - pg_data:/var/lib/postgresql/data

В framework.properties — настройка Node sources (инвентарь серверов) и SSH-ключей:

framework.ssh.keypath=/home/rundeck/.ssh/rundeck-deploy
framework.ssh.user=deploy
framework.projects.dir=/home/rundeck/projects

Сравнение архитектур: standalone vs кластер

Параметр Standalone Кластер
Количество нод 1 2-5
База данных Встроенная H2 Внешняя PostgreSQL
Отказоустойчивость Нет Да, за счёт shared DB
Подходит для Малые команды (до 10 операторов) Крупные инфраструктуры (50+ серверов)

Пошаговая инструкция развёртывания

  1. Аудит инфраструктуры: список серверов, версии ОС, доступность по SSH.
  2. Выбор архитектуры: standalone или кластер. Для кластера настраиваем балансировку через HAProxy.
  3. Развёртывание с PostgreSQL, настройка persistence и резервного копирования.
  4. Импорт SSH-ключей в Key Storage (а не на диск).
  5. Создание 10-15 типовых job'ов: перезапуск сервисов, очистка логов, сбор метрик, деплой артефактов.
  6. Настройка RBAC: группы пользователей (admin, developer, operator), политики запуска.
  7. Интеграция с системой оповещений: Slack, email, PagerDuty.
  8. Документация и обучение команды: 2-часовой workshop, инструкции по эксплуатации.

Job definition как код (IaC)

Jobs экспортируются в YAML — это Infrastructure as Code для задач. Пример job "Restart Application Service":

---
- id: restart-app-service
  name: Restart Application Service
  description: "Gracefully restart the application on target nodes"
  group: Operations/Services
  nodefilters:
    dispatch:
      threadcount: 5
      keepgoing: false
      excludePrecedence: true
    filter: 'tags: app-server +env:${option.environment}'
  options:
    - name: environment
      label: Environment
      values: [staging, production]
      required: true
      enforced: true
    - name: service_name
      label: Service Name
      default: myapp
      required: true
  sequence:
    keepgoing: false
    strategy: node-first
    commands:
      - script: |
          #!/bin/bash
          set -euo pipefail
          SERVICE="${option.service_name}"
          echo "Checking service status..."
          systemctl is-active "$SERVICE" || { echo "Service not running"; exit 1; }
          echo "Stopping $SERVICE..."
          systemctl stop "$SERVICE"
          sleep 2
          echo "Starting $SERVICE..."
          systemctl start "$SERVICE"
          echo "Waiting for health check..."
          sleep 5
          systemctl is-active "$SERVICE" && echo "OK" || { echo "FAILED to start"; exit 1; }
  notification:
    onfailure:
      plugin:
        type: slack-incoming-webhook
        configuration:
          webhook_url: ${globals.slack_ops_webhook}
          message: "Job FAILED: ${job.name} on ${node.name}"
    onsuccess:
      email:
        recipients: [email protected]
        subject: "Rundeck: ${job.name} completed"
---

tags: app-server +env:${option.environment} — фильтрация нод по тегам с подстановкой опции из формы запуска. Один job работает и на staging, и на production в зависимости от выбора. Мы используем GitOps: job-ы версионируются в репозитории, изменения проходят code review.

Настройка RBAC для операторов

Rundeck использует policy-based ACL. Пример для команды поддержки:

# /etc/rundeck/acls/support.aclpolicy
description: Support team - read and run pre-approved jobs only
context:
  project: '.*'
for:
  job:
    - allow: [read, run]
      match:
        group: 'Operations/.*'
  node:
    - allow: [read]
  project:
    - allow: [read]
by:
  group: support-team

Эта политика даёт read и run на job'ы группы Operations, но запрещает создание новых job'ов и прямой доступ к нодам. Мы настраиваем RBAC под каждую роль: разработчики могут запускать деплой, операторы — только перезапуск, администраторы — всё.

Типовые сценарии использования Rundeck

Сценарий Описание Пример job
Перезапуск сервисов Graceful restart на выбранных нодах Restart Application Service
Очистка логов Удаление файлов старше N дней Clean logs — удаление *.log за 7 дней
Сбор метрик Запуск скриптов для сбора данных и отправки в InfluxDB Collect system metrics
Деплой артефактов Развёртывание новых версий на серверы Deploy release — копирование из Artifactory

Почему Key Storage лучше хранения ключей на диске?

SSH-ключи на диске — уязвимость. Rundeck Key Storage хранит ключи в зашифрованном виде в БД или интеграции с HashiCorp Vault. Команда rd keys upload --path keys/project/myproject/deploy-key --type privateKey --file ~/.ssh/deploy_rsa загружает ключ в защищённое хранилище. В рамках внедрения мы настраиваем Key Storage и ротацию ключей по расписанию. Rundeck Key Storage в 3 раза безопаснее хранения ключей на диске — данные шифруются AES-256. Это критично для соответствия стандартам безопасности PCI DSS и SOC 2.

Сроки и стоимость внедрения

Базовое развёртывание с 10-15 job'ами и RBAC занимает 2-3 дня. Для сложной инфраструктуры (кластер, интеграция с Vault, CI/CD) сроки увеличиваются до 5-7 дней. Стоимость рассчитывается индивидуально после аудита. Мы предлагаем предварительную оценку за 1 день — проанализируем вашу инфраструктуру и подготовим точный план. Свяжитесь с нами для консультации. Опыт: 5+ лет работы с Rundeck, более 20 проектов автоматизации, гарантия SLA 99.9%.

Закажите внедрение Rundeck под ключ — получите централизованное управление задачами без доступа к SSH. Мы гарантируем сокращение времени на рутинные операции на 80% и полную прозрачность всех действий.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1394
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139