В этой короткой заметке вы узнаете, как подготовить GitLab к развертыванию в Azure.
1 — Принцип службы
Сгенерируйте Service Principal (он же App Registration) с помощью azure CLI (либо встроенная оболочка, либо локальный терминал, вы должны войти в систему с учетными данными роли Owner
, так как нам нужно назначить роль для области видимости):
az ad sp create-for-rbac --name GitLabServicePrincipalName --role Owner --scopes /
{
"appId": "<REDACTED>",
"displayName": "GitLabServicePrincipalName",
"password": "<REDACTED>",
"tenant": "<REDACTED>"
}
Не стесняйтесь менять области действия и роли (например, пользовательскую роль или область действия подписки). Подробнее о том, как генерировать SPN, читайте здесь.
2 — Храните учетные данные в GitLab
Сохраните appId
, password
, tenant
и ID подписки в GitLab => Settings => CI/CD => Variables (не забудьте включить флажок Mask variable для каждого секрета, чтобы значения не попали в журналы задания).
3 — Настройка YAML
Пример .gitlab-ci.yml
:
... [REDACTED] ...
deploy-job:
image: mcr.microsoft.com/azure-cli
variables:
appId: $appId
password: $password
tenant: $tenant
subId: $subId
stage: deploy
script:
- az login --service-principal -u $appId -p $password -t $tenant
- az account set -s $subId
- az group list
... [REDACTED] ...
Ресурсы и заметки
- Microsoft предлагает образ docker с последней и самой последней версией Azure CLI;
- Переменные не доступны автоматически после добавления их в GUI, мы должны назначить их переменным окружения, поэтому в YAML есть блок
variables
.
Заключение
Не стесняйтесь изучить это публичное репо, чтобы увидеть весь пример.
Дайте мне знать, что вы думаете. Если вам понравился мой контент, следуйте за мной в twitter по адресу @evgenyrudinsky
До следующего поста! 👋