Использование действия входа Azure с помощью Azure CLI и PowerShell в Azure Stack Hub
Вы можете настроить GitHub Actions для входа в экземпляр Azure Stack Hub, запуска PowerShell, а затем скрипта Azure CLI. Это можно использовать в качестве основы рабочего процесса непрерывной интеграции и непрерывного развертывания (CI/CD) для решения с Помощью Azure Stack Hub. С помощью этого рабочего процесса можно автоматизировать сборку, тестирование и развертывание решения, чтобы сосредоточиться на написании кода. Например, добавив некоторые другие действия, вы можете использовать этот рабочий процесс вместе с шаблоном Azure Resource Manager для подготовки виртуальной машины, проверки репозитория приложений, а затем развертывания приложения на этой виртуальной машине при каждом слиянии в определенную ветвь в GitHub. Сейчас эта статья поможет вам ознакомиться с GitHub Actions и Azure Stack Hub.
GitHub Actions — это рабочие процессы, состоящие из действий, которые обеспечивают автоматизацию прямо в репозитории кода. Вы можете активировать рабочие процессы с событиями в процессе разработки GitHub. Вы можете выполнять распространенные задачи автоматизации DevOps, такие как тестирование, развертывание и непрерывная интеграция.
Чтобы использовать GitHub Actions с Azure Stack Hub, необходимо использовать субъект-службу (SPN) с определенными требованиями. В этой статье вы создадите локальное средство выполнения тестов. GitHub позволяет использовать любой компьютер, доступный GitHub в GitHub Actions. Вы можете создать виртуальную машину в качестве средства выполнения в Azure, в Azure Stack Hub или в другом месте.
Этот пример рабочего процесса включает в себя:
- Инструкции по созданию и проверке имени субъекта-службы.
- Настройка основного компьютера Windows 2016 Server в качестве GitHub Actions локального средства выполнения тестов для работы с Azure Stack Hub.
- Рабочий процесс, использующий:
- Действие входа Azure
- Действие скрипта PowerShell
Azure Stack Hub GitHub Actions
На следующей схеме показаны различные среды и их связи.
Части использования локального средства выполнения тестов:
- GitHub Actions, размещенные на сайте GitHub
- Локальное средство выполнения тестов, размещенное в Azure
- Azure Stack Hub
Ограничение использования GitHub Actions с Azure Stack Hub заключается в том, что процесс требует использования Azure Stack Hub, подключенного к Интернету. Рабочий процесс активируется в репозитории GitHub. В качестве поставщика удостоверений можно использовать как идентификатор Microsoft Entra, так и федеративные службы Active Directory (AD FS).
Хотя это не область этой статьи, локальное средство выполнения тестов также может использовать виртуальную частную сеть для подключения к Azure Stack Hub за брандмауэром.
Получение субъекта-службы
Имя субъекта-службы предоставляет учетные данные на основе ролей, чтобы процессы за пределами Azure могли подключаться к ресурсам и взаимодействовать с ними. Вам потребуется имя субъекта-службы с доступом участник и атрибутами, указанными в этих инструкциях, для использования с GitHub Actions.
У пользователя Azure Stack Hub нет разрешения на создание имени субъекта-службы. Вам потребуется запросить этот принцип у оператора облака. Здесь приведены инструкции, позволяющие создать имя субъекта-службы, если вы являетесь оператором облака, или проверить имя субъекта-службы, если вы являетесь разработчиком, используя имя субъекта-службы в рабочем процессе, предоставленном оператором облака.
Оператору облака потребуется создать имя субъекта-службы с помощью Azure CLI.
Приведенные ниже фрагменты кода написаны для компьютера Windows с помощью командной строки PowerShell в Azure CLI. Если вы используете CLI на компьютере Linux и bash, удалите расширение строки или замените \
их на .
Подготовьте значения следующих параметров, используемых для создания имени субъекта-службы:
Параметр Пример Описание endpoint-resource-manager "https://management.orlando.azurestack.corp.microsoft.com" Конечная точка управления ресурсами. суффикс-storage-endpoint "orlando.azurestack.corp.microsoft.com" Суффикс конечной точки для учетных записей хранения. suffix-keyvault-dns ".vault.orlando.azurestack.corp.microsoft.com" DNS-суффикс службы Key Vault. endpoint-active-directory-graph-resource-id "https://graph.windows.net/" Идентификатор ресурса Active Directory endpoint-sql-management https://notsupported Конечная точка управления sql Server. Для этого заголовка необходимо задать значение https://notsupported
профиль 2020-09-01-hybrid Профиль, используемый для этого облака. Откройте программу командной строки, например Windows PowerShell или Bash, и выполните вход. Используйте следующую команду:
az login
register
Используйте команду для новой среды или команду ,update
если вы используете существующую среду. Используйте следующую команду.az cloud register ` -n "AzureStackUser" ` --endpoint-resource-manager "https://management.<local>.<FQDN>" ` --suffix-storage-endpoint ".<local>.<FQDN>" ` --suffix-keyvault-dns ".vault.<local>.<FQDN>" ` --endpoint-active-directory-graph-resource-id "https://graph.windows.net/" ` --endpoint-sql-management https://notsupported ` --profile 2020-09-01-hybrid
Получите идентификатор подписки и группу ресурсов, которые вы хотите использовать для имени субъекта-службы.
Создайте имя субъекта-службы с помощью следующей команды с идентификатором подписки и группой ресурсов:
az ad sp create-for-rbac --name "myApp" --role contributor ` --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} ` --sdk-auth
Проверьте полученный объект JSON. Объект JSON будет использоваться для создания секрета в репозитории GitHub, который содержит ваше действие. Объект JSON должен иметь следующие атрибуты:
{ "clientId": <Application ID for the SPN>, "clientSecret": <Client secret for the SPN>, "subscriptionId": <Subscription ID for the SPN>, "tenantId": <Tenant ID for the SPN>, "activeDirectoryEndpointUrl": "https://login.microsoftonline.com/", "resourceManagerEndpointUrl": "https://management.<FQDN>", "activeDirectoryGraphResourceId": "https://graph.windows.net/", "sqlManagementEndpointUrl": "https://notsupported", "galleryEndpointUrl": "https://providers.<FQDN>:30016/", "managementEndpointUrl": "https://management.<FQDN>" }
Добавление субъекта-службы в репозиторий
Секреты GitHub можно использовать для шифрования конфиденциальной информации, используемой в ваших действиях. Вы создадите секрет, содержащий имя субъекта-службы, чтобы действие запустите вход в экземпляр Azure Stack Hub.
Предупреждение
GitHub рекомендует не использовать локальные средства выполнения тестов с общедоступными репозиториями. Вилки общедоступный репозиторий могут выполнять опасный код на локальном компьютере средства выполнения, создав запрос на вытягивание, который выполняет код в рабочем процессе. Дополнительные сведения см. в статье "Сведения о локально размещенных средствах выполнения."
- Откройте или создайте репозиторий GitHub. Инструкции по созданию репозитория в GitHub см. в документации по GitHub.
- Задайте закрытый репозиторий.
- Выберите Параметры>Изменить видимость репозитория.
- Выберите Сделать частным.
- Введите имя репозитория.
- Выберите Я понимаю, измените видимость репозитория.
- Выберите Параметры.
- Выберите Секреты.
- Выберите Создать секрет репозитория.
- Присвойте секрету
AZURE_CREDENTIALS
имя . - Вставьте объект JSON, представляющий имя субъекта-службы.
- Выберите Добавить секрет.
Создание виртуальной машины и установка необходимых компонентов
Создайте локальное средство выполнения тестов.
Эти инструкции по созданию средства выполнения в качестве виртуальной машины Windows в Azure. Если вам нужно подключиться к Azure Stack Hub, размещенной в центре обработки данных, может потребоваться VPN-подключение. Инструкции по включению подключения см. в разделе Установка средств Azure Stack Hub в локальном средстве выполнения тестов , для которых может потребоваться VPN-подключение.
- Инструкции по созданию виртуальной машины Windows в Azure см. в статье Краткое руководство. Создание виртуальной машины Windows в портал Azure. При выполнении этих инструкций установите Windows Server 2016 Core.
- Инструкции по созданию виртуальной машины Windows в Azure Stack Hub см. в статье Краткое руководство. Создание виртуальной машины Windows Server с помощью портала Azure Stack Hub. При выполнении этих инструкций установите Windows Server 2016 Core.
Используйте удаленное подключение для подключения к серверу Windows 2016 с помощью IP-адреса сервера, имени пользователя и пароля, которые вы определили при создании компьютера.
Установите Chocolatey. Chocolatey — это диспетчер пакетов для Windows, который можно использовать для установки зависимостей и управления ими из командной строки. В командной строке PowerShell с повышенными привилегиями введите:
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
Установите PowerShell Core. В командной строке PowerShell с повышенными привилегиями введите:
choco install powershell-core
Установите Azure CLI. В командной строке PowerShell с повышенными привилегиями введите:
choco install azure-cli
Установите Azure Stack Hub PowerShell. В командной строке PowerShell с повышенными привилегиями введите:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 Install-Module -Name Az.BootStrapper -Force -AllowPrerelease Install-AzProfile -Profile 2020-09-01-hybrid -Force Install-Module -Name AzureStack -RequiredVersion 2.0.2-preview -AllowPrerelease
Дополнительные сведения об использовании модулей Az Azure Stack Hub см. в статье Установка модуля Az PowerShell для Azure Stack Hub.
Перезапустите компьютер. В командной строке PowerShell с повышенными привилегиями введите:
shutdown /r
Добавьте компьютер в качестве локального средства выполнения тестов в репозиторий GitHub. Инструкции по добавлению локального средства выполнения тестов см. в документации по GitHub. Дополнительные сведения см. в разделе Добавление локальных средств выполнения тестов.
По завершении убедитесь, что служба запущена и прослушивает ее. Двойная проверка путем запуска
/run.cmd
из каталога средства выполнения.
Необязательно. Установка средств Azure Stack Hub в локальном средстве выполнения
Инструкции в этой статье не требуют доступа к средствам Azure Stack Hub, но при разработке собственного рабочего процесса может потребоваться использовать эти инструменты. Следующие инструкции помогут вам установить средства в локальном средстве выполнения тестов Windows. Дополнительные сведения о средствах Azure Stack Hub см. в статье Скачивание средств Azure Stack Hub из GitHub. В этих инструкциях предполагается, что вы установили диспетчер пакетов Chocolatey.
Установите Git.
choco install git
В командной строке PowerShell с повышенными привилегиями введите:
# Change directory to the root directory. cd \ # Download the tools archive. [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 invoke-webrequest ` https://github.com/Azure/AzureStack-Tools/archive/az.zip ` -OutFile az.zip # Expand the downloaded files. expand-archive az.zip ` -DestinationPath . ` -Force # Change to the tools directory. cd AzureStack-Tools-az
Если вам нужно, чтобы средство выполнения тестов подключалось к экземпляру Azure Stack Hub, можно использовать PowerShell. Инструкции см. в статье Подключение к Azure Stack Hub с помощью PowerShell.
Создание локального средства выполнения тестов
Вы можете настроить локальное средство выполнения тестов в документации GitHub. Локальное средство выполнения может выполняться на любом компьютере, который может подключаться к GitHub. Вы можете использовать локальное средство выполнения тестов, если у вас есть задача автоматизации в рабочем процессе, которая требует обширных зависимостей, особых требований к лицензированию, таких как USB-аппаратный ключ для лицензии программного обеспечения, или другие потребности компьютера или программного обеспечения. Ваш компьютер может быть физическим компьютером, виртуальной машиной или контейнером. Средство выполнения можно разместить в центре обработки данных или в облаке.
В этой статье вы будете использовать виртуальную машину Windows, размещенную в Azure, которая будет настроена с конкретными требованиями PowerShell для Azure Stack Hub.
Инструкции по настройке, настройке и подключению локального средства выполнения тестов к репозиторию см. в документации GitHub " Сведения о локальных средствах выполнения тестов".
Запишите имя и теги локального средства выполнения тестов. Рабочий процесс в этой статье будет вызывать его с помощью тега self-hosted
.
Добавление рабочего процесса в репозиторий
Создайте рабочий процесс, используя yaml в этом разделе, чтобы создать рабочий процесс.
Откройте репозиторий GitHub.
Выберите Действия.
Создайте новый рабочий процесс.
- Если это ваш первый рабочий процесс, выберите настроить рабочий процесс самостоятельно в разделе Выберите шаблон рабочего процесса.
- Если у вас есть существующие рабочие процессы, выберите Создать рабочий процесс>Настроить рабочий процесс самостоятельно.
В пути назовите файл
workflow.yml
.Скопируйте и вставьте yml рабочего процесса.
on: [push] env: ACTIONS_ALLOW_UNSECURE_COMMANDS: 'true' jobs: azurestack-test: runs-on: self-hosted steps: - name: Login to AzureStack with Az Powershell uses: azure/login@releases/v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} environment: 'AzureStack' enable-AzPSSession: true - name: Run Az PowerShell Script Against AzureStack uses: azure/powershell@v1 with: azPSVersion: '3.1.0' inlineScript: | hostname Get-AzContext Get-AzResourceGroup - name: Login to AzureStack with CLI uses: azure/login@releases/v1 with: creds: ${{ secrets.AZURE_CREDENTIALS }} environment: 'AzureStack' enable-AzPSSession: false - name: Run Azure CLI Script Against AzureStack run: | hostname az group list --output table
Выберите Начать фиксацию.
Добавьте заголовок фиксации и необязательные сведения, а затем выберите Зафиксировать новый файл.
При выполнении действия убедитесь, что оно успешно запущено.
Откройте репозиторий GitHub. Рабочий процесс можно активировать, выполнив отправку в репозиторий.
Выберите Действия.
Выберите имя фиксации в разделе Все рабочие процессы.
Выберите имя задания azurestack-test.
Разверните разделы, чтобы просмотреть возвращаемые значения для команд PowerShell и CLI.
Примечания к файлу рабочего процесса и действию:
- Рабочий процесс содержит одно задание с именем
azurestack-test
. - Событие отправки активирует рабочий процесс.
- Действие использует локальное средство выполнения тестов, настроенное в репозитории, и вызывается меткой средства выполнения в рабочем процессе со строкой :
runs on: self-hosted
. - Рабочий процесс содержит три действия.
- Первое действие вызывает действие Входа в Azure для входа с помощью PowerShell. С помощью GitHub Actions для Azure можно создать рабочие процессы, которые можно настроить в репозитории для сборки, тестирования, упаковки, выпуска и развертывания в Azure. Это действие использует учетные данные имени субъекта-службы Azure Stack для подключения и открытия сеанса в среде Azure Stack Hub. Дополнительные сведения об использовании действия см. в разделе Действие входа в Azure в GitHub.
- Во втором действии используется Azure PowerShell. Действие использует модули Az PowerShell и работает с облаками Azure Stack Hub и для государственных организаций. После запуска этого рабочего процесса проверьте задание, чтобы убедиться, что скрипт собрал группы ресурсов в среде Azure Stack Hub. Дополнительные сведения см. в разделе действие Azure PowerShell.
- В третьем действии используется Azure CLI для входа и подключения к Azure Stack Hub для сбора групп ресурсов. Дополнительные сведения см. в статье Действие Azure CLI.
- Дополнительные сведения о работе с GitHub Actions и локальным модулом выполнения тестов см. в документации по GitHub Actions.
Дальнейшие действия
- Дополнительные действия можно найти в Магазин GitHub.
- Сведения о распространенных развертываниях для Azure Stack Hub
- Сведения об использовании шаблонов azure Resource Manager в Azure Stack Hub
- Ознакомьтесь с шаблоном гибридного облака DevOps и шаблоном DevOps