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/