Desired State Configuration-extensie met Azure Resource Manager-sjablonen
Notitie
Voordat u de DSC-extensie inschakelt, willen we graag weten dat een nieuwere versie van DSC nu algemeen beschikbaar is, beheerd door een functie met de naam machineconfiguratie. De functie voor machineconfiguratie bevat functies van de DSC-extensiehandler (Desired State Configuration) en de meest aangevraagde functies uit feedback van klanten. Machineconfiguratie omvat ook ondersteuning voor hybride machines via servers met Arc.
In dit artikel wordt de Azure Resource Manager-sjabloon voor de DSC-extensiehandler (Desired State Configuration) beschreven.
Notitie
Er kunnen iets andere schemavoorbeelden optreden. De wijziging in het schema is opgetreden in de release van oktober 2016. Zie Bijwerken uit een eerdere indeling voor meer informatie.
Bicep-voorbeeld voor een VIRTUELE machine
De DSC-extensie neemt standaarduitbreidingseigenschappen over. Zie de klasse VirtualMachineExtension voor meer informatie.
@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: {
configurationArguements: {
arg2: arg2
}
}
}
}
Bicep-voorbeeld voor virtuele-machineschaalsets van Windows
Een knooppunt van een virtuele-machineschaalset bevat een sectie met het kenmerk extensionProfile . Voeg onder Extensies de details voor DE DSC-extensie toe.
De DSC-extensie neemt standaarduitbreidingseigenschappen over. Zie de klasse VirtualMachineScaleSetExtension voor meer informatie.
Instellingen versus protectedSettings
Alle instellingen worden opgeslagen in een tekstbestand met instellingen op de virtuele machine. Eigenschappen die worden vermeld onder instellingen zijn openbare eigenschappen. Openbare eigenschappen worden niet versleuteld in het tekstbestand met instellingen. 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 configuratiescript in Azure Storage
Het volgende voorbeeld is afkomstig uit het overzicht van de DSC-extensiehandler.
In dit voorbeeld worden Resource Manager-sjablonen gebruikt in plaats van cmdlets om de extensie te implementeren.
Sla de configuratie IisInstall.ps1 op, plaats deze in een .zip bestand (bijvoorbeeld: iisinstall.zip
) en upload het bestand vervolgens in een toegankelijke URL.
In dit voorbeeld wordt Azure Blob Storage gebruikt, maar u kunt .zip bestanden downloaden vanaf elke willekeurige locatie.
In de Resource Manager-sjabloon geeft de volgende code de virtuele machine opdracht om het juiste bestand te downloaden en voer vervolgens de juiste PowerShell-functie uit:
"settings": {
"configuration": {
"url": "https://demo.blob.core.windows.net/iisinstall.zip",
"script": "IisInstall.ps1",
"function": "IISInstall"
}
},
"protectedSettings": {
"configurationUrlSasToken": "odLPL/U1p9lvcnp..."
}
Bijwerken vanuit een vorige indeling
Alle instellingen in een eerdere indeling van de extensie (en met de openbare eigenschappen ModulesUrl, ModuleSource, ModuleVersion, ConfigurationFunction, SasToken of Properties) worden automatisch aangepast aan de huidige indeling van de extensie. Ze lopen net als voorheen.
In het volgende schema ziet u hoe het vorige instellingenschema eruit zag:
"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 de vorige indeling zich aan de huidige indeling aan:
Naam van huidige eigenschap | Vorige schema-equivalent |
---|---|
settings.wmfVersion | Instellingen. WMFVersion |
settings.configuration.url | Instellingen. ModulesUrl |
settings.configuration.script | Eerste deel van de instellingen. ConfigurationFunction (vóór \\) |
settings.configuration.function | Tweede deel van de instellingen. ConfigurationFunction (na \\) |
settings.configuration.module.name | Instellingen. ModuleSource |
settings.configuration.module.version | Instellingen. ModuleVersion |
settings.configurationArguments | Instellingen. Eigenschappen |
settings.configurationData.url | protectedSettings.DataBlobUri (zonder SAS-token) |
settings.privacy.dataCollection | Instellingen. Privacy.dataCollection |
settings.advancedOptions.downloadMappings | Instellingen. AdvancedOptions.DownloadMappings |
protectedSettings.configurationArguments | protectedSettings.Properties |
protectedSettings.configurationUrlSasToken | Instellingen. SasToken |
protectedSettings.configurationDataUrlSasToken | SAS-token van protectedSettings.DataBlobUri |
Probleemoplossing
Hier volgen enkele van de fouten die u kunt tegenkomen en hoe u deze kunt oplossen.
Ongeldige waarden
"Privacy.dataCollection is '{0}'. De enige mogelijke waarden zijn '', 'Inschakelen' en 'Uitschakelen'. "WmfVersion is '{0}'. Alleen mogelijke waarden zijn ... en 'latest'.
Probleem: Een opgegeven waarde is niet toegestaan.
Oplossing: Wijzig 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 opgegeven URL's. Zorg ervoor dat alle URL's worden omgezet naar geldige locaties waartoe de extensie toegang heeft op de externe computer.
Ongeldig configurationArgument-type
"Ongeldig type {0}configurationArguments "
Probleem: de eigenschap ConfigurationArguments kan niet worden omgezet in een Hash-tabelobject .
Oplossing: Maak van de eigenschap ConfigurationArguments een Hash-tabel. Volg de indeling in de voorgaande voorbeelden. Let op aanhalingstekens, komma's en accolades.
Dubbele ConfigurationArguments
"Dubbele argumenten gevonden "{0}" in zowel openbare als beveiligde configurationArguments"
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 settings.configuration.url of settings.configuration.module is opgegeven"
"instellingen. Configuration.url vereist dat settings.configuration.script is opgegeven"
"instellingen. Configuration.script vereist dat settings.configuration.url is opgegeven"
"instellingen. Configuration.url vereist dat settings.configuration.function is opgegeven"
"protectedSettings.ConfigurationUrlSasToken vereist dat settings.configuration.url is opgegeven"
"protectedSettings.ConfigurationDataUrlSasToken vereist dat settings.configurationData.url is opgegeven"
Probleem: een gedefinieerde eigenschap heeft een andere eigenschap nodig, die ontbreekt.
Oplossingen:
- Geef de ontbrekende eigenschap op.
- Verwijder de eigenschap waarvoor de ontbrekende eigenschap nodig is.
Volgende stappen
- Meer informatie over het gebruik van virtuele-machineschaalsets met de Azure DSC-extensie.
- Meer informatie over het veilige referentiebeheer van DSC.
- Krijg een inleiding tot de Azure DSC-extensiehandler.
- Ga naar het PowerShell-documentatiecentrum voor meer informatie over PowerShell DSC.