Udostępnij przez


Rozszerzenie Desired State Configuration w połączeniu z szablonami Azure Resource Manager

Uwaga

Rozszerzenie DSC zostanie wycofane 31 marca 2028 r. Przejdź do usługi Azure Machine Configuration do tej daty. Więcej informacji można znaleźć w ogłoszeniu na blogu. Usługa Azure Machine Configuration łączy niektóre funkcje rozszerzenia DSC, usługi Azure Automation State Configuration i często żądane funkcje opinii klientów. Usługa Azure Machine Configuration 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, patrz Aktualizowanie z poprzedniego formatu.

Uwaga

Wypróbuj pomoc maszyny wirtualnej, aby uzyskać szybszą diagnostykę. Zalecamy uruchomienie asysty maszyny wirtualnej dla systemu Windows lub asystenta maszyny wirtualnej dla systemu Linux. Te narzędzia diagnostyczne oparte na skryptach ułatwiają identyfikowanie typowych problemów, które mają wpływ na agenta gościa maszyny wirtualnej platformy Azure i ogólną kondycję maszyny wirtualnej.

Jeśli występują problemy z wydajnością maszyn wirtualnych, przed skontaktowaniem się z pomocą techniczną uruchom te narzędzia.

Przykład skryptu Bicep dla maszyny wirtualnej

Rozszerzenie DSC dziedziczy domyślne właściwości rozszerzenia. Aby uzyskać więcej informacji, zobacz klasa 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: {
      configurationArguments: {
        arg2: arg2
      }
    }
  }
}

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

Węzeł zestawu skalowania maszyn wirtualnych ma sekcję, która zawiera 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 klasę VirtualMachineScaleSetExtension.

Ustawienia a chronione ustawienia

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 omówienia 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ą dokładnie 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.ModulesUrl
ustawienia.konfiguracja.skrypt Pierwsza część ustawień ConfigurationFunction (przed \\)
ustawienia.konfiguracja.funkcja Druga część ustawień.ConfigurationFunction (po \\)
ustawienia.konfiguracja.moduł.nazwa Ustawienia. Źródło modułu
ustawienia.konfiguracja.moduł.wersja Wersja modułu ustawień
settings.configurationArguments Ustawienia. Właściwości
settings.configurationData.url protectedSettings.DataBlobUri (bez tokenu SAS)
ustawienia.prywatność.zbieranieDanych Ustawienia.Prywatność.ZbieranieDanych
ustawienia.zaawansowaneOpcje.pobierzMapowania Ustawienia.ZaawansowaneOpcje.PobieranieMapowań
protectedSettings.configurationArguments protectedSettings.UstawieniaWłaściwości
protectedSettings.configurationUrlSasToken Ustawienia.SasToken
protectedSettings.configurationDataUrlSasToken Token SAS z identyfikatora URI 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 jest '{0}'. Jedynymi możliwymi wartościami są "", "Włącz" i "Wyłącz". WmfVersion jest '{0}'. Tylko możliwe wartości to ... i "najnowszy".

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 prowadzą do prawidłowych lokalizacji, do których rozszerzenie może uzyskać dostęp na maszynie zdalnej.

Nieprawidłowy typ argumentu konfiguracji

Nieprawidłowy typ konfiguracji {0}Argumentów

Problem: Właściwość ConfigurationArguments nie może zostać rozpoznana jako obiekt 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. Uważaj na cudzysłowy, przecinki i nawiasy klamrowe.

Zduplikowane argumenty konfiguracyjne

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

Problem: ConfigurationArguments 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, aby określono settings.configuration.url lub settings.configuration.module

"settings.Configuration.url wymaga, aby settings.configuration.script był określony"

Ustawienie settings.Configuration.script wymaga, aby określono settings.configuration.url

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

"protectedSettings.ConfigurationUrlSasToken wymaga, aby settings.configuration.url zostało określone."

"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