Dela via


Önskat tillståndskonfigurationstillägg med Azure Resource Manager-mallar

Kommentar

Innan du aktiverar DSC-tillägget vill vi att du ska veta att en nyare version av DSC nu är allmänt tillgänglig, som hanteras av en funktion med namnet datorkonfiguration. Datorkonfigurationsfunktionen innehåller funktioner i DSC-tilläggshanteraren (Desired State Configuration) och de vanligaste funktionerna från kundfeedback. Datorkonfigurationen omfattar även stöd för hybriddatorer via Arc-aktiverade servrar.

I den här artikeln beskrivs Azure Resource Manager-mallen för DSC-tilläggshanteraren (Desired State Configuration).

Kommentar

Du kan stöta på lite olika schemaexempel. Schemaändringen inträffade i oktober 2016-versionen. Mer information finns i Uppdatera från ett tidigare format.

Bicep-exempel för en virtuell dator

DSC-tillägget ärver standardtilläggsegenskaper. Mer information finns i Klassen VirtualMachineExtension.

@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-exempel för VM-skalningsuppsättningar i Windows

En vm-skalningsuppsättningsnod har ett avsnitt som innehåller ett extensionProfile-attribut . Under tillägg lägger du till information för DSC-tillägget.

Den senaste informationen om redigering av mallar som distribuerar tillägg för VM-skalningsuppsättningar finns i dokumentet Microsoft.Compute virtualMachineScaleSets

DSC-tillägget ärver standardtilläggsegenskaper. Mer information finns i Klassen VirtualMachineScaleSetExtension.

Inställningar jämfört med skyddadeInställningar

Alla inställningar sparas i en textfil för inställningar på den virtuella datorn. Egenskaper som anges under inställningar är offentliga egenskaper. Offentliga egenskaper krypteras inte i textfilen för inställningar. Egenskaper som anges under protectedSettings krypteras med ett certifikat och visas inte i oformaterad text i inställningsfilen på den virtuella datorn.

Om konfigurationen behöver autentiseringsuppgifter kan du inkludera autentiseringsuppgifterna i protectedSettings:

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

Exempel med hjälp av konfigurationsskriptet i Azure Storage

Följande exempel är från översikten över DSC-tilläggshanteraren. I det här exemplet används Resource Manager-mallar i stället för cmdletar för att distribuera tillägget. Spara konfigurationen IisInstall.ps1, placera den i en .zip -fil (exempel: iisinstall.zip) och ladda sedan upp filen i en tillgänglig URL. Det här exemplet använder Azure Blob Storage, men du kan ladda ned .zip filer från valfri godtycklig plats.

I Resource Manager-mallen instruerar följande kod den virtuella datorn att ladda ned rätt fil och kör sedan rätt PowerShell-funktion:

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

Uppdatera från ett tidigare format

Alla inställningar i ett tidigare format av tillägget (och som har de offentliga egenskaperna ModulesUrl, ModuleSource, ModuleVersion, ConfigurationFunction, SasToken eller Properties) anpassas automatiskt till det aktuella formatet för tillägget. De springer precis som de gjorde förut.

Följande schema visar hur det tidigare inställningsschemat såg ut:

"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"
}

Så här anpassar sig det tidigare formatet till det aktuella formatet:

Aktuellt egenskapsnamn Motsvarande tidigare schema
settings.wmfVersion Inställningar. WMFVersion
settings.configuration.url Inställningar. ModulesUrl
settings.configuration.script Första delen av inställningarna. ConfigurationFunction (före \\)
settings.configuration.function Andra delen av inställningarna. ConfigurationFunction (efter \\)
settings.configuration.module.name Inställningar. ModuleSource
settings.configuration.module.version Inställningar. ModuleVersion
settings.configurationArguments Inställningar. Egenskaper
settings.configurationData.url protectedSettings.DataBlobUri (utan SAS-token)
settings.privacy.dataCollection Inställningar. Privacy.dataCollection
settings.advancedOptions.downloadMappings Inställningar. AdvancedOptions.DownloadMappings
protectedSettings.configurationArguments protectedSettings.Properties
protectedSettings.configurationUrlSasToken Inställningar. SasToken
protectedSettings.configurationDataUrlSasToken SAS-token från protectedSettings.DataBlobUri

Felsökning

Här följer några av de fel som du kan stöta på och hur du kan åtgärda dem.

Ogiltiga värden

"Privacy.dataCollection är '{0}'. De enda möjliga värdena är "", "Aktivera" och "Inaktivera". "WmfVersion är '{0}'. Endast möjliga värden är ... och "senaste".

Problem: Ett angivet värde tillåts inte.

Lösning: Ändra det ogiltiga värdet till ett giltigt värde.

Ogiltig URL

"ConfigurationData.url är '{0}'. Det här är inte en giltig URL: "DataBlobUri är "{0}". Det här är inte en giltig URL: "Configuration.url är "{0}". Detta är inte en giltig URL"

Problem: En angivet URL är inte giltig.

Lösning: Kontrollera alla dina angivna URL:er. Kontrollera att alla URL:er matchar giltiga platser som tillägget kan komma åt på fjärrdatorn.

Ogiltig ConfigurationArgument-typ

"Ogiltig configurationArguments-typ {0}"

Problem: Egenskapen ConfigurationArguments kan inte matcha ett Hash-tabellobjekt .

Lösning: Gör egenskapen ConfigurationArguments till en Hash-tabell. Följ formatet som anges i föregående exempel. Håll utkik efter citattecken, kommatecken och klammerparenteser.

Duplicera ConfigurationArguments

"Hittade duplicerade argument i{0} både offentliga och skyddade configurationArguments"

Problem: ConfigurationArguments i offentliga inställningar och ConfigurationArguments i skyddade inställningar har egenskaper med samma namn.

Lösning: Ta bort en av de duplicerade egenskaperna.

Egenskaper som saknas

"inställningar. Configuration.function kräver att settings.configuration.url eller settings.configuration.module anges"

"inställningar. Configuration.url kräver att settings.configuration.script anges"

"inställningar. Configuration.script kräver att settings.configuration.url anges"

"inställningar. Configuration.url kräver att settings.configuration.function anges"

"protectedSettings.ConfigurationUrlSasToken kräver att settings.configuration.url anges"

"protectedSettings.ConfigurationDataUrlSasToken kräver att settings.configurationData.url anges"

Problem: En definierad egenskap behöver en annan egenskap som saknas.

Lösningar:

  • Ange den saknade egenskapen.
  • Ta bort den egenskap som behöver den saknade egenskapen.

Nästa steg