Skip to content

Latest commit

 

History

History
156 lines (108 loc) · 10.3 KB

admin.md

File metadata and controls

156 lines (108 loc) · 10.3 KB

Управление виртуальными стендами

Для управления созданием, удалением и настройкой виртуальных стендов под проекты, предназначен модуль vstand.

daas vstand --help

При помощи этого модуля осуществляются все основные операции по управлению инфраструктурой стендов. Сам модуль основан на использовании ansible.

Настройка host машины для развёртывания на ней виртуальных стендов

Для развёртывания виртуальных стендов на какой-либо машине, требуется предварительная её подготовка. Установка необходимых пакетов, создание пользователей, выделение необходимых прав. Для этого предназначена команда:

daas vstand init hostname [--host-user user --host-pass pass]

Но предварительно требуется обеспечить доступ к машине по ssh. Для этого достаточно

  • запустить сервис sshd на указанной машине
  • создать пользователя, под которым будет осуществляться доступ к host машине и управление стендами. Например пользователь vagrant
    useradd vagrant
    passwd vagrant
  • дать ему права sudo для возможности устанавливать пакеты и конфигурировать систему. Создать файл /etc/sudoers.d/vagrant
vagrant ALL=NOPASSWD: ALL

Всё остальное будет сконфигурировано автоматически на основе специального конфигурационного файла, описывающего стенд.

ВАЖНО: Подразумевается, что на host-машине доступен интернет для скачивания необходимых пакетов, или в конфигурационном файле указаны альтернативные (локальные) репозитории к которым есть доступ. В процессе подготовки, на host-машину будут установлены VirtualBox, vagrant и другие необходимые для работы пакеты.

Создание конфигурационного файла описывающего стенд

Для управления параметрами виртуальных серверов разворачиваемых для проектов, создаётся специальный файл с описанием.

---
version: 0.1

vstand:
  hostmachine:
    hostname: "vstand1"
    user: "vagrant"
    pass: "vagrant"

  gitlab:
    url: "http://192.168.1.76:30080/"
    runner_registration_token: "xsmZtVJpEhbsdfs23uxTp1JAys"

В примере приведён минимальный набор необходимых параметров для описания стенда. Раздел hostmachine содержит параметры доступа к host-машине (user,pass), а также hostname который будет выставлен на host-машине после её настройки. Остальные параметры относятся уже к настройкам виртуальных стендов запускаемых на host-машине под конкретный проект, в том числе параметры доступа к gitlab, необходимые для регистрирования gitlab-runner-ов.

Полное описание параметров можно почитать тут

По умолчанию файл ищется в текущем каталоге (где запускается команда daas vstand ...) под именем .daas-vstand-config.yml. Потом ищется в домашнем каталоге пользователя, потом ищется в системном каталоге /etc/daas. Но можно указать другой файл при помощи аргумента -s|--stand-config my-vstand-config.yml А в качестве файла проекта по умолчанию используется .daas.yml. Но можно указать другой при помощи аргумента -c|--config project.yml

daas vstand setup -s my-vstand-config.yml -c my-project-config.yml hostname

Итоговые настройки складываются из умолчательных настроек и настроек указанных в конфигурационном файле проекта. Их можно посмотреть (в формате вывода ansible) командой

daas vstand show config [-s my-vstand-config.yml]

Умолчательные настройки можно посмотреть командой

daas vstand show defaults

Создание виртуального стенда для проекта

Для разворачивания виртуального стенда под конкретный проект, требуется два конфигурационных файла

Сам процесс происходит в два этапа.

Этап 1. Разворачивание стенда на host-машине

daas vstand create hostname

Эта команда запускается в каталоге с проектом. И при таком запуске подразумевает умолчательные настройки. Т.е. наличие файлов:

  • .daas-vstand-config.yml
  • .daas.yml

hostname - это адрес настроенной на предыдущем шаге host-машины.

После выполнения команды create на host-машине будет запущена виртуальная машина под управлением vagrant. Её IP (требуемый на следующем этапе) будет выведен на экран. А так же будет создан пользователь

NOTE: Обратите внимание, что в созданной виртуальной машине, в качестве admin-а используется уже другой пользователь, который отдельно указывается в параметрах user, pass в настройках стенда или в командной строке.

Этап 2. Настройка созданного стенда для работы

Для настройки виртуальной машины созданной на первом этапе под конкретный проект, предназначена команда

daas vstand setup newstand

ВНИМАНИЕ!: Под newstand в данном случае подразумевается адрес виртуальной машины созданной на первом шаге.

В результате выполнения данной команды, на виртуальную машину будут установлены необходимые для работы пакеты (docker, docker-compose, daas и т.п.). А так же в gitlab зарегестрированы runner-ы, которые будут выполнять последующую работу в рамках CI.

Для того, чтобы не хранить токен для регистрации gitlab-runner-ов в файле конфигурации, можно указать его при запуске в командной строке --gitlab-token xxxx

Этап 3. Окончательная настройка gitlab

После того, как виртуальный стенд запущен и настроен. В gitlab зарегистрированы новые gitlab-runner-ы. В настройках gitlab необходимо их назначить на указанный проект, а так же скорректировать (если необходимо) файл .gitab-ci.yml для задействования нового стенда (корректировка тегов, стадий сборки и т.п.)

Некоторые детали

Пользователи используемые для управления

Пользователь на hostmachine

На host машине, где развёртываются виртуальные стенды, используется пользователь, управляющий машинами при помощи vagrant. Он должен быть создан на этапе предварительной подготовки стендовых машин. Его логин и пароль вносятся в конфигурационный файл для стенда на этапе настройки.

Пользователь на виртуальном стенде

На виртуальном стенде по умолчанию присутствует пользователь vagrant, необходимый для управления виртуальной машиной. По умолчанию пользователь vagrant через sudo имеет полные права.

Второй пользователь "vadmin" создаётся в процессе развертывания виртуального стенда. Под ним запускаются gitlab-runner-ы, docker-контейнеры и ведётся вся работа gitlab CI. Его логин и пароль задаются в настройках конфигурационного файла для стенда.