Как развернуть в Azure с помощью GitLab (аутентификация в Azure и пример конвейера YAML)

В этой короткой заметке вы узнаете, как подготовить 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

До следующего поста! 👋

Оцените статью
devanswers.ru
Добавить комментарий