Partager via


Activer les extensions de machine virtuelle Azure à l’aide d’un modèle ARM

Cet article explique comment utiliser un modèle Azure Resource Manager (modèle ARM) pour déployer des extensions de machine virtuelle sur des serveurs avec Azure Arc (machines compatibles Avec Arc).

Pour déployer des extensions sur des serveurs avec Arc avec un modèle ARM, vous ajoutez des extensions au modèle et les exécutez avec le déploiement du modèle. Vous pouvez déployer les extensions sur des machines Linux ou Windows connectées à Azure Arc à l’aide d’Azure PowerShell.

Cet article explique comment déployer plusieurs extensions de machine virtuelle sur un serveur avec Arc à l’aide d’un fichier de modèle, ainsi qu’un fichier de paramètres distinct pour certaines extensions. Remplacez les exemples de valeurs dans les exemples par vos propres valeurs avant le déploiement.

Commandes de déploiement

Ces exemples de commandes PowerShell installent une extension sur tous les serveurs avec Arc connectés au sein d’un groupe de ressources, en fonction des informations contenues dans votre modèle ARM. La commande utilise le TemplateFile paramètre pour spécifier le modèle. Si un fichier de paramètres est requis, le TemplateParameterFile paramètre est inclus pour spécifier un fichier qui contient des paramètres et des valeurs de paramètre. Remplacez les espaces réservés par les valeurs appropriées pour votre déploiement.

Pour déployer un modèle ARM et un fichier de paramètres, utilisez la commande suivante, en remplaçant les exemples de valeurs par vos propres valeurs :

New-AzResourceGroupDeployment -ResourceGroupName "<resource-group-name>" -TemplateFile "<template-filename.json>" -TemplateParameterFile "<parameter-filename.json>"

Par exemple:

New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "D:\Azure\Templates\AzureMonitorAgent.json" -TemplateParameterFile "D:\Azure\Templates\AzureMonitorAgentParams.json"

Pour déployer un modèle ARM sans fichier de paramètres, utilisez la commande suivante, en remplaçant les exemples de valeurs par vos propres valeurs :

New-AzResourceGroupDeployment -ResourceGroupName "<resource-group-name>" -TemplateFile "<template-filename.json>"

Par exemple:

New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "D:\Azure\Templates\DependencyAgent.json"

Déployer l’extension de machine virtuelle de l’agent Azure Monitor

Pour déployer l’agent Azure Monitor sur un serveur avec Arc, utilisez l’un des exemples de modèles suivants pour installer l’agent sur Linux ou Windows.

Type de ressource

Toutes les extensions de machine virtuelle serveur avec Arc utilisent le type Microsoft.HybridCompute/machines/extensions de ressource (mappé à partir du type de ressource d’extension de machine virtuelle Azure).

Fichier de modèle d’agent Azure Monitor pour Linux (serveur avec Arc)

Paramètres

  • vmName (chaîne, exemple : myArcMachine)
  • location (chaîne, exemple : eastus)
  • workspaceId (chaîne, exemple : ID d’espace de travail Log Analytics)
  • workspaceKey (chaîne, exemple : clé primaire Log Analytics)
{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "workspaceId": {
            "type": "string"
        },
        "workspaceKey": {
            "type": "string"
        }
    },
    "resources": [
        {
            "name": "[concat(parameters('vmName'),'/AzureMonitorLinuxAgent')]",
            "type": "Microsoft.HybridCompute/machines/extensions",
            "location": "[parameters('location')]",
            "apiVersion": "2025-06-01",
            "properties": {
                "publisher": "Microsoft.Azure.Monitor",
                "type": "AzureMonitorLinuxAgent",
                "enableAutomaticUpgrade": true,
                "settings": {
                    "workspaceId": "[parameters('workspaceId')]"
                },
                "protectedSettings": {
                    "workspaceKey": "[parameters('workspaceKey')]"
                }
            }
        }
    ]
}

Fichier de modèle d’agent Azure Monitor pour Windows (serveur avec Arc)

Paramètres

  • vmName (chaîne, exemple : myArcMachine)
  • location (chaîne, exemple : eastus)
  • workspaceId (chaîne, exemple : ID d’espace de travail Log Analytics)
  • workspaceKey (chaîne, exemple : clé primaire Log Analytics)
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "workspaceId": {
            "type": "string"
        },
        "workspaceKey": {
            "type": "string"
        }
    },
    "resources": [
        {
            "name": "[concat(parameters('vmName'),'/AzureMonitorWindowsAgent')]",
            "type": "Microsoft.HybridCompute/machines/extensions",
            "location": "[parameters('location')]",
            "apiVersion": "2025-06-01",
            "properties": {
                "publisher": "Microsoft.Azure.Monitor",
                "type": "AzureMonitorWindowsAgent",
                "autoUpgradeMinorVersion": true,
                "enableAutomaticUpgrade": true,
                "settings": {
                    "workspaceId": "[parameters('workspaceId')]"
                },
                "protectedSettings": {
                    "workspaceKey": "[parameters('workspaceKey')]"
                }
            }
        }
    ]
}

Fichier de paramètres de l’agent Azure Monitor (serveur avec Arc)

Ce fichier de paramètres peut être utilisé pour Linux et Windows.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "value": "<vmName>"
        },
        "location": {
            "value": "<region>"
        },
        "workspaceId": {
            "value": "<MyWorkspaceID>"
        },
        "workspaceKey": {
            "value": "<MyWorkspaceKey>"
        }
    }
}

Enregistrez le modèle et le fichier de paramètres, puis modifiez le fichier de paramètres avec les valeurs appropriées pour votre déploiement.

Déployer l’agent Azure Monitor

  1. Conditions préalables : le serveur avec Arc est connecté et un espace de travail Log Analytics existe.
  2. Déployer :
    New-AzResourceGroupDeployment -ResourceGroupName "<resource-group-name>" -TemplateFile "AzureMonitorAgent.json" -TemplateParameterFile "AzureMonitorAgentParams.json"
    
  3. Vérifiez : dans le portail Azure, vérifiez que l’état de l’extension est Réussi sur le serveur avec Arc.

Déployer l’extension de script personnalisé

Pour utiliser l’extension de script personnalisé sur un serveur avec Arc, déployez l’un des exemples de modèles suivants pour Linux ou Windows. Pour plus d’informations, consultez Extension de script personnalisé pour Linux ou Extension de script personnalisé pour Windows.

Fichier de modèle d’extension de script personnalisé pour Linux (serveur avec Arc)

Paramètres

  • vmName (chaîne, exemple : myArcMachine)
  • location (chaîne, exemple : eastus)
  • fileUris (tableau, exemple : URL de script)
  • commandToExecute (securestring, exemple : sh script.sh)
{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string"
    },
    "location": {
      "type": "string"
    },
    "fileUris": {
      "type": "array"
    },
    "commandToExecute": {
      "type": "securestring"
    }
  },
  "resources": [
    {
      "name": "[concat(parameters('vmName'),'/CustomScript')]",
      "type": "Microsoft.HybridCompute/machines/extensions",
      "location": "[parameters('location')]",
      "apiVersion": "2025-06-01",
      "properties": {
        "publisher": "Microsoft.Azure.Extensions",
        "type": "CustomScript",
        "autoUpgradeMinorVersion": true,
        "settings": {},
        "protectedSettings": {
          "commandToExecute": "[parameters('commandToExecute')]",
          "fileUris": "[parameters('fileUris')]"
        }
      }
    }
  ]
}

Fichier de modèle de script personnalisé pour Windows (serveur avec Arc)

Paramètres

  • vmName (chaîne, exemple : myArcMachine)
  • location (chaîne, exemple : eastus)
  • fileUris (chaîne, exemple : URL de script)
  • arguments (securestring, facultatif, exemple : -Param1 Value1)
{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "fileUris": {
            "type": "string"
        },
        "arguments": {
            "type": "securestring",
            "defaultValue": " "
        }
    },
    "variables": {
        "UriFileNamePieces": "[split(parameters('fileUris'), '/')]",
        "firstFileNameString": "[variables('UriFileNamePieces')[sub(length(variables('UriFileNamePieces')), 1)]]",
        "firstFileNameBreakString": "[split(variables('firstFileNameString'), '?')]",
        "firstFileName": "[variables('firstFileNameBreakString')[0]]"
    },
    "resources": [
        {
            "name": "[concat(parameters('vmName'),'/CustomScriptExtension')]",
            "type": "Microsoft.HybridCompute/machines/extensions",
            "location": "[parameters('location')]",
            "apiVersion": "2022-03-10",
            "properties": {
                "publisher": "Microsoft.Compute",
                "type": "CustomScriptExtension",
                "autoUpgradeMinorVersion": true,
                "settings": {
                    "fileUris": "[split(parameters('fileUris'), ' ')]"
                },
                "protectedSettings": {
                    "commandToExecute": "[concat ('powershell -ExecutionPolicy Unrestricted -File ', variables('firstFileName'), ' ', parameters('arguments'))]"
                }
            }
        }
    ]
}

Déployer une extension de script personnalisé

  1. Conditions préalables : Fichiers de script accessibles à partir du serveur avec Arc.
  2. Déployer :
    New-AzResourceGroupDeployment -ResourceGroupName "<resource-group-name>" -TemplateFile "CustomScript.json"
    

Déployer l’extension Dependency Agent

Utilisez les modèles suivants pour déployer Dependency Agent sur une machine Linux ou Windows compatible avec Arc.

Fichier de modèle Dependency Agent pour Linux (serveur avec Arc)

Paramètres

  • vmName (chaîne, exemple : myArcMachine)
{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string"
    }
  },
  "resources": [
    {
      "type": "Microsoft.HybridCompute/machines/extensions",
      "name": "[concat(parameters('vmName'),'/DAExtension')]",
      "apiVersion": "2025-06-01",
      "location": "[resourceGroup().location]",
      "properties": {
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentLinux",
        "enableAutomaticUpgrade": true
      }
    }
  ]
}

Fichier de modèle Dependency Agent pour Windows (serveur avec Arc)

Paramètres

  • vmName (chaîne, exemple : myArcMachine)
{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vmName": {
      "type": "string",
      "metadata": {
        "description": "The name of existing Windows machine."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.HybridCompute/machines/extensions",
      "name": "[concat(parameters('vmName'),'/DAExtension')]",
      "apiVersion": "2022-03-10",
      "location": "[resourceGroup().location]",
      "dependsOn": [
      ],
      "properties": {
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "enableAutomaticUpgrade": true
      }
    }
  ],
  "outputs": {
  }
}

Déployer Dependency Agent

  1. Conditions préalables : Azure Monitor activé pour le serveur avec Arc.
  2. Déployer :
    New-AzResourceGroupDeployment -ResourceGroupName "<resource-group-name>" -TemplateFile "DependencyAgent.json"
    
  3. Vérifiez : dans le portail Azure, vérifiez que l’état de l’extension est Réussi sur le serveur avec Arc.

Déployer l’extension Azure Key Vault

Le code JSON suivant montre le schéma de l’extension Azure Key Vault. Cette extension ne nécessite pas de paramètres protégés, car tous ses paramètres sont considérés comme des informations publiques. L’extension nécessite une liste des certificats surveillés, la fréquence d’interrogation et le magasin de certificats de destination.

Fichier de modèle Azure Key Vault pour Linux (serveur avec Arc)

Paramètres

  • vmName (chaîne, exemple : myArcMachine)
  • location (chaîne, exemple : eastus)
  • autoUpgradeMinorVersion (bool, exemple : true)
  • pollingIntervalInS (int, exemple : 3600)
  • certificateStoreName (chaîne, ignorée sur Linux)
  • certificateStoreLocation (chaîne, exemple : /var/lib/waagent/Microsoft.Azure.KeyVault)
  • observedCertificates (chaîne, exemple : URI de certificat Key Vault)
  • msiEndpoint (chaîne, exemple : http://localhost:40342/metadata/identity)
  • msiClientId (chaîne, exemple : ID client d’identité managée)
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "autoUpgradeMinorVersion":{
            "type": "bool"
        },
        "pollingIntervalInS":{
          "type": "int"
        },
        "certificateStoreName":{
          "type": "string"
        },
        "certificateStoreLocation":{
          "type": "string"
        },
        "observedCertificates":{
          "type": "string"
        },
        "msiEndpoint":{
          "type": "string"
        },
        "msiClientId":{
          "type": "string"
        }
},
"resources": [
   {
      "type": "Microsoft.HybridCompute/machines/extensions",
      "name": "[concat(parameters('vmName'),'/KVVMExtensionForLinux')]",
      "apiVersion": "2022-03-10",
      "location": "[parameters('location')]",
      "properties": {
      "publisher": "Microsoft.Azure.KeyVault",
      "type": "KeyVaultForLinux",
      "enableAutomaticUpgrade": true,
      "settings": {
          "secretsManagementSettings": {
          "pollingIntervalInS": <polling interval in seconds, e.g. "3600">,
          "certificateStoreName": <ignored on linux>,
          "certificateStoreLocation": <disk path where certificate is stored, default: "/var/lib/waagent/Microsoft.Azure.KeyVault">,
          "observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: "https://myvault.vault.azure.net/secrets/mycertificate"
          },
          "authenticationSettings": {
                "msiEndpoint":  "http://localhost:40342/metadata/identity"
        }
      }
    }
  }
 ]
}

Fichier de modèle Azure Key Vault pour Windows (serveur avec Arc)

Paramètres

  • vmName (chaîne, exemple : myArcMachine)
  • location (chaîne, exemple : eastus)
  • autoUpgradeMinorVersion (bool, exemple : true)
  • pollingIntervalInS (int, exemple : 3600)
  • certificateStoreName (chaîne, exemple : MY)
  • linkOnRenewal (bool, exemple : false)
  • certificateStoreLocation (chaîne, exemple : LocalMachine)
  • requireInitialSync (bool, exemple : true)
  • observedCertificates (chaîne, exemple : URI de certificat Key Vault)
  • msiEndpoint (chaîne, exemple : http://localhost:40342/metadata/identity)
  • msiClientId (chaîne, exemple : ID client d’identité managée)
{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "vmName": {
            "type": "string"
        },
        "location": {
            "type": "string"
        },
        "autoUpgradeMinorVersion":{
            "type": "bool"
        },
        "pollingIntervalInS":{
          "type": "int"
        },
        "certificateStoreName":{
          "type": "string"
        },
        "linkOnRenewal":{
          "type": "bool"
        },
        "certificateStoreLocation":{
          "type": "string"
        },
        "requireInitialSync":{
          "type": "bool"
        },
        "observedCertificates":{
          "type": "string"
        },
        "msiEndpoint":{
          "type": "string"
        },
        "msiClientId":{
          "type": "string"
        }
},
"resources": [
   {
      "type": "Microsoft.HybridCompute/machines/extensions",
      "name": "[concat(parameters('vmName'),'/KVVMExtensionForWindows')]",
      "apiVersion": "2022-03-10",
      "location": "[parameters('location')]",
      "properties": {
      "publisher": "Microsoft.Azure.KeyVault",
      "type": "KeyVaultForWindows",
      "enableAutomaticUpgrade": true,
      "settings": {
        "secretsManagementSettings": {
          "pollingIntervalInS": "3600",
          "certificateStoreName": <certificate store name, e.g.: "MY">,
          "linkOnRenewal": <Only Windows. This feature ensures s-channel binding when certificate renews, without necessitating a re-deployment.  e.g.: false>,
          "certificateStoreLocation": <certificate store location, currently it works locally only e.g.: "LocalMachine">,
          "requireInitialSync": <initial synchronization of certificates e.g.: true>,
          "observedCertificates": <list of KeyVault URIs representing monitored certificates, e.g.: "https://myvault.vault.azure.net"
        },
        "authenticationSettings": {
                "msiEndpoint": "http://localhost:40342/metadata/identity"
        }
      }
    }
  }
 ]
}

Remarque

Les URL des certificats que vous avez observés doivent être au format https://myVaultName.vault.azure.net/secrets/myCertName. La raison est que le chemin /secrets renvoie le certificat complet, y compris la clé privée, alors que le chemin /certificates ne le fait pas. Pour plus d’informations sur les certificats, consultez la vue d’ensemble des clés, des secrets et des certificats Azure Key Vault.

Enregistrez le modèle et modifiez le cas échéant pour votre environnement. Installez ensuite l’extension Azure Key Vault sur vos machines connectées en exécutant la commande de déploiement PowerShell trouvée précédemment dans cet article.

Conseil / Astuce

L’extension Azure Key Vault nécessite l’attribution d’une identité affectée par le système pour s’authentifier auprès de Key Vault. Pour plus d’informations, consultez S’authentifier auprès des ressources Azure avec des serveurs avec Azure Arc.