Источник шаблонов забирает проекты OpenTofu из GitLab вручную или по расписанию. Изменённые файлы становятся новой опубликованной и сразу активной версией шаблона. Редактирование файлов такого шаблона выполняется в GitLab.
Подготовка репозитория
Разместите каждый шаблон в отдельной непосредственной поддиректории выбранной директории. Например, для пути источника workspace-templates:
workspace-templates/
go-development/
versions.tf
main.tf
variables.tf
outputs.tf
files/
AGENTS.md
scripts/
start.sh
project-review/
versions.tf
main.tf
variables.tf
outputs.tf
files/
AGENTS.mdИдентификаторы шаблонов в примере — go-development и project-review. Непосредственная поддиректория должна содержать файл .tf в своём корне; вложенные files/ и scripts/ входят в тот же шаблон. Каждый проект должен возвращать обязательные результаты ddp_runtime и ddp_apps.
Чтобы перенести ручной шаблон, разместите в GitLab его пользовательские файлы с теми же относительными путями. Не добавляйте создаваемые порталом ddp.tf, ddp.auto.tfvars.json, состояние OpenTofu и .terraform.
Задайте в каждом проекте собственные домен IDE, Ingress, Secrets и хранение. Идентификаторы новых шаблонов должны быть свободны в портале.
Создание источника
Для подключения подготовьте внешний сервис GitLab и реквизиты пользователя с доступом к репозиторию. Затем выполните шаги:
- Откройте «AI» → «Рабочие пространства» → «Источники шаблонов» и нажмите «Создать источник».
- Укажите название, идентификатор, владельца и команду.
- На вкладке «Репозиторий» выберите «Внешний сервис GitLab», «Пользователь для реквизитов», «Проект», «Ветка или тег» и «Директория с шаблонами».
- Укажите проект как
group/projectили числовой идентификатор, путь какworkspace-templates. Для корня репозитория используйте.. - Выберите «Сервис Kubernetes» и «Namespace» для новых шаблонов этого источника.
- На вкладке «Синхронизация» задайте «Расписание (cron)» и включите «Включён», если нужна автоматическая синхронизация.
- Сохраните источник и нажмите «Синхронизировать сейчас».
- Откройте «История синхронизаций» и проверьте результат по каждой директории.
Новые шаблоны получают Kubernetes-подключение, неймспейс, владельца и команду источника. У уже созданного шаблона эти настройки меняются отдельно; изменение источника их не перезаписывает. Подключение Git для клонирования пользовательского проекта и навыки настройте в самом шаблоне. Репозиторий источника и репозиторий, с которым работает пользователь, выполняют разные задачи.
Обновление версии
Для публикации изменения отредактируйте файлы в GitLab, создайте коммит в выбранной ветке и запустите синхронизацию либо дождитесь расписания.
Если файлы директории изменились, портал публикует новую версию с меткой из первых 12 символов SHA коммита и активирует её. Новые пространства создаются из этой версии. Существующие пространства остаются на прежних версиях до ручного обновления.
Без изменения файлов новая версия не создаётся. Если вручную активирована более ранняя версия шаблона, учитывайте отметку «Активна не последняя версия из репозитория» и проверяйте активную версию после синхронизации.
Выключенный источник синхронизируется только вручную. Файлы управляемого источником шаблона остаются доступны для просмотра и сравнения в портале.
Результаты синхронизации
История показывает время, статус, коммит и результат для каждой директории:
| Результат | Значение |
|---|---|
| «Создан» | Найдена новая директория, шаблон создан с опубликованной версией |
| «Обновлён» | Файлы изменились, опубликована и активирована новая версия |
| «Без изменений» | Файлы совпадают с уже опубликованными |
| «В архиве» | Директория исчезла из репозитория |
| «Восстановлен» | Директория вернулась после архивирования источником |
| «Пропущен» | Директория не обработана; проверьте указанную причину |
При конфликте идентификатора с ручным шаблоном или шаблоном другого источника существующий объект не перезаписывается. При ошибке проверьте права на GitLab, проект, ветку, путь, допустимость файлов и результаты ddp_runtime и ddp_apps, затем повторите синхронизацию.
Удаление директории или источника
Удаление директории из выбранной ветки архивирует соответствующий шаблон. Созданные пространства и опубликованные версии сохраняются; новые пространства из архивного шаблона не создаются. Возвращение директории восстанавливает шаблон, если он был архивирован источником.
Для удаления источника сначала архивируйте его шаблоны. После удаления источника они остаются архивными ручными шаблонами со своими версиями. Данные существующих пространств не удаляются.