GitLab Terraform Pipeline

Cloud Instance Console

dev-hetzner-test-vm-01

Before launch

Как работает этот запуск

К форме

Create / update

Выбираешь provider, окружение, тип, образ, регион, SSH-ключ, диски и роли. Backend запускает pipeline, а manual jobs подтверждаются прямо здесь через Play.

Import existing

Передаётся ID существующего instance/server. Tags лучше заполнить текущими значениями из cloud, чтобы Terraform plan не пытался их удалить или заменить.

Destroy

Удаляемый ресурс выбирается по state: ENVIRONMENT-CLOUD_PROVIDER-INSTANCE_NAME. Для stage/prod и опасных действий backend проверяет роль пользователя.

Доступы

Логин через GitLab OAuth. Trigger token и cloud credentials остаются на backend/GitLab CI variables. Play/Retry/Cancel тоже проходят проверку прав на backend.

Какие значения уйдут в pipeline

Обязательные

CLOUD_PROVIDER, ENVIRONMENT, TF_ACTION, INSTANCE_NAME, INSTANCE_TYPE, INSTANCE_IMAGE, INSTANCE_LOCATION.

Диски и tags

Диски собираются в EXTRA_VOLUMES_JSON. Tags/labels собираются в RESOURCE_TAGS_JSON.

Ansible

При включённом Ansible передаются RUN_ANSIBLE=true, ANSIBLE_CHECK, роли через ROLE_* и role vars, например users_append/pubkeys_append.

Provider Hetzner
Plan manual review
Apply manual confirm
Ansible enabled

01

Pipeline

Checking GitLab session...
Provider credentials и GitLab trigger token остаются на сервере. Браузер передаёт только runtime-параметры pipeline.

02

Instance

03

Disks

04

Tags / labels

Для import existing сюда удобно перенести текущие AWS tags / Hetzner labels, чтобы plan не пытался их удалить.

05

Ansible

Roles

06

Pipeline variables

07

Pipeline logs

После запуска pipeline здесь появятся jobs, статусы и trace выбранной job.
Trace Логи читаются через backend по GitLab OAuth session.
Pipeline ещё не выбран.