🚀 Установка GitLab в Docker через Ansible

Этот проект содержит Ansible Playbook для автоматизированной установки GitLab в контейнере Docker на целевом сервере. Также в проекте настроена установка Docker, конфигурация SSH, настройка брандмауэра UFW и SMTP.

🔗 Репозиторий: GitHub

📌 Обзор установки

Playbook выполняет три основных шага:

1️⃣ Настройка сервера: Устанавливает часовой пояс и другие основные параметры.
2️⃣ Установка Docker: Устанавливает Docker и Docker Compose.
3️⃣ Развертывание GitLab: Устанавливает GitLab в контейнере Docker и настраивает SSH, HTTP, HTTPS и SMTP.


📂 Структура Playbook

  • playbooks/server-install.yml – Настройка базовой конфигурации сервера, включая часовой пояс.
  • playbooks/docker-install.yml – Установка Docker и Docker Compose.
  • playbooks/gitlab-docker-install.yml – Развертывание GitLab в контейнере Docker и настройка соединений.
  • playbooks/ufw_firewall/firewall-gitlab.yml – Настройка брандмауэра UFW для разрешения нужных портов.

🛠 Требования

Перед запуском Playbook убедитесь, что:

✔️ Ansible 2.9+ установлен на управляющем узле.
✔️ SSH-доступ к целевому серверу.
✔️ Linux-сервер с доступом в интернет (Ubuntu, CentOS и др.).
✔️ Docker и Docker Compose будут установлены автоматически.


🔧 Переменные

Вы можете настроить Playbook, изменяя следующие переменные:

vars:
  timezone: 'Europe/Warsaw'
  fqdn: 'example.com'
  gitlab_ssh_host_name: 'ssh.example.com'
  gitlab_root_password: 'yourpassword'
  ssh_port_gitlab: '22'
  http_port: '80'
  https_port: '443'
  ssh_port: '2222'
  gitlab_docker_version: '17.8.2-ce.0'
  git_pos_user: 'username'
  git_pos_pass: 'yourpassword'
  git_pos_db: 'gitlab'
  smtp: 'smtp.example.com'
  smtp_port: '587'
  smtp_domain: 'example.com'
  registration_token: 'your_registration_token'

📌 Что означают переменные?

  • timezone – часовой пояс сервера (по умолчанию: Europe/Warsaw).
  • fqdn – Полное доменное имя (Fully Qualified Domain Name) для GitLab.
  • gitlab_ssh_host_name – Хост для SSH-доступа к GitLab.
  • gitlab_root_password – Пароль администратора GitLab.
  • ssh_port_gitlab – Порт SSH GitLab (по умолчанию 22).
  • http_port – Порт HTTP для веб-доступа к GitLab (по умолчанию 80).
  • https_port – Порт HTTPS для веб-доступа (по умолчанию 443).
  • gitlab_docker_version – Версия образа GitLab Docker (по умолчанию 17.8.2-ce.0).
  • smtp – SMTP сервер для отправки email-уведомлений.
  • registration_token – Токен регистрации GitLab Runner.

📦 Установка необходимых ролей Ansible Galaxy

Перед выполнением Playbook установите роли:

ansible-galaxy install -r roles/requirements.yml

Если роли уже установлены, можно выполнить обновление:

ansible-galaxy install -g -f -r roles/requirements.yml

🚀 Развертывание GitLab в Docker через Ansible

🔹 1. Клонирование репозитория

git clone https://github.com/Shipssv83/Ansible-GitLab-Docker-Install.git
cd Ansible-GitLab-Docker-Install

🔹 2. Запуск установки сервера

ansible-playbook -i inventory --user root --extra-vars "host=host_name" playbooks/server-install.yml

📌 Что делает этот Playbook?
✅ Устанавливает базовые пакеты и задает настройки сервера.
✅ Настраивает часовой пояс.


🔹 3. Установка Docker

ansible-playbook -i inventory --user root --extra-vars "host=host_name" playbooks/docker-install.yml

📌 Что делает этот Playbook?
✅ Устанавливает Docker и Docker Compose.
✅ Готовит систему для запуска контейнеров.


🔹 4. Развертывание GitLab в Docker

ansible-playbook -i inventory --user root --extra-vars "host=host_name" playbooks/gitlab-docker-install.yml

📌 Что делает этот Playbook?
✅ Загружает Docker-образ GitLab.
✅ Разворачивает GitLab в контейнере с нужными настройками.
✅ Настраивает доступ через SSH, HTTP и HTTPS.
✅ Подключает SMTP для уведомлений.


🎯 Заключение

Теперь ваш сервер полностью настроен и готов к работе с GitLab в Docker. Вы можете начинать создавать репозитории, добавлять пользователей и настраивать CI/CD-процессы.