Delen via


Desired State Configuration-extensie met Azure Resource Manager-sjablonen

Notitie

De DSC-extensie wordt op 31 maart 2028 beëindigd. Ga naar Azure Machine Configuration op die datum. Voor meer informatie kunt u de aankondiging van de blogpost bekijken. De Azure Machine Configuration-service combineert bepaalde eigenschappen van de DSC-extensie, Azure Automation State Configuration, en veelgevraagde functies uit feedback van klanten. Azure Machine Configuration omvat ook hybride machine-ondersteuning via Arc-ingeschakelde servers.

Dit artikel beschrijft de Azure Resource Manager-sjabloon voor de Desired State Configuration (DSC) extensie-handler.

Notitie

U kunt tegen enigszins verschillende schema-voorbeelden aanlopen. De wijziging in het schema vond plaats in de release van oktober 2016. Voor details, zie Update van een vorige indeling.

Notitie

New! VM-hulp proberen voor snellere diagnostische gegevens' U wordt aangeraden VM-hulp uit te voeren voor Windows of VM-hulp voor Linux. Met deze diagnostische hulpprogramma's op basis van scripts kunt u veelvoorkomende problemen identificeren die van invloed zijn op de Azure VM-gastagent en de algehele VM-status.

Bicep-voorbeeld voor een virtuele machine

De DSC-extensie erft de standaard extensie-eigenschappen. Voor meer informatie, zie VirtualMachineExtension class.

@description('URI of the configuration package')
param configUri string

@description('first configuration parameter')
param arg1 string

@description('second configuration parameter')
@secure()
param arg2 string

var configName = split(split(configUri, '/')[4], '.')[0]

resource vm 'Microsoft.Compute/virtualMachines@2023-09-01' existing = {
  name: srvName
}

resource configuration_dscext 'Microsoft.Compute/virtualMachines/extensions@2024-07-01' = {
  name: 'configurationname_dscext'
  parent: vm
  location: location
  properties: {
    publisher: 'Microsoft.Powershell'
    type: 'DSC'
    typeHandlerVersion: '2.77'
    autoUpgradeMinorVersion: true
    settings: {
      wmfVersion: 'latest'
      configuration: {
        url: configUri
        script: 'configurationname_dscext.ps1'
        function: 'configurationname_dscext'
      }
      configurationArguments: {
        arg1: arg1
      }
      advancedOptions: {
        rebootNodeIfNeeded: true
      }
    }
    protectedSettings: {
      configurationArguments: {
        arg2: arg2
      }
    }
  }
}

Bicepvoorbeeld voor Windows virtuele machine schaalsets

Een knooppunt van een schaalset voor virtuele machines heeft een sectie die een extensionProfile-attribuut bevat. Onder extensies, voeg de details toe voor de DSC-extensie.

Zie het document Microsoft.Compute virtualMachineScaleSets voor meer informatie over het ontwerpen van sjablonen voor het implementeren van extensies voor Virtuele-machineschaalsets

De DSC-extensie erft de standaard extensie-eigenschappen. Voor meer informatie, zie VirtualMachineScaleSetExtension class.

Instellingen versus protectedSettings

Alle instellingen worden opgeslagen in een tekstbestand met instellingen op de VM. Eigenschappen die onder instellingen zijn vermeld, zijn openbare eigenschappen. Openbare eigenschappen zijn niet versleuteld in het instellingenbestand. Eigenschappen die worden vermeld onder protectedSettings , worden versleuteld met een certificaat en worden niet weergegeven in tekst zonder opmaak in het instellingenbestand op de virtuele machine.

Als de configuratie referenties nodig heeft, kunt u de referenties opnemen in protectedSettings:

"protectedSettings": {
    "configurationArguments": {
        "parameterOfTypePSCredential1": {
               "userName": "UsernameValue1",
               "password": "PasswordValue1"
        }
    }
}

Voorbeeld van het gebruik van het configuratiescript in Azure Storage

Het volgende voorbeeld is afkomstig uit het DSC extension handler overzicht. Dit voorbeeld gebruikt Resource Manager-sjablonen in plaats van cmdlets om de extensie te implementeren. Sla de IisInstall.ps1 configuratie op, plaats deze in een .zip-bestand (voorbeeld: iisinstall.zip) en upload vervolgens het bestand naar een toegankelijke URL. Dit voorbeeld maakt gebruik van Azure Blob-opslag, maar je kunt .zip-bestanden downloaden van elke willekeurige locatie.

In de Resource Manager-sjabloon instrueert de volgende code de VM om het juiste bestand te downloaden en vervolgens de juiste PowerShell-functie uit te voeren.

"settings": {
    "configuration": {
        "url": "https://demo.blob.core.windows.net/iisinstall.zip",
        "script": "IisInstall.ps1",
        "function": "IISInstall"
    }
},
"protectedSettings": {
    "configurationUrlSasToken": "odLPL/U1p9lvcnp..."
}

Bijwerken van een vorig formaat

Instellingen in een vorig formaat van de extensie (en die de openbare eigenschappen ModulesUrl, ModuleSource, ModuleVersion, ConfigurationFunction, SasToken of Properties hebben) passen zich automatisch aan het huidige formaat van de extensie aan. Ze rennen net zoals ze eerder deden.

Het volgende schema toont hoe het vorige instellingen-schema eruitzag:

"settings": {
    "WMFVersion": "latest",
    "ModulesUrl": "https://UrlToZipContainingConfigurationScript.ps1.zip",
    "SasToken": "SAS Token if ModulesUrl points to private Azure Blob Storage",
    "ConfigurationFunction": "ConfigurationScript.ps1\\ConfigurationFunction",
    "Properties": {
        "ParameterToConfigurationFunction1": "Value1",
        "ParameterToConfigurationFunction2": "Value2",
        "ParameterOfTypePSCredential1": {
            "UserName": "UsernameValue1",
            "Password": "PrivateSettingsRef:Key1"
        },
        "ParameterOfTypePSCredential2": {
            "UserName": "UsernameValue2",
            "Password": "PrivateSettingsRef:Key2"
        }
    }
},
"protectedSettings": {
    "Items": {
        "Key1": "PasswordValue1",
        "Key2": "PasswordValue2"
    },
    "DataBlobUri": "https://UrlToConfigurationDataWithOptionalSasToken.psd1"
}

Zo past het vorige formaat zich aan het huidige formaat aan:

Huidige Eigenschapsnaam Vorig schema-equivalent
settings.wmfVersion settings.WMFVersion
instellingen.configuratie.url instellingen.ModulesUrl
instellingen.configuratie.script Eerste deel van instellingen.ConfigurationFunction (voor \\)
instellingen.configuratie.functie Tweede deel van de instellingen.ConfigurationFunction (na \\)
settings.configuration.module.name instellingen.ModuleBron
settings.configuration.module.version settings.ModuleVersion
instellingen.configuratieArgumenten instellingen.Eigenschappen
settings.configurationData.url protectedSettings.DataBlobUri (zonder SAS-token)
instellingen.privacy.gegevensverzameling Instellingen.Privacy.Gegevensverzameling
instellingen.geavanceerdeOpties.downloadMapping instellingen.GeavanceerdeOpties.DownloadMappings
beschermdeInstellingen.configuratieArgumenten protectedSettings.Eigenschappen
protectedSettings.configuratieUrlSasToken instellingen.SasToken
protectedSettings.configurationDataUrlSasToken SAS-token van protectedSettings.DataBlobUri

Troubleshooting

Hier zijn enkele fouten die je kunt tegenkomen en hoe je ze kunt oplossen.

Ongeldige waarden

Privacy.dataCollection is '{0}'. De enige mogelijke waarden zijn '', 'Inschakelen', en 'Uitschakelen'. "WmfVersion is '{0}'." Alleen mogelijke waarden zijn … en 'laatste'".

Probleem: Een opgegeven waarde is niet toegestaan.

Oplossing: Verander de ongeldige waarde in een geldige waarde.

Ongeldige URL

"ConfigurationData.url is '{0}'. Dit is geen geldige URL" "DataBlobUri is '{0}'. Dit is geen geldige URL" "Configuration.url is '{0}'. Dit is geen geldige URL.

Probleem: Een opgegeven URL is niet geldig.

Oplossing: Controleer alle door u opgegeven URL's. Zorg ervoor dat alle URL's naar geldige locaties leiden die de extensie kan benaderen op de externe machine.

Ongeldig configuratieargumenttype

Ongeldig configuratieargumenttype {0}

Probleem: De eigenschap ConfigurationArguments kan niet worden opgelost naar een Hash-tabel-object.

Oplossing: Maak van de eigenschap ConfigurationArguments een Hash-tabel. Volg het formaat zoals in de voorgaande voorbeelden is aangegeven. Let op aanhalingstekens, komma's en accolades.

Dubbele ConfiguratieArgumenten

"Gevonden dubbele argumenten '{0}' in zowel openbare als beschermde configuratie-argumenten"

Probleem: De ConfigurationArguments in openbare instellingen en configurationArguments in beveiligde instellingen hebben eigenschappen met dezelfde naam.

Oplossing: Verwijder een van de dubbele eigenschappen.

Ontbrekende eigenschappen

instellingen.Configuration.function vereist dat instellingen.configuratie.url of instellingen.configuratie.module is opgegeven

"settings.Configuration.url vereist dat settings.configuration.script is gespecificeerd"

"settings.Configuration.script vereist dat settings.configuration.url is gespecificeerd"

"settings.Configuration.url vereist dat settings.configuration.function is gespecificeerd"

"protectedSettings.ConfigurationUrlSasToken vereist dat settings.configuration.url is gespecificeerd"

"protectedSettings.ConfigurationDataUrlSasToken vereist dat settings.configurationData.url is gespecificeerd"

Probleem: Een gedefinieerde eigenschap heeft een andere eigenschap nodig, die ontbreekt.

Solutions:

  • Voorzie de ontbrekende eigenschap.
  • Verwijder de eigenschap waarvoor de ontbrekende eigenschap nodig is.

Volgende stappen