04.11.2025

Semaphore + Ansible

Semaphore + Ansible

Обновление системы

Перед началом установки Semaphore и Ansible необходимо обновить систему:

sudo apt update && sudo apt upgrade -y

Установка Docker

Если Docker не установлен, необходимо его скачать и установить:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

Установка Docker Compose

Для управления контейнерами Docker необходимо установить Docker Compose:

sudo apt install docker-compose-plugin -y

Настройка прав доступа

Для работы с Docker необходимо добавить пользователя в группу docker:

sudo usermod -aG docker $USER

После этого необходимо перезапустить сессию (выйти и зайдить обратно на VPS).

Создание директории и файла конфигурации

Создаем директорию для Semaphore и файл конфигурации:

mkdir ~/semaphore && cd ~/semaphore
nano docker-compose.yml

Пример файла docker-compose.yml:

services:
  # postgres:
  #   restart: unless-stopped
  #   image: postgres:14
  #   hostname: postgres
  #   volumes:
  #     - semaphore-postgres:/var/lib/postgresql/data
  #   environment:
  #     POSTGRES_USER: semaphore
  #     POSTGRES_PASSWORD: semaphore
  #     POSTGRES_DB: semaphore
  mysql:
    restart: unless-stopped
    image: mysql:8.0
    hostname: mysql
    volumes:
      - semaphore-mysql:/var/lib/mysql
    environment:
      MYSQL_RANDOM_ROOT_PASSWORD: yes
      MYSQL_DATABASE: semaphore
      MYSQL_USER: semaphore
      MYSQL_PASSWORD: semaphore
  semaphore:
    restart: unless-stopped
    ports:
      - 3000:3000
    image: semaphoreui/semaphore:latest
    environment:
      SEMAPHORE_DB_USER: semaphore
      SEMAPHORE_DB_PASS: semaphore
      SEMAPHORE_DB_HOST: mysql
      SEMAPHORE_DB_PORT: 3306
      SEMAPHORE_DB_DIALECT: mysql
      SEMAPHORE_DB: semaphore
      SEMAPHORE_PLAYBOOK_PATH: /tmp/semaphore/
      SEMAPHORE_ADMIN_PASSWORD: changeme
      SEMAPHORE_ADMIN_NAME: admin
      SEMAPHORE_ADMIN_EMAIL: admin@localhost
      SEMAPHORE_ADMIN: admin
      SEMAPHORE_ACCESS_KEY_ENCRYPTION: gs72mPntFATGJs9qK0pQ0rKtfidlexiMjYCH9gWKhTU=
      SEMAPHORE_LDAP_ACTIVATED: no
      SEMAPHORE_LDAP_HOST: dc01.local.example.com
      SEMAPHORE_LDAP_PORT: 636
      SEMAPHORE_LDAP_NEEDTLS: yes
      SEMAPHORE_LDAP_DN_BIND: uid=bind_user,cn=users,cn=accounts,dc=local,dc=shiftsystems,dc=net
      SEMAPHORE_LDAP_PASSWORD: ldap_bind_account_password
      SEMAPHORE_LDAP_DN_SEARCH: dc=local,dc=example,dc=com
      SEMAPHORE_LDAP_SEARCH_FILTER: "(&(uid=%s)(memberOf=cn=ipausers,cn=groups,cn=accounts,dc=local,dc=example,dc=com))"
      TZ: UTC
    depends_on:
      - mysql
volumes:
  semaphore-mysql:

Генерация ключа для шифрования

Генерируем новый ключ для шифрования:

head -c32 /dev/urandom | base64

Открытие порта 3000

Открываем порт 3000:

sudo ufw allow 3000/tcp
sudo ufw enable

Запуск контейнеров

Запускаем контейнеры в фоновом режиме:

docker compose up -d

Проверка статуса

Проверяем статус контейнеров:

docker compose ps

Просмотр логов

Смотрим логи для проверки:

docker compose logs semaphore

Остановка и перезапуск Semaphore

Остановка Semaphore:

docker compose down

Перезапуск:

docker compose restart

Обновление до последней версии

Обновление до последней версии:

docker compose pull
docker compose down
docker compose up -d

Резервное копирование данных

Резервное копирование данных:

sudo cp -r /var/lib/docker/volumes/semaphore_semaphore-mysql ~/backup/
← Zurück zum Blog