Ansible Semaphore UI: мой новый основной инструмент для автоматизации инфраструктуры

Несколько лет назад я писал о Ansible Semaphore — удобном интерфейсе для Ansible, который гораздо проще в настройке и использовании, чем, например, Ansible AWX. С тех пор Semaphore UI превратился в нечто большее, чем просто графическая оболочка для Ansible. Теперь он поддерживает не только Ansible, но и Terraform, OpenTofu, Terragrunt, PowerShell, а также пользовательские скрипты. Если вам не нужна сложная система CI/CD вроде GitLab, Semaphore UI может стать идеальным решением для автоматизации.

Почему Semaphore UI?

Интерфейс Semaphore простой, современный и мощный. Развернуть его с помощью Docker Compose можно буквально за пять минут (пример кода ниже).

Этот инструмент отлично подходит для тех, кому не нужны сложные системы вроде GitLab, которые требуют больших ресурсов и сложны в настройке. Semaphore UI предлагает баланс между функциональностью и простотой.

Почему Semaphore UI может вам подойти:

  • Простота установки: Развертывание на новой виртуальной машине или в контейнере занимает считанные минуты, после чего можно сразу импортировать плейбуки и репозитории Terraform.
  • Поддержка множества инструментов: Управляйте Ansible, Terraform, PowerShell и другими инструментами из одного интерфейса.
  • Встроенное планирование: Настраивайте автоматические задачи, например, ночные проверки безопасности или еженедельные аудиты инфраструктуры.

Теперь это не только Ansible

Раньше Semaphore поддерживал только Ansible, но теперь он может работать с:

  1. Управление конфигурациями через Ansible

    • Графический интерфейс для мониторинга выполнения задач.
    • Совместная работа над шаблонами.
    • Обнаружение дрейфа конфигураций.
  2. Развертывание инфраструктуры с Terraform и OpenTofu

    • Просмотр планов прямо в интерфейсе.
    • Упрощенное применение изменений.
    • Возможность отката к последней рабочей версии.
  3. Работа с Terragrunt

    • Стандартизация конфигураций для разных сред (dev, staging, prod).
  4. Автоматизация Windows с PowerShell

    • Запуск скриптов для настройки IIS, Active Directory и обновлений безопасности.
    • Сбор логов прямо в веб-консоли.
  5. Пользовательские скрипты
    • Запуск Python, Bash или любых других скриптов с возможностью планирования.

Поддерживаемые приложения в Semaphore UI

Установка Semaphore UI

Для установки используйте Docker Compose. Пример конфигурации:

yaml
version: ‘3.8’

services:
semaphore-postgres:
image: postgres:14
restart: always
ports:

  • ‘5432:5432’
    hostname: postgres
    volumes:
  • /mnt/cephfs/semaphore/postgres:/var/lib/postgresql/data
    environment:
    POSTGRES_USER: ${POSTGRES_USER}
    POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
    POSTGRES_DB: ${POSTGRES_DB}

    semaphore-ui:
    image: semaphoreui/semaphore:latest
    restart: always
    ports:

  • ‘3000:3000’
    volumes:
  • /mnt/cephfs/semaphore/data:/tmp/semaphore
    environment:
    SEMAPHORE_DB_USER: ${POSTGRES_USER}
    SEMAPHORE_DB_PASS: ${POSTGRES_PASSWORD}
    SEMAPHORE_DB_HOST: postgres
    SEMAPHORE_DB_PORT: ${POSTGRES_DB_PORT:-5432}
    SEMAPHORE_DB_DIALECT: postgres
    SEMAPHORE_DB: ${POSTGRES_DB}
    SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore/
    SEMAPHORE_ADMIN_PASSWORD: ${SEMAPHORE_ADMIN_PASSWORD}
    SEMAPHORE_ADMIN_NAME: ${SEMAPHORE_ADMIN_NAME}
    SEMAPHORE_ADMIN_EMAIL: ${SEMAPHORE_ADMIN_EMAIL}
    SEMAPHORE_ADMIN: ${SEMAPHORE_ADMIN_USER}
    SEMAPHORE_EMAIL_HOST: ${SEMAPHORE_EMAIL_HOST}
    SEMAPHORE_EMAIL_PORT: ${SEMAPHORE_EMAIL_PORT}
    SEMAPHORE_EMAIL_SENDER: ${SEMAPHORE_EMAIL_SENDER}
    SEMAPHORE_EMAIL_ALERT: ${SEMAPHORE_EMAIL_ALERT}
    SEMAPHORE_EMAIL_ALERT_RECIPIENTS: ${SEMAPHORE_EMAIL_ALERT_RECIPIENTS}
    SEMAPHORE_ACCESS_KEY_ENCRYPTION: ${SEMAPHORE_ACCESS_KEY_ENCRYPTION}
    depends_on:
  • semaphore-postgres

networks:
default:
name: npm-stack_nginxproxy
external: true

Пример файла .env:

plaintext

PostgreSQL settings

POSTGRES_USER=semaphore
POSTGRES_PASSWORD=ChangeMeToAStrongPassword!
POSTGRES_DB=semaphore
POSTGRES_DB_PORT=5432

Semaphore admin credentials

SEMAPHORE_ADMIN_NAME=admin
SEMAPHORE_ADMIN_USER=admin
SEMAPHORE_ADMIN_PASSWORD=SuperSecretAdminPass123!

Email notifications

SEMAPHORE_EMAIL_HOST=mail.yourdomain.com
SEMAPHORE_EMAIL_PORT=25
SEMAPHORE_EMAIL_SENDER=admin@yourdomain.com
SEMAPHORE_EMAIL_ALERT=true
SEMAPHORE_EMAIL_ALERT_RECIPIENTS=team@yourdomain.com

Access key encryption (base64)

SEMAPHORE_ACCESS_KEY_ENCRYPTION=Zm9vYmFyMTIzIT8kKiYoKSctPUB+

Основные концепции Semaphore

  • Проекты: Контейнеры для автоматизации, например, для лабораторных задач или развертывания в prod.
  • Инвентари: Список целевых серверов для выполнения задач.
  • Шаблоны задач: Определяют, какие действия выполнять (например, playbook Ansible или скрипт Terraform).
  • Задачи: Экземпляры выполнения шаблонов.
  • Расписания: Автоматический запуск задач по расписанию (cron, ежедневно, еженедельно).

Проект в Semaphore UI

Создание первого проекта

  1. Новый проект

    • Нажмите Create Project и укажите название (например, "Home Lab Automation").
  2. Добавление инвентаря

    • В разделе Inventories укажите хосты (IP или имена).
  3. Создание шаблона задачи Ansible

    • В Task Templates выберите Ansible, укажите репозиторий Git и playbook.
  4. Запуск playbook
    • Нажмите Run и наблюдайте за выполнением в реальном времени.

Шаблоны задач

  1. Планирование задач
    • Настройте автоматический запуск через Add Schedule.

Расписание задач

Дополнительные возможности

  • Контроль доступа (RBAC): Разграничение прав для команд.
  • Аудит: Логирование всех действий.
  • Уведомления: Slack, Telegram, email.
  • Хранилище секретов: Безопасное хранение SSH-ключей и токенов.

API и интеграции

Semaphore предоставляет REST API для управления проектами, задачами и интеграций с Git.

API Semaphore

Платная версия

Доступны Pro и Enterprise версии с дополнительными функциями:

  • Расширенный мониторинг.
  • Поддержка Enterprise-инструментов.
  • Приоритетная поддержка.

Сравнение версий Semaphore

Заключение

Semaphore UI превратился из удобного интерфейса для Ansible в мощный инструмент для автоматизации, поддерживающий Terraform, PowerShell и многое другое. Это отличный вариант, если вам не нужны сложные CI/CD-системы. Попробуйте и поделитесь впечатлениями в комментариях!

Предыдущая Статья

Запускай свой домашний лабораторный стенд с помощью инфраструктуры как код, как босс.

Следующая Статья

5 убийственных проектов на основе ИИ, которые можно попробовать за выходные

Написать комментарий

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *