Udostępnij za pośrednictwem


Rozszerzenie Desired State Configuration z szablonami usługi Azure Resource Manager

Uwaga

Przed włączeniem rozszerzenia DSC chcielibyśmy wiedzieć, że nowsza wersja rozszerzenia DSC jest teraz ogólnie dostępna, zarządzana przez funkcję o nazwie konfiguracja maszyny. Funkcja konfiguracji maszyny obejmuje funkcje programu obsługi rozszerzenia Desired State Configuration (DSC) oraz najczęściej żądane funkcje opinii klientów. Konfiguracja maszyny obejmuje również obsługę maszyn hybrydowych za pośrednictwem serwerów z obsługą usługi Arc.

W tym artykule opisano szablon usługi Azure Resource Manager dla procedury obsługi rozszerzenia Desired State Configuration (DSC).

Uwaga

Możesz napotkać nieco inne przykłady schematów. Zmiana schematu miała miejsce w wydaniu z października 2016 r. Aby uzyskać szczegółowe informacje, zobacz Aktualizowanie z poprzedniego formatu.

Przykład Bicep dla maszyny wirtualnej

Rozszerzenie DSC dziedziczy domyślne właściwości rozszerzenia. Aby uzyskać więcej informacji, zobacz VirtualMachineExtension, klasa.

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

Przykład Bicep dla zestawów skalowania maszyn wirtualnych z systemem Windows

Węzeł zestawu skalowania maszyn wirtualnych zawiera sekcję zawierającą atrybut extensionProfile . W obszarze rozszerzenia dodaj szczegóły rozszerzenia DSC.

Aby uzyskać najnowsze szczegóły dotyczące tworzenia szablonów, które wdrażają rozszerzenia dla zestawów skalowania maszyn wirtualnych, zobacz dokument Microsoft.Compute virtualMachineScaleSets

Rozszerzenie DSC dziedziczy domyślne właściwości rozszerzenia. Aby uzyskać więcej informacji, zobacz VirtualMachineScaleSetExtension, klasa.

Ustawienia a chronioneUstawienia

Wszystkie ustawienia są zapisywane w pliku tekstowym ustawień na maszynie wirtualnej. Właściwości wymienione w obszarze ustawień są właściwościami publicznymi. Właściwości publiczne nie są szyfrowane w pliku tekstowym ustawień. Właściwości wymienione w obszarze protectedSettings są szyfrowane przy użyciu certyfikatu i nie są wyświetlane w postaci zwykłego tekstu w pliku ustawień na maszynie wirtualnej.

Jeśli konfiguracja wymaga poświadczeń, możesz uwzględnić poświadczenia w obszarze protectedSettings:

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

Przykład użycia skryptu konfiguracji w usłudze Azure Storage

Poniższy przykład pochodzi z przeglądu programu obsługi rozszerzeń DSC. W tym przykładzie użyto szablonów usługi Resource Manager zamiast poleceń cmdlet do wdrożenia rozszerzenia. Zapisz konfigurację IisInstall.ps1, umieść ją w pliku .zip (na przykład: iisinstall.zip), a następnie przekaż plik w dostępnym adresie URL. W tym przykładzie użyto usługi Azure Blob Storage, ale możesz pobrać .zip pliki z dowolnej lokalizacji.

W szablonie usługi Resource Manager następujący kod instruuje maszynę wirtualną, aby pobrała prawidłowy plik, a następnie uruchom odpowiednią funkcję programu PowerShell:

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

Aktualizuj z poprzedniego formatu

Wszystkie ustawienia w poprzednim formacie rozszerzenia (i które mają właściwości publiczne ModulesUrl, ModuleSource, ModuleVersion, ConfigurationFunction, SasToken lub Properties) automatycznie dostosowują się do bieżącego formatu rozszerzenia. Biegają tak jak wcześniej.

Poniższy schemat pokazuje, jak wyglądał poprzedni schemat ustawień:

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

Oto jak poprzedni format dostosowuje się do bieżącego formatu:

Bieżąca nazwa właściwości Poprzedni odpowiednik schematu
settings.wmfVersion Ustawienia. WMFVersion
settings.configuration.url Ustawienia. ModułyUrl
settings.configuration.script Pierwsza część ustawień. ConfigurationFunction (przed \\)
settings.configuration.function Druga część ustawień. ConfigurationFunction (po \\)
settings.configuration.module.name Ustawienia. Źródło modułu
settings.configuration.module.version Ustawienia. ModuleVersion
settings.configurationArguments Ustawienia. Właściwości
settings.configurationData.url protectedSettings.DataBlobUri (bez tokenu SAS)
settings.privacy.dataCollection Ustawienia. Privacy.dataCollection
settings.advancedOptions.downloadMappings Ustawienia. AdvancedOptions.DownloadMappings
protectedSettings.configurationArguments protectedSettings.Properties
protectedSettings.configurationUrlSasToken Ustawienia. Sygnatura dostępu współdzielonego
protectedSettings.configurationDataUrlSasToken Token SYGNATURY dostępu współdzielonego z identyfikatora protectedSettings.DataBlobUri

Rozwiązywanie problemów

Poniżej przedstawiono niektóre błędy, które mogą wystąpić i jak można je naprawić.

Nieprawidłowe wartości

"Privacy.dataCollection to '{0}'. Jedynymi możliwymi wartościami są "", "Włącz" i "Wyłącz". "WmfVersion to '{0}'. Tylko możliwe wartości to ... i "latest".

Problem: Podana wartość nie jest dozwolona.

Rozwiązanie: zmień nieprawidłową wartość na prawidłową wartość.

Nieprawidłowy adres URL

"ConfigurationData.url to '{0}'. To nie jest prawidłowy adres URL" "DataBlobUri to '{0}". To nie jest prawidłowy adres URL" "Configuration.url is '{0}". To nie jest prawidłowy adres URL"

Problem: Podany adres URL jest nieprawidłowy.

Rozwiązanie: Sprawdź wszystkie podane adresy URL. Upewnij się, że wszystkie adresy URL rozpoznają prawidłowe lokalizacje, do których rozszerzenie może uzyskać dostęp na maszynie zdalnej.

Nieprawidłowy typ configurationArgument

"Nieprawidłowy typ {0}configurationArguments"

Problem: właściwość ConfigurationArguments nie może rozpoznać obiektu tabeli skrótu.

Rozwiązanie: Ustaw właściwość ConfigurationArguments na tabelę skrótów. Postępuj zgodnie z formatem podanym w poprzednich przykładach. Poszukaj cudzysłowów, przecinków i nawiasów klamrowych.

Zduplikowane konfiguracjeArguments

"Znaleziono zduplikowane argumenty "{0}" zarówno w konfiguracji publicznej, jak i chronionejArguments"

Problem: KonfiguracjeArguments w ustawieniach publicznych i ConfigurationArguments w ustawieniach chronionych mają właściwości o tej samej nazwie.

Rozwiązanie: Usuń jedną z zduplikowanych właściwości.

Brakujące właściwości

"ustawienia. Configuration.function wymaga określenia parametru settings.configuration.url lub settings.configuration.module"

"ustawienia. Configuration.url wymaga określenia ustawienia.configuration.script"

"ustawienia. Configuration.script wymaga określenia parametru settings.configuration.url"

"ustawienia. Configuration.url wymaga, aby określono parametr settings.configuration.function"

"protectedSettings.ConfigurationUrlSasToken wymaga określenia ustawienia.configuration.url"

"protectedSettings.ConfigurationDataUrlSasToken wymaga określenia ustawienia.configurationData.url"

Problem: Zdefiniowana właściwość wymaga innej właściwości, której brakuje.

Rozwiązania:

  • Podaj brakującą właściwość.
  • Usuń właściwość, która wymaga brakującej właściwości.

Następne kroki