Azure VM-extensies inschakelen met behulp van een ARM-sjabloon
In dit artikel leest u hoe u een Arm-sjabloon (Azure Resource Manager) gebruikt om extensies voor virtuele Azure-machines (VM's) te implementeren die worden ondersteund door servers met Azure Arc.
U kunt VM-extensies toevoegen aan een ARM-sjabloon en deze uitvoeren met de implementatie van de sjabloon. Met de VM-extensies die worden ondersteund door servers met Azure Arc, kunt u de extensies implementeren op Linux- of Windows-computers met behulp van Azure PowerShell. Elk voorbeeld dat volgt bevat een sjabloonbestand en een parameterbestand met voorbeeldwaarden die aan de sjabloon moeten worden verstrekt.
Notitie
Hoewel u meerdere extensies kunt batcheren en ze samen kunt verwerken, worden ze serieel geïnstalleerd. Nadat de installatie van de eerste extensie is voltooid, wordt de volgende extensie geïnstalleerd.
Servers met Azure Arc bieden geen ondersteuning voor het implementeren en beheren van VM-extensies op virtuele Azure-machines. Zie het overzichtsartikel over vm-extensies voor Azure-VM's.
De Log Analytics VM-extensie implementeren
Als u de Log Analytics-agent eenvoudig wilt implementeren, gebruikt u een van de volgende voorbeelden om de agent te installeren in Linux of Windows.
Sjabloonbestand voor Linux
{
"$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'),'/OMSAgentForLinux')]",
"type": "Microsoft.HybridCompute/machines/extensions",
"location": "[parameters('location')]",
"apiVersion": "2022-03-10",
"properties": {
"publisher": "Microsoft.EnterpriseCloud.Monitoring",
"type": "OmsAgentForLinux",
"enableAutomaticUpgrade": true,
"settings": {
"workspaceId": "[parameters('workspaceId')]"
},
"protectedSettings": {
"workspaceKey": "[parameters('workspaceKey')]"
}
}
}
]
}
Sjabloonbestand voor Windows
{
"$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'),'/MicrosoftMonitoringAgent')]",
"type": "Microsoft.HybridCompute/machines/extensions",
"location": "[parameters('location')]",
"apiVersion": "2022-03-10",
"properties": {
"publisher": "Microsoft.EnterpriseCloud.Monitoring",
"type": "MicrosoftMonitoringAgent",
"autoUpgradeMinorVersion": true,
"enableAutomaticUpgrade": true,
"settings": {
"workspaceId": "[parameters('workspaceId')]"
},
"protectedSettings": {
"workspaceKey": "[parameters('workspaceKey')]"
}
}
}
]
}
Parameterbestand
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"vmName": {
"value": "<vmName>"
},
"location": {
"value": "<region>"
},
"workspaceId": {
"value": "<MyWorkspaceID>"
},
"workspaceKey": {
"value": "<MyWorkspaceKey>"
}
}
}
Sla de sjabloon en het parameterbestand op schijf op en bewerk het parameterbestand met de juiste waarden voor uw implementatie. U kunt de extensie vervolgens installeren op alle verbonden machines in een resourcegroep met behulp van de volgende opdracht. De opdracht gebruikt de TemplateFile
parameter om de sjabloon en de TemplateParameterFile
parameter op te geven om een bestand op te geven dat parameters en parameterwaarden bevat.
New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "D:\Azure\Templates\LogAnalyticsAgent.json" -TemplateParameterFile "D:\Azure\Templates\LogAnalyticsAgentParms.json"
De aangepaste scriptextensie implementeren
Als u de aangepaste scriptextensie wilt gebruiken, voert u een van de volgende voorbeelden uit voor Linux en Windows. Als u niet bekend bent met de aangepaste scriptextensie, raadpleegt u de aangepaste scriptextensie voor Linux of aangepaste scriptextensie voor Windows. Er zijn enkele verschillende kenmerken die u moet begrijpen wanneer u deze extensie gebruikt met hybride machines:
De lijst met ondersteunde besturingssystemen met de aangepaste scriptextensie van Azure VM is niet van toepassing op servers met Azure Arc. Zie de lijst met ondersteunde besturingssystemen voor servers met Azure Arc.
Configuratiedetails met betrekking tot virtuele-machineschaalsets van Azure of VM's die zijn gemaakt via het klassieke implementatiemodel, zijn niet van toepassing.
Als uw computers extern een script moeten downloaden en alleen via een proxyserver kunnen communiceren, moet u de agent voor verbonden machines configureren om de omgevingsvariabele van de proxyserver in te stellen.
De configuratie van de aangepaste scriptextensie geeft zaken op zoals de scriptlocatie en de opdracht die moet worden uitgevoerd. Deze configuratie wordt opgegeven in de volgende sjablonen.
Sjabloonbestand voor Linux
{
"$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": "2022-03-10",
"properties": {
"publisher": "Microsoft.Azure.Extensions",
"type": "CustomScript",
"autoUpgradeMinorVersion": true,
"settings": {},
"protectedSettings": {
"commandToExecute": "[parameters('commandToExecute')]",
"fileUris": "[parameters('fileUris')]"
}
}
}
]
}
Sjabloonbestand voor Windows
{
"$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'))]"
}
}
}
]
}
Parameterbestand
{
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
"handler": "Microsoft.Azure.CreateUIDef",
"version": "0.1.2-preview",
"parameters": {
"basics": [
{}
],
"steps": [
{
"name": "customScriptExt",
"label": "Add Custom Script Extension",
"elements": [
{
"name": "fileUris",
"type": "Microsoft.Common.FileUpload",
"label": "Script files",
"toolTip": "The script files that will be downloaded to the virtual machine.",
"constraints": {
"required": false
},
"options": {
"multiple": true,
"uploadMode": "url"
},
"visible": true
},
{
"name": "commandToExecute",
"type": "Microsoft.Common.TextBox",
"label": "Command",
"defaultValue": "sh script.sh",
"toolTip": "The command to execute, for example: sh script.sh",
"constraints": {
"required": true
},
"visible": true
}
]
}
],
"outputs": {
"vmName": "[vmName()]",
"location": "[location()]",
"fileUris": "[steps('customScriptExt').fileUris]",
"commandToExecute": "[steps('customScriptExt').commandToExecute]"
}
}
}
De afhankelijkheidsagentextensie implementeren
Als u de azure Monitor Dependency Agent-extensie wilt gebruiken, voert u een van de volgende voorbeelden uit voor Linux en Windows. Als u niet bekend bent met de afhankelijkheidsagent, raadpleegt u Overzicht van Azure Monitor-agents.
Sjabloonbestand voor Linux
{
"$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 Linux 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": "DependencyAgentLinux",
"enableAutomaticUpgrade": true
}
}
],
"outputs": {
}
}
Sjabloonbestand voor Windows
{
"$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": {
}
}
Sjabloonimplementatie
Sla het sjabloonbestand op de schijf op. Vervolgens kunt u de extensie implementeren op de verbonden machine met behulp van de volgende opdracht:
New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "D:\Azure\Templates\DependencyAgent.json"
De Azure Key Vault-VM-extensie implementeren (preview)
In de volgende JSON ziet u het schema voor de Key Vault VM-extensie (preview). Voor de extensie zijn geen beveiligde instellingen vereist, omdat alle instellingen als openbare informatie worden beschouwd. De extensie vereist een lijst met bewaakte certificaten, de pollingfrequentie en het doelcertificaatarchief.
Sjabloonbestand voor Linux
{
"$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"
}
}
}
}
]
}
Sjabloonbestand voor Windows
{
"$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"
}
}
}
}
]
}
Notitie
De waargenomen certificaat-URL's moeten van het formulier https://myVaultName.vault.azure.net/secrets/myCertName
zijn. De reden hiervoor is dat het /secrets
pad het volledige certificaat retourneert, inclusief de persoonlijke sleutel, terwijl het /certificates
pad dat niet doet. Meer informatie over certificaten vindt u in het overzicht van Azure Key Vault-sleutels, -geheimen en -certificaten.
Sjabloonimplementatie
Sla het sjabloonbestand op de schijf op. U kunt de extensie vervolgens implementeren op de verbonden machine met behulp van de volgende opdracht.
Notitie
Voor de VM-extensie moet een door het systeem toegewezen identiteit worden toegewezen om te verifiëren bij Key Vault. Zie Verifiëren bij Azure-resources met servers met Azure Arc voor Linux en Windows Azure Arc.
New-AzResourceGroupDeployment -ResourceGroupName "ContosoEngineering" -TemplateFile "D:\Azure\Templates\KeyVaultExtension.json"
Gerelateerde inhoud
- U kunt VM-extensies implementeren, beheren en verwijderen met behulp van Azure PowerShell, Azure Portal of De Azure CLI.
- U vindt informatie over probleemoplossing in de handleiding voor het oplossen van problemen met VM-extensies.