Utiliser Docker pour exécuter PowerShell pour Azure Stack Hub

Dans cet article, vous pouvez utiliser Docker pour créer un conteneur sur lequel exécuter la version de PowerShell nécessaire pour utiliser les différentes interfaces. Des instructions relatives à l’utilisation des modules AzureRM et des tout derniers modules Az sont disponibles. AzureRM nécessite un conteneur Windows. Az utilise un conteneur Linux.

Prérequis pour Docker

Installation de Docker

  1. Installez Docker.

  2. Dans un programme en ligne de commande, tel que PowerShell ou Bash, entrez :

    docker --version
    

Configurer un principal de service pour l’utilisation de PowerShell

Pour utiliser PowerShell pour accéder aux ressources dans Azure Stack Hub, vous avez besoin d’un principal de service dans votre locataire Microsoft Entra. Vous déléguez des autorisations avec contrôle d’accès en fonction du rôle (RBAC) utilisateur. Vous devrez peut-être demander le principal de service à votre opérateur cloud.

  1. Pour configurer votre principal de service, suivez les instructions dans Permettre à des applications d’accéder à des ressources Azure Stack Hub en créant des principaux de service.

  2. Notez l’ID d’application, le secret, votre ID de locataire et l’ID d’objet pour les utiliser ultérieurement.

Exécuter PowerShell dans Docker

Dans ces instructions, vous allez exécuter une image de conteneur Linux qui contient PowerShell et les modules nécessaires pour Azure Stack Hub.

  1. Vous devez exécuter Docker au moyen d’un conteneur Linux. Lors de l’exécution de Docker, basculez vers les conteneurs Linux.

  2. Exécutez Docker depuis une machine jointe au même domaine qu’Azure Stack Hub. Si vous utilisez le kit de développement Azure Stack (ASDK), vous devez installer le VPN sur votre machine distante.

Installer le module Az d’Azure Stack Hub sur un conteneur Linux

  1. À partir de votre ligne de commande, exécutez la commande Docker suivante pour exécuter PowerShell dans un conteneur Ubuntu :

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

    Vous pouvez exécuter Ubuntu, Debian ou Centos. Les fichiers Docker suivants sont disponibles dans le dépôt GitHub, azurestack-powershell. Consultez le dépôt GitHub pour obtenir les dernières modifications apportées aux fichiers Docker. Chaque système d’exploitation est marqué. Remplacez l’étiquette, la partie après les deux-points, par l’étiquette du système d’exploitation souhaité.

    Linux Image 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. L’interpréteur de commandes est prêt pour vos applets de commande. Testez la connectivité de l’interpréteur de commandes en vous connectant, puis en exécutant Test-AzureStack.ps1.

    Tout d’abord, créez les informations d’identification du principal de service. Vous aurez besoin du secret et de l’ID d’application. Vous aurez également besoin de l’ID d’objet lors de l’exécution de Test-AzureStack.ps1 pour vérifier votre conteneur. Vous devrez peut-être demander un principal de service à votre opérateur cloud.

    Tapez les applets de commande suivantes pour créer un objet principal de service :

    $passwd = ConvertTo-SecureString <Secret> -AsPlainText -Force
    $pscredential = New-Object System.Management.Automation.PSCredential('<ApplicationID>', $passwd)
    
  3. Connectez-vous à votre environnement en exécutant le script ci-après avec les valeurs suivantes, depuis votre instance Azure Stack Hub.

    Valeur Description
    Nom de l’environnement. Nom de votre environnement Azure Stack Hub.
    Point de terminaison Resource Manager URL pour Resource Manager. Contactez votre opérateur cloud si vous ne la connaissez pas. Elle ressemble à ceci : https://management.region.domain.com
    ID d’annuaire du locataire ID de votre annuaire de locataire Azure Stack Hub.
    Informations d'identification Objet contenant votre principal de service. En l’occurrence, $pscredential.
    ./Login-Environment.ps1 -Name <String> -ResourceManagerEndpoint <resource manager endpoint> -DirectoryTenantId <String> -Credential $pscredential
    

    PowerShell retourne votre objet de compte.

  4. Testez votre environnement en exécutant le script Test-AzureStack.ps1 dans le conteneur. Spécifiez l’ID d’objet du principal de service. Si vous n’indiquez pas l’ID d’objet, le script s’exécutera malgré tout, mais il testera uniquement les modules (utilisateur) du locataire et échouera sur les modules qui nécessitent des privilèges d’administrateur.

    ./Test-AzureStack.ps1 <Object ID>
    

Étapes suivantes