Поделиться через


Использование действия входа 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 в Azure Stack Hub Части использования локального средства выполнения тестов:

  • 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, удалите расширение строки или замените \их на .

  1. Подготовьте значения следующих параметров, используемых для создания имени субъекта-службы:

    Параметр Пример Описание
    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 Профиль, используемый для этого облака.
  2. Откройте программу командной строки, например Windows PowerShell или Bash, и выполните вход. Используйте следующую команду:

    az login
    
  3. 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
    
  4. Получите идентификатор подписки и группу ресурсов, которые вы хотите использовать для имени субъекта-службы.

  5. Создайте имя субъекта-службы с помощью следующей команды с идентификатором подписки и группой ресурсов:

    az ad sp create-for-rbac --name "myApp" --role contributor `
        --scopes /subscriptions/{subscription-id}/resourceGroups/{resource-group} `
        --sdk-auth
    
  6. Проверьте полученный объект 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 рекомендует не использовать локальные средства выполнения тестов с общедоступными репозиториями. Вилки общедоступный репозиторий могут выполнять опасный код на локальном компьютере средства выполнения, создав запрос на вытягивание, который выполняет код в рабочем процессе. Дополнительные сведения см. в статье "Сведения о локально размещенных средствах выполнения."

  1. Откройте или создайте репозиторий GitHub. Инструкции по созданию репозитория в GitHub см. в документации по GitHub.
  2. Задайте закрытый репозиторий.
    1. Выберите Параметры>Изменить видимость репозитория.
    2. Выберите Сделать частным.
    3. Введите имя репозитория.
    4. Выберите Я понимаю, измените видимость репозитория.
  3. Выберите Параметры.
  4. Выберите Секреты.
  5. Выберите Создать секрет репозитория. Добавление секрета GitHub Actions
  6. Присвойте секрету AZURE_CREDENTIALSимя .
  7. Вставьте объект JSON, представляющий имя субъекта-службы.
  8. Выберите Добавить секрет.

Создание виртуальной машины и установка необходимых компонентов

  1. Создайте локальное средство выполнения тестов.

    Эти инструкции по созданию средства выполнения в качестве виртуальной машины Windows в Azure. Если вам нужно подключиться к Azure Stack Hub, размещенной в центре обработки данных, может потребоваться VPN-подключение. Инструкции по включению подключения см. в разделе Установка средств Azure Stack Hub в локальном средстве выполнения тестов , для которых может потребоваться VPN-подключение.

  2. Используйте удаленное подключение для подключения к серверу Windows 2016 с помощью IP-адреса сервера, имени пользователя и пароля, которые вы определили при создании компьютера.

  3. Установите 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'))
    
  4. Установите PowerShell Core. В командной строке PowerShell с повышенными привилегиями введите:

    choco install powershell-core
    
  5. Установите Azure CLI. В командной строке PowerShell с повышенными привилегиями введите:

    choco install azure-cli
    
  6. Установите 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.

  7. Перезапустите компьютер. В командной строке PowerShell с повышенными привилегиями введите:

    shutdown /r
    
  8. Добавьте компьютер в качестве локального средства выполнения тестов в репозиторий GitHub. Инструкции по добавлению локального средства выполнения тестов см. в документации по GitHub. Дополнительные сведения см. в разделе Добавление локальных средств выполнения тестов.

    Средство выполнения прослушивает

  9. По завершении убедитесь, что служба запущена и прослушивает ее. Двойная проверка путем запуска /run.cmd из каталога средства выполнения.

Необязательно. Установка средств Azure Stack Hub в локальном средстве выполнения

Инструкции в этой статье не требуют доступа к средствам Azure Stack Hub, но при разработке собственного рабочего процесса может потребоваться использовать эти инструменты. Следующие инструкции помогут вам установить средства в локальном средстве выполнения тестов Windows. Дополнительные сведения о средствах Azure Stack Hub см. в статье Скачивание средств Azure Stack Hub из GitHub. В этих инструкциях предполагается, что вы установили диспетчер пакетов Chocolatey.

  1. Установите Git.

    choco install git
    
  2. В командной строке 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
    
  3. Если вам нужно, чтобы средство выполнения тестов подключалось к экземпляру Azure Stack Hub, можно использовать PowerShell. Инструкции см. в статье Подключение к Azure Stack Hub с помощью PowerShell.

Создание локального средства выполнения тестов

Вы можете настроить локальное средство выполнения тестов в документации GitHub. Локальное средство выполнения может выполняться на любом компьютере, который может подключаться к GitHub. Вы можете использовать локальное средство выполнения тестов, если у вас есть задача автоматизации в рабочем процессе, которая требует обширных зависимостей, особых требований к лицензированию, таких как USB-аппаратный ключ для лицензии программного обеспечения, или другие потребности компьютера или программного обеспечения. Ваш компьютер может быть физическим компьютером, виртуальной машиной или контейнером. Средство выполнения можно разместить в центре обработки данных или в облаке.

В этой статье вы будете использовать виртуальную машину Windows, размещенную в Azure, которая будет настроена с конкретными требованиями PowerShell для Azure Stack Hub.

Инструкции по настройке, настройке и подключению локального средства выполнения тестов к репозиторию см. в документации GitHub " Сведения о локальных средствах выполнения тестов".

Подключенное локальное средство выполнения тестов

Запишите имя и теги локального средства выполнения тестов. Рабочий процесс в этой статье будет вызывать его с помощью тега self-hosted.

Добавление рабочего процесса в репозиторий

Создайте рабочий процесс, используя yaml в этом разделе, чтобы создать рабочий процесс.

  1. Откройте репозиторий GitHub.

  2. Выберите Действия.

  3. Создайте новый рабочий процесс.

    • Если это ваш первый рабочий процесс, выберите настроить рабочий процесс самостоятельно в разделе Выберите шаблон рабочего процесса.
    • Если у вас есть существующие рабочие процессы, выберите Создать рабочий процесс>Настроить рабочий процесс самостоятельно.
  4. В пути назовите файл workflow.yml.

  5. Скопируйте и вставьте 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
    
  6. Выберите Начать фиксацию.

  7. Добавьте заголовок фиксации и необязательные сведения, а затем выберите Зафиксировать новый файл.

При выполнении действия убедитесь, что оно успешно запущено.

  1. Откройте репозиторий GitHub. Рабочий процесс можно активировать, выполнив отправку в репозиторий.

  2. Выберите Действия.

  3. Выберите имя фиксации в разделе Все рабочие процессы.

    Просмотр сводки фиксации

  4. Выберите имя задания azurestack-test.

    Просмотр сведений о фиксации

  5. Разверните разделы, чтобы просмотреть возвращаемые значения для команд 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.

Дальнейшие действия