Runner'ы
Runner'ы позволяют выполнять задачи на отдельном сервере, независимом от Semaphore UI.
Runner'ы Semaphore работают по тому же принципу, что и runner'ы GitLab или GitHub Actions:
- Вы запускаете runner на отдельном сервере, указывая адрес сервера Semaphore и токен аутентификации.
- Runner подключается к Semaphore и сообщает о готовности принимать задачи.
- Когда появляется новая задача, Semaphore передаёт runner'у всю необходимую информацию, а тот, в свою очере дь, клонирует репозиторий и запускает Ansible, Terraform, PowerShell и т. д.
- Runner отправляет результаты выполнения задачи обратно в Semaphore.
Для конечных пользователей работа с Semaphore с runner'ами или без них выглядит одинаково.
Если runner'ы не определены, сервер Semaphore UI сам выступает в роли runner'а. Все задачи выполняются в контексте сервера Semaphore UI с доступом к его файловой системе.
Использование runner'ов даёт следующие преимущества:
- Более безопасное выполнение задач. Например, runner может находиться в закрытой подсети или изолированном Docker-контейнере.
- Распределение нагрузки между несколькими серверами. Вы можете запустить несколько runner'ов, и задачи будут случайным образом распределяться между ними.
Настройка
Настройка сервера
Чтобы настроить сервер для работы с runner'ами, добавьте в конфигурацию сервера Semaphore следующие параметры:
{
"use_remote_runner": true,
"runner_registration_token": "long string of random characters"
}
или с помощью переменных окружения:
SEMAPHORE_USE_REMOTE_RUNNER=True
SEMAPHORE_RUNNER_REGISTRATION_TOKEN=long_string_of_random_characters
Настройка runner'а
Для настройки runner'а используйте следующую команду:
semaphore runner setup --config /path/to/your/config/file.json
Эта команда создаст файл конфигурации по пути /path/to/your/config/file.json.
Но прежде чем использовать эту команду, нужно понять, как runner'ы регистрируются на сервере.