Sdílet prostřednictvím


Rozšíření Desired State Configuration pomocí šablon Azure Resource Manageru

Poznámka:

Než povolíte rozšíření DSC, rádi bychom věděli, že novější verze DSC je teď obecně dostupná a spravuje ji funkce s názvem konfigurace počítače. Funkce konfigurace počítače zahrnuje funkce obslužné rutiny rozšíření DSC (Desired State Configuration) a nejčastěji požadované funkce od zpětné vazby zákazníků. Konfigurace počítače také zahrnuje podporu hybridních počítačů prostřednictvím serverů s podporou Arc.

Tento článek popisuje šablonu Azure Resource Manageru pro obslužnou rutinu rozšíření DSC (Desired State Configuration).

Poznámka:

Můžete narazit na mírně odlišné příklady schématu. Ve verzi z října 2016 došlo ke změně schématu. Podrobnosti najdete v tématu Aktualizace z předchozího formátu.

Příklad Bicep pro virtuální počítač

Rozšíření DSC dědí výchozí vlastnosti rozšíření. Další informace naleznete v tématu VirtualMachineExtension třída.

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

Příklad Bicep pro škálovací sady virtuálních počítačů s Windows

Uzel škálovací sady virtuálních počítačů má oddíl, který obsahuje atribut extensionProfile . V části Rozšíření přidejte podrobnosti o rozšíření DSC.

Nejnovější podrobnosti o vytváření šablon, které nasazují rozšíření pro Virtual Machine Scale Sets, najdete v dokumentu Microsoft.Compute virtualMachineScaleSets.

Rozšíření DSC dědí výchozí vlastnosti rozšíření. Další informace naleznete v tématu VirtualMachineScaleSetExtension třída.

Nastavení vs. protectedSettings

Všechna nastavení se ukládají do textového souboru nastavení na virtuálním počítači. Vlastnosti uvedené v nastavení jsou veřejné vlastnosti. Veřejné vlastnosti nejsou v textovém souboru nastavení šifrované. Vlastnosti uvedené v části protectedSettings se šifrují pomocí certifikátu a v souboru nastavení na virtuálním počítači se nezobrazují ve formátu prostého textu.

Pokud konfigurace vyžaduje přihlašovací údaje, můžete přihlašovací údaje zahrnout do protectedSettings:

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

Příklad použití konfiguračního skriptu ve službě Azure Storage

Následující příklad je z přehledu obslužné rutiny rozšíření DSC. V tomto příkladu se k nasazení rozšíření používají šablony Resource Manageru místo rutin. Uložte konfiguraci IisInstall.ps1, umístěte ji do souboru .zip (příklad: iisinstall.zip) a pak soubor nahrajte do přístupné adresy URL. Tento příklad používá službu Azure Blob Storage, ale můžete stáhnout .zip soubory z libovolného umístění.

V šabloně Resource Manageru následující kód dá virtuálnímu počítači pokyn ke stažení správného souboru a spuštění příslušné funkce PowerShellu:

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

Aktualizace z předchozího formátu

Všechna nastavení v předchozím formátu rozšíření (a které mají veřejné vlastnosti ModulesUrl, ModuleSource, ModuleVersion, ConfigurationFunction, SasToken nebo Properties) se automaticky přizpůsobí aktuálnímu formátu rozšíření. Běží stejně jako předtím.

Následující schéma ukazuje, jak vypadalo předchozí schéma nastavení:

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

Tady je postup, jak se předchozí formát přizpůsobí aktuálnímu formátu:

Název aktuální vlastnosti Předchozí ekvivalent schématu
settings.wmfVersion nastavení. WMFVersion
settings.configuration.url nastavení. ModulesUrl
settings.configuration.script První část nastavení ConfigurationFunction (před \\)
settings.configuration.function Druhá část nastavení. ConfigurationFunction (za \\)
settings.configuration.module.name nastavení. ModuleSource
settings.configuration.module.version nastavení. ModuleVersion
settings.configurationArguments nastavení. Vlastnosti
settings.configurationData.url protectedSettings.DataBlobUri (bez tokenu SAS)
settings.privacy.dataCollection nastavení. Privacy.dataCollection
settings.advancedOptions.downloadMappings nastavení. AdvancedOptions.DownloadMappings
protectedSettings.configurationArguments protectedSettings.Properties
protectedSettings.configurationUrlSasToken nastavení. SasToken
protectedSettings.configurationDataUrlSasToken Token SAS z protectedSettings.DataBlobUri

Řešení problému

Tady jsou některé chyby, na které můžete narazit a jak je můžete opravit.

Neplatné hodnoty

"Privacy.dataCollection je '{0}'. Jedinými možnými hodnotami jsou '', 'Enable' a 'Disable'. "WmfVersion je '{0}'. Pouze možné hodnoty jsou ... a "latest".

Problém: Zadaná hodnota není povolená.

Řešení: Změňte neplatnou hodnotu na platnou hodnotu.

Neplatná adresa URL

"ConfigurationData.url je '{0}'. Toto není platná adresa URL DataBlobUri je .{0} Toto není platná adresa URL " Configuration.url je '{0}'. Toto není platná adresa URL.

Problém: Zadaná adresa URL není platná.

Řešení: Zkontrolujte všechny zadané adresy URL. Ujistěte se, že se všechny adresy URL přeloží na platná umístění, ke kterým má rozšíření přístup na vzdáleném počítači.

Neplatný typ ConfigurationArgument

"Neplatný typ {0}configurationArguments"

Problém: Vlastnost ConfigurationArguments nemůže přeložit na objekt tabulky hash.

Řešení: Nastavte vlastnost ConfigurationArguments na tabulku hash. Postupujte podle formátu uvedeného v předchozích příkladech. Sledujte uvozovky, čárky a složené závorky.

Duplicitní konfigurační archivy

"Nalezeny duplicitní argumenty '{0} ve veřejné i chráněné konfiguraciArguments"

Problém: ConfigurationArguments ve veřejných nastaveních a ConfigurationArguments v chráněných nastaveních mají vlastnosti se stejným názvem.

Řešení: Odeberte jednu z duplicitních vlastností.

Chybějící vlastnosti

"nastavení. Configuration.function vyžaduje, aby bylo zadáno nastavení.configuration.url nebo settings.configuration.module.

"nastavení. Configuration.url vyžaduje, aby byla zadána hodnota settings.configuration.script.

"nastavení. Configuration.script vyžaduje, aby bylo zadáno nastavení.configuration.url.

"nastavení. Configuration.url vyžaduje, aby bylo zadáno nastavení.configuration.function.

"protectedSettings.ConfigurationUrlSasToken vyžaduje, aby bylo zadáno nastavení.configuration.url"

"protectedSettings.ConfigurationDataUrlSasToken vyžaduje, aby bylo zadáno nastavení.configurationData.url"

Problém: Definovaná vlastnost potřebuje jinou vlastnost, která chybí.

Řešení:

  • Zadejte chybějící vlastnost.
  • Odeberte vlastnost, která potřebuje chybějící vlastnost.

Další kroky