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
- Dowiedz się więcej o używaniu zestawów skalowania maszyn wirtualnych z rozszerzeniem DSC platformy Azure.
- Dowiedz się więcej na temat bezpiecznego zarządzania poświadczeniami dsC.
- Zapoznaj się z wprowadzeniem do procedury obsługi rozszerzenia DSC platformy Azure.
- Aby uzyskać więcej informacji na temat rozszerzenia DSC programu PowerShell, przejdź do centrum dokumentacji programu PowerShell.