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


Использование Docker для запуска PowerShell для Azure Stack Hub

В этой статье вы можете использовать Docker для создания контейнера, на котором выполняется версия PowerShell, необходимая для работы с различными интерфейсами. Инструкции по использованию модулей AzureRM и последних модулей Az можно найти. Для AzureRM требуется контейнер на основе Windows. Az использует контейнер на основе Linux.

Необходимые условия для Docker

Установите Docker.

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

  2. В программе командной строки, например PowerShell или Bash, введите следующее:

    docker --version
    

Создание субъекта-службы для использования PowerShell

Чтобы использовать PowerShell для доступа к ресурсам в Azure Stack Hub, вам потребуется субъект-служба в клиенте Microsoft Entra. Вы можете делегировать разрешения с помощью управления доступом на основе ролей пользователей. Возможно, вам потребуется запросить субъект-службу от оператора облака.

  1. См. подробнее о предоставлении приложениям доступа к ресурсам Azure Stack Hub путем создания субъектов-служб.

  2. Обратите внимание на идентификатор приложения, секрет, идентификатор клиента и идентификатор объекта для последующего использования.

Запуск PowerShell в Docker

В этих инструкциях вы запустите образ контейнера под управлением Linux, содержащий PowerShell и необходимые модули для Azure Stack Hub.

  1. Необходимо запустить Docker с помощью контейнера Linux. При запуске Docker переключитесь на контейнеры Linux.

  2. Запустите Docker с компьютера, присоединенного к тому же домену, что и Azure Stack Hub. Если вы используете Пакет средств разработки Azure Stack, установите VPN на удаленном компьютере.

Установка модуля Azure Stack Hub Az в контейнере Linux

  1. В командной строке выполните следующую команду Docker, чтобы запустить PowerShell в контейнере Ubuntu:

    docker run -it mcr.microsoft.com/azurestack/powershell
    

    Вы можете запустить Ubuntu или Debian. Следующие файлы Docker можно найти в репозитории GitHub, azurestack-powershell. Сведения о последних изменениях в файлах Docker см. в репозитории GitHub. Каждая ОС помечена тегом. Замените тег, раздел после двоеточия, тегом для требуемой ОС.

    Linux Образ Docker
    Ubuntu docker run -it mcr.microsoft.com/azurestack/powershell:ubuntu-18.04
    Debian docker run -it mcr.microsoft.com/azurestack/powershell:debian-9
  2. Оболочка готова для командлетов. Проверьте подключение оболочки, выполнив вход и выполнив команду Test-AzureStack.ps1.

    Сначала создайте учетные данные субъекта-службы. Вам потребуется идентификатор секрета и приложения. При выполнении Test-AzureStack.ps1 проверка контейнера также потребуется идентификатор объекта. Возможно, вам потребуется запросить субъект-службу от оператора облака.

    Введите следующие командлеты, чтобы создать объект принципа службы:

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. Подключение в среду, выполнив следующий скрипт со следующими значениями из экземпляра Azure Stack Hub.

    значение Описание
    Имя среды. Имя среды Azure Stack Hub.
    Конечная точка Resource Manager URL-адрес диспетчера ресурсов. Обратитесь к оператору облака, если вы не знаете его. Он должен иметь примерно следующий вид: https://management.region.domain.com.
    Идентификатор клиента каталога Идентификатор каталога клиента Azure Stack Hub.
    Подтверждение компетенции Объект, содержащий субъект-службу. В этом случае $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell возвращает объект учетной записи.

  4. Протестируйте среду, выполнив Test-AzureStack.ps1 скрипт в контейнере. Укажите идентификатор объекта субъекта-службы. Если идентификатор объекта не указан, скрипт по-прежнему будет выполняться, но он будет просто тестировать модули клиента (пользователя) и завершать сбой модулей, требующих прав администратора.

    ./Test-AzureStack.ps1 <Object ID>
    

Следующие шаги