Uso de Docker para ejecutar PowerShell para Azure Stack Hub

Precaución

En este artículo se hace referencia a CentOS, una distribución de Linux que está cerca del estado Fin de vida (EOL). Tenga en cuenta su uso y plan según corresponda. Para obtener más información, consulte la guía de fin de vida de CentOS.

En este artículo, puede usar Docker para crear un contenedor en el que se ejecutará la versión de PowerShell necesaria para trabajar con las distintas interfaces. Puede encontrar instrucciones para usar tanto los módulos de AzureRM como los módulos de Az más recientes. AzureRM requiere un contenedor basado en Windows. Az usa un contenedor basado en Linux.

Requisitos previos de Docker

Instalación de Docker

  1. Instale Docker.

  2. En un programa de línea de comandos, como PowerShell o Bash, escriba:

    docker --version
    

Configurar una entidad de servicio para usar PowerShell

Para usar PowerShell para acceder a los recursos de Azure Stack Hub, necesita una entidad de servicio en el inquilino de Microsoft Entra. Los permisos se delegan con el control de acceso basado en rol de usuario (RBAC). Es posible que tenga que solicitar la entidad de servicio a su operador de nube.

  1. Para configurar la entidad de servicio, siga las instrucciones del artículo Creación de entidades de servicio para otorgar a las aplicaciones acceso a los recursos de Azure Stack Hub.

  2. Anote el identificador de aplicación, el secreto, el identificador del inquilino y el identificador del objeto para usarlos más tarde.

Ejecución de PowerShell en Docker

En estas instrucciones, ejecutará una imagen de contenedor basada en Linux que contenga PowerShell y los módulos necesarios para Azure Stack Hub.

  1. Debe ejecutar Docker con el contenedor de Linux. Cuando ejecute Docker, cambie a los contenedores de Linux.

  2. Ejecute Docker desde una máquina unida al mismo dominio que Azure Stack Hub. Si usa el Kit de desarrollo de Azure Stack (ASDK), deberá instalar la VPN en la máquina remota.

Instalación del módulo de Az de Azure Stack Hub en un contenedor de Linux

  1. Desde la línea de comandos, ejecute el siguiente comando de Docker para ejecutar PowerShell en un contenedor de Ubuntu:

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

    Puede ejecutar Ubuntu, Debian o CentOS. Puede encontrar los siguientes archivos de Docker en el repositorio de GitHub: azurestack-powershell. Consulte el repositorio de GitHub para ver los últimos cambios en los archivos de Docker. Cada sistema operativo está etiquetado. Reemplace la etiqueta, la sección después de los dos puntos, por la etiqueta del sistema operativo que desee.

    Linux Imagen de Docker
    Ubuntu docker run -it mcr.microsoft.com/azurestack/powershell:ubuntu-18.04
    Debian docker run -it mcr.microsoft.com/azurestack/powershell:debian-9
    CentOS docker run -it mcr.microsoft.com/azurestack/powershell:centos-7
  2. El shell está listo para los cmdlets. Para probar la conectividad de Shell, inicie sesión y ejecute Test-AzureStack.ps1.

    En primer lugar, cree las credenciales de la entidad de servicio. Necesitará el secreto y el identificador de aplicación. También necesitará el identificador de objeto al ejecutar Test-AzureStack.ps1 para comprobar el contenedor. Es posible que tenga que solicitar una entidad de servicio a su operador de nube.

    Escriba los siguientes cmdlets para crear un objeto de entidad de servicio:

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. Conéctese a su entorno mediante la ejecución del siguiente script con los siguientes valores de la instancia de Azure Stack Hub.

    Value Descripción
    El nombre del entorno. Nombre del entorno de Azure Stack Hub.
    Punto de conexión de Resource Manager Dirección URL de Resource Manager. Si no lo sabe, póngase en contacto con su operador de nube. Se parecerá a esta https://management.region.domain.com.
    Id. de inquilino del directorio El identificador del inquilino del directorio de Azure Stack Hub.
    Credential: Objeto que contiene la entidad de servicio. En este caso, $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell devuelve el objeto de cuenta.

  4. Pruebe el entorno ejecutando el script de Test-AzureStack.ps1 en el contenedor. Especifique el identificador de objeto de la entidad de servicio. Si no indica el identificador de objeto, el script se seguirá ejecutando, pero solo probará los módulos del inquilino (usuario) y se producirá un error en los módulos que requieren privilegios de administrador.

    ./Test-AzureStack.ps1 <Object ID>
    

Pasos siguientes