Partager via


Planification de la migration d’Azure Automation State Configuration vers la configuration de machine

Remarque

Azure Automation State Configuration sera mise hors service le 30 septembre 2027. Veuillez passer à Azure Machine Configuration avant cette date. Pour en savoir plus, consultez l’annonce du billet de blog. Le service Azure Machine Configuration combine les fonctionnalités d’Extension DSC, d’Azure Automation State Configuration, ainsi que les fonctionnalités les plus couramment demandées selon les commentaires des clients. Azure Machine Configuration inclut également la prise en charge des ordinateurs hybrides via des serveurs avec Arc.

La configuration de la machine est la dernière implémentation des fonctionnalités fournies par Azure Automation State Configuration (également appelé Azure Automation Desired State Configuration ou AADSC). Dans la mesure du possible, vous devez planifier le déplacement de votre contenu et de vos machines vers le nouveau service. Cet article fournit des conseils sur le développement d’une stratégie de migration d’Azure Automation vers la configuration de la machine.

Les nouvelles fonctionnalités de la configuration d'ordinateur répondent aux demandes des clients :

  • Augmentation de la limite de taille pour les configurations à 100 Mo
  • Rapports avancés grâce à Azure Resource Graph, y compris l'ID et l'état des ressources
  • Possibilité de gérer plusieurs configurations pour la même machine
  • Possibilité de contrôler à quel moment la correction a lieu lors les machines dérivent de l’état souhaité
  • Ressources DSC basées sur PowerShell pour Linux et Windows

Avant de commencer, il est judicieux de lire les informations conceptuelles sur la page Configuration de machine d’Azure Policy.

Comprendre la migration

La meilleure approche de la migration consiste à redéployer le contenu en premier, puis à migrer les machines. Cette section décrit les étapes attendues pour la migration.

  1. Exporter des configurations à partir d’Azure Automation
  2. Découvrir les exigences des modules et les charger dans votre environnement
  3. Compiler les configurations
  4. Créer des packages de configuration de machine et les publier
  5. Tester les packages de configuration de machine
  6. Intégrer des machines hybrides à Azure Arc
  7. Désinscrire des serveurs d’Azure Automation State Configuration
  8. Attribuer les configurations aux serveurs à l’aide de la configuration de machine

La configuration de machine utilise DSC version 2 avec PowerShell version 7. DSC version 3 peut coexister avec des versions plus anciennes de DSC sous Windows et Linux. Les implémentations sont séparées. Toutefois, il n’y a aucune détection de conflit.

La configuration de machine ne nécessite pas la publication de modules ou de configurations dans un service, ni la compilation dans un service. Au lieu de cela, vous développez et testez le contenu à l’aide d’outils spécialement conçus et le publiez partout où l’ordinateur peut accéder via HTTPS (généralement Stockage Blob Azure).

Si vous décidez de disposer d’ordinateurs dans les deux services pendant un certain temps, il n’y a aucun obstacle technique à cela. Les deux services sont indépendants.

Exporter du contenu à partir d’Azure Automation

Commencez par découvrir et exporter le contenu d’Azure Automation State Configuration dans un environnement de développement dans lequel vous créez, testez et publiez des packages de contenu pour la configuration d’ordinateur.

Configurations

Vous ne pouvez exporter des scripts de configuration qu’à partir d’Azure Automation. Il n’est pas possible d’exporter des configurations de nœud ni des fichiers MOF compilés. Si vous avez publié des fichiers MOF directement dans le compte Automation et que vous n’avez plus accès au fichier d’origine, vous devez exécuter une recompilation à partir de vos scripts de configuration privés. Si vous ne trouvez pas la configuration d’origine, vous devez la recréer.

Pour exporter des scripts de configuration à partir d’Azure Automation, identifiez d’abord le compte Azure Automation contenant les configurations, ainsi que le nom du groupe de ressources dans lequel le compte Automation est déployé.

Installez le module PowerShell AZ.Automation.

Install-Module -Name Az.Automation

Ensuite, utilisez la commande Get-AzAutomationAccount pour identifier vos comptes Automation et le groupe de ressources dans lequel ils sont déployés. Les propriétés ResourceGroupName et AutomationAccountName sont importantes pour les étapes suivantes.

Get-AzAutomationAccount
SubscriptionId        : <your-subscription-id>
ResourceGroupName     : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location              : centralus
State                 :
Plan                  :
CreationTime          : 6/30/2021 11:56:17 AM -05:00
LastModifiedTime      : 6/30/2021 11:56:17 AM -05:00
LastModifiedBy        :
Tags                  : {}

Découvrez les configurations dans votre compte Automation. La sortie contient une entrée par configuration. Si vous en avez plusieurs, stockez les informations en tant que variable pour faciliter leur utilisation.

$getParams = @{
    ResourceGroupName     = '<your-resource-group-name>'
    AutomationAccountName = '<your-automation-account-name>'
}

Get-AzAutomationDscConfiguration @getParams
ResourceGroupName     : <your-resource-group-name>
AutomationAccountName : <your-automation-account-name>
Location              : centralus
State                 : Published
Name                  : <your-configuration-name>
Tags                  : {}
CreationTime          : 6/30/2021 12:18:26 PM -05:00
LastModifiedTime      : 6/30/2021 12:18:26 PM -05:00
Description           :
Parameters            : {}
LogVerbose            : False

Enfin, exportez chaque configuration dans un fichier de script local à l’aide de la commande Export-AzAutomationDscConfiguration. Le nom de fichier résultant utilise le modèle \ConfigurationName.ps1.

$exportParams = @{
    OutputFolder          = '<location-on-your-machine>'
    ResourceGroupName     = '<your-resource-group-name>'
    AutomationAccountName = '<your-automation-account-name>'
    Name                  = '<your-configuration-name>'
}
Export-AzAutomationDscConfiguration @exportParams
UnixMode   User             Group                 LastWriteTime           Size Name
--------   ----             -----                 -------------           ---- ----
                                               12/31/1600 18:09

Exporter des configurations à l’aide du pipeline PowerShell

Vous pouvez exporter toutes vos configurations vers un dossier local de votre machine. Pour automatiser ce processus, dirigez la sortie de chaque commande dans les exemples précédents vers la commande suivante.

L’exemple suivant exporte cinq configurations. Le modèle de sortie est le seul indicateur de réussite.

Get-AzAutomationAccount |
    Get-AzAutomationDscConfiguration |
    Export-AzAutomationDSCConfiguration -OutputFolder <location on your machine>
UnixMode   User             Group                 LastWriteTime           Size Name
--------   ----             -----                 -------------           ---- ----
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09
                                               12/31/1600 18:09

Envisager de décomposer les fichiers de configuration complexes

La configuration d’ordinateur peut gérer plusieurs configurations par ordinateur. De nombreuses configurations écrites pour Azure Automation State Configuration supposaient la limitation de la gestion d’une seule configuration par machine. Pour tirer parti des fonctionnalités étendues offertes par la configuration d’ordinateur, vous pouvez diviser les fichiers de configuration volumineux en plusieurs configurations plus petites, chacune gérant un scénario spécifique.

Il n’y a pas d’orchestration dans la configuration de machine pour contrôler l’ordre de tri des configurations. Conservez les étapes d’une configuration dans un package si elles doivent se produire de manière séquentielle.

Modules

Il n’est pas possible d’exporter des modules à partir d’Azure Automation ni de mettre automatiquement en corrélation les configurations qui nécessitent tel ou tel module ou version. Les modules doivent être dans votre environnement local pour que vous puissiez créer un nouveau package de configuration de machine. Pour créer une liste des modules dont vous avez besoin pour la migration, utilisez PowerShell pour interroger Azure Automation concernant le nom et la version des modules.

Si vous utilisez des modules personnalisés qui n’existent que dans votre environnement de développement privé, il n’est pas possible de les exporter à partir d’Azure Automation.

Si un module requis est manquant pour une configuration et dans le compte, vous ne pouvez pas compiler la configuration. Par conséquent, vous ne pouvez pas migrer la configuration.

Répertorier les modules importés dans Azure Automation

Pour récupérer la liste de tous les modules installés dans votre compte Automation, utilisez la commande Get-AzAutomationModule. La propriété IsGlobal vous indique si le module est toujours intégré à Azure Automation, ou s’il a été publié sur le compte.

Par exemple, pour créer une liste de tous les modules publiés sur l’un de vos comptes.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $false

Vous pouvez également utiliser PowerShell Gallery pour vous aider à trouver des détails sur les modules qui sont disponibles publiquement. L’exemple suivant répertorie les modules qui sont intégrés aux nouveaux comptes Automation et qui contiennent des ressources DSC.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $true |
    Find-Module -ErrorAction SilentlyContinue |
    Where-Object {'' -ne $_.Includes.DscResource} |
    Select-Object -Property Name, Version -Unique |
    Format-Table -AutoSize
Name                       Version
----                       -------
AuditPolicyDsc             1.4.0
ComputerManagementDsc      8.4.0
PSDscResources             2.12.0
SecurityPolicyDsc          2.10.0
xDSCDomainjoin             1.2.23
xPowerShellExecutionPolicy 3.1.0.0
xRemoteDesktopAdmin        1.1.0.0

Si les modules ont été importés à partir de PowerShell Gallery, vous pouvez diriger la sortie de Find-Module directement vers Install-Module. La redirection de la sortie entre les commandes est une solution qui permet de charger un environnement de développement avec tous les modules actuellement dans un compte Automation qui sont accessibles dans PowerShell Gallery.

Vous pouvez utiliser la même approche pour extraire des modules à partir d’un flux NuGet personnalisé. Vous devez inscrire le flux dans votre environnement local en tant que référentiel PowerShellGet.

Dans cet exemple, la commande Find-Module ne supprime pas les erreurs, ce qui signifie que tous les modules introuvables dans la galerie renvoient un message d’erreur.

Get-AzAutomationAccount |
    Get-AzAutomationModule |
    Where-Object IsGlobal -eq $false |
    Find-Module |
    Where-Object { '' -ne $_.Includes.DscResource } |
    Install-Module

Inspection des scripts de configuration pour les exigences des modules

Après votre exportation des scripts de configuration à partir d’Azure Automation, vous pouvez consulter le contenu pour découvrir plus d’informations sur les modules requis pour compiler chaque configuration dans un fichier .mof. Cette approche n’est nécessaire que si vous trouvez des configurations dans vos comptes Automation dans lesquelles des modules sont manquants. Les configurations ne sont plus utiles pour les machines, mais elles peuvent toujours figurer dans le compte.

Vers le haut de chaque fichier, recherchez une ligne qui inclut Import-DscResource. Cette commande s’applique uniquement à l’intérieur d’une configuration et est utilisée pour charger les modules au moment de la compilation.

Par exemple, la configuration WindowsIISServerConfig dans PowerShell Gallery contient les lignes de cet exemple.

configuration WindowsIISServerConfig
{

Import-DscResource -ModuleName @{ModuleName = 'xWebAdministration';ModuleVersion = '1.19.0.0'}
Import-DscResource -ModuleName 'PSDesiredStateConfiguration'

La configuration nécessite que vous disposiez du module xWebAdministration version 1.19.0.0 et du module PSDesiredStateConfiguration.

Tester le contenu dans la configuration de machine Azure

Pour évaluer si vous pouvez utiliser votre contenu provenant d’Azure Automation State Configuration pour une configuration de machine, suivez le tutoriel pas à pas dans Guide pratique pour créer des artefacts de package de configuration de machine personnalisés.

Quand vous atteignez l’étape Créer une configuration, le script de configuration qui génère un fichier MOF doit être l’un de ceux que vous avez exportés à partir d’Azure Automation State Configuration. Vous devez avoir installé les modules PowerShell nécessaires dans votre environnement pour pouvoir compiler la configuration dans un fichier MOF et créer un package de configuration de la machine.

Que se passe-t-il si un module ne fonctionne pas avec la configuration d'ordinateur ?

Certains modules peuvent rencontrer des problèmes de compatibilité avec la configuration d’ordinateur. Les problèmes les plus courants sont liés à .NET Framework et à .NET Core. Des informations techniques détaillées sont disponibles sur la page, Différences entre Windows PowerShell 5.1 et PowerShell 7.x.

Pour résoudre des problèmes de compatibilité, vous pouvez exécuter des commandes dans Windows PowerShell à partir d’un module importé dans PowerShell 7, en exécutant powershell.exe. Vous pouvez consulter un exemple de module qui utilise cette technique dans le référentiel Azure-Policy où il est utilisé pour auditer l’état de Windows DSC Configuration.

L’exemple illustre également une petite preuve de concept.

# example function that could be loaded from module
function New-TaskResolvedInPWSH7 {
    # runs the fictitious command 'Get-myNotCompatibleCommand' in Windows PowerShell
    $compatObject = & powershell.exe -NoProfile -NonInteractive -Command {
        Get-myNotCompatibleCommand
    }
    # resulting object can be used in PowerShell 7
    return $compatObject
}

Dois-je ajouter la propriété Reasons à Get-TargetResource dans tous les modules que je migre ?

L’implémentation de la propriété Reasons offre une meilleure expérience lors de l’affichage des résultats d’une affectation de configuration à partir du portail Azure. Si la méthode Get d’un module n’inclut pas la propriété « Reasons », la sortie générique est retournée avec les détails des propriétés retournées par la méthode Get. Par conséquent, cette propriété est facultative pour la migration.

virtuelles

Azure Automation State Configuration est disponible à la fois pour les machines virtuelles dans Azure et les machines hybrides en dehors d’Azure. Vous devez planifier chacun de ces scénarios à l’aide de différentes étapes.

Machines virtuelles Azure

Les machines virtuelles Azure disposent déjà d’une ressource dans Azure. Cela signifie qu’elles sont prêtes pour les attributions de configuration de machine qui les associent à une configuration. Les tâches de haut niveau pour la migration des machines virtuelles Azure consistent à les supprimer d’Azure Automation State Configuration, puis à affecter des configurations à l’aide de la configuration de machine.

Pour supprimer une machine d’Azure Automation State Configuration, suivez les étapes de la page Comment supprimer une configuration et un nœud d’Automation State Configuration.

Pour affecter des configurations en tirant parti de la configuration de machine, suivez la procédure décrite dans les guides de démarrage rapide Azure Policy, comme Démarrage rapide : Créer une attribution de stratégie pour identifier les ressources non conformes. À l’étape 6 lors de la sélection d’une définition de stratégie, choisissez la définition qui applique une configuration que vous avez migrée à partir d’Azure Automation State Configuration.

Machines hybrides

Les machines en dehors d’Azure peuvent être inscrites à Azure Automation State Configuration, mais elles n’ont pas de ressource de machine dans Azure. Le service Local Configuration Manager (LCM) à l’intérieur de l’ordinateur gère la connexion à Azure Automation. L’enregistrement du nœud est géré en tant que ressource dans le type de fournisseur Azure Automation.

Avant de supprimer une machine d’Azure Automation State Configuration, intégrez chaque nœud en tant que serveur Azure Arc. L’intégration à Azure Arc crée une ressource d’ordinateur dans Azure afin qu’Azure Policy puisse gérer l’ordinateur. La machine peut être intégrée à Azure Arc à tout moment, mais vous pouvez utiliser Azure Automation State Configuration pour automatiser le processus.

Résolution des problèmes lors de l’exportation de contenu

Vous trouverez des détails sur les problèmes connus dans cette section.

L’exportation de configurations entraîne l’insertion du caractère « \ » dans le nom du fichier

Lorsque vous utilisez PowerShell sur macOS et Linux, il est possible que vous rencontriez des problèmes liés aux noms de fichiers générés par Export-AzAutomationDSCConfiguration.

Installez le module AADSCConfigContent de PowerShell Gallery comme solution de contournement. Le module a une commande qui exporte le contenu d’une configuration stockée dans Azure Automation en créant une requête REST au service.

Étapes suivantes