Desired State Configuration bővítmény Azure Resource Manager-sablonokkal

Megjegyzés

A DSC-bővítmény engedélyezése előtt szeretnénk tudni, hogy a DSC egy újabb verziója már általánosan elérhető, amelyet az Azure Automange nevű gépkonfiguráció egyik funkciója felügyel. A gépkonfigurációs funkció egyesíti a Desired State Configuration (DSC) bővítménykezelőjének funkcióit, a Azure Automation State Configuration és a leggyakrabban kért funkciókat az ügyfelek visszajelzései alapján. A gépkonfiguráció a hibrid gépek Arc-kompatibilis kiszolgálókon keresztüli támogatását is magában foglalja.

Ez a cikk a Desired State Configuration (DSC) bővítménykezelőjének Azure Resource Manager sablonját ismerteti. Számos példa a RegistrationURL (sztringként megadva) és RegistrationKey (PSCredentialként) használatával készíti elő a Azure Automation. Az értékek beszerzésével kapcsolatos részletekért lásd: DSC-metakonfigurálás használata hibrid gépek regisztrálásához.

Megjegyzés

A DSC-bővítmény engedélyezése előtt szeretnénk tudni, hogy a DSC egy újabb verziója már általánosan elérhető, amelyet az Azure Automange nevű gépkonfiguráció egyik funkciója felügyel. A gépkonfigurációs funkció egyesíti a Desired State Configuration (DSC) bővítménykezelőjének funkcióit, a Azure Automation State Configuration és a leggyakrabban kért funkciókat az ügyfelek visszajelzései alapján. A gépkonfiguráció a hibrid gépek Arc-kompatibilis kiszolgálókon keresztüli támogatását is magában foglalja.

Megjegyzés

Előfordulhat, hogy kissé eltérő sémabeli példákat tapasztal. A séma módosítása a 2016. októberi kiadásban történt. Részletekért lásd: Frissítés egy korábbi formátumból.

Példa sablon egy Windows rendszerű virtuális gépre

Az alábbi kódrészlet a sablon Erőforrás szakaszában található. A DSC-bővítmény örökli az alapértelmezett bővítménytulajdonságokat. További információ: VirtualMachineExtension osztály.

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "[concat(parameters('VMName'), '/Microsoft.Powershell.DSC')]",
  "apiVersion": "2018-06-01",
  "location": "[parameters('location')]",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', parameters('VMName'))]"
  ],
  "properties": {
    "publisher": "Microsoft.Powershell",
    "type": "DSC",
    "typeHandlerVersion": "2.77",
    "autoUpgradeMinorVersion": true,
    "protectedSettings": {
      "Items": {
        "registrationKeyPrivate": "[listKeys(resourceId('Microsoft.Automation/automationAccounts/', parameters('automationAccountName')), '2018-06-30').Keys[0].value]"
      }
    },
    "settings": {
      "Properties": [
        {
          "Name": "RegistrationKey",
          "Value": {
            "UserName": "PLACEHOLDER_DONOTUSE",
            "Password": "PrivateSettingsRef:registrationKeyPrivate"
          },
          "TypeName": "System.Management.Automation.PSCredential"
        },
        {
          "Name": "RegistrationUrl",
          "Value": "[reference(concat('Microsoft.Automation/automationAccounts/', parameters('automationAccountName'))).registrationUrl]",
          "TypeName": "System.String"
        },
        {
          "Name": "NodeConfigurationName",
          "Value": "[parameters('nodeConfigurationName')]",
          "TypeName": "System.String"
        }
      ]
    }
  }
}

Példasablon Windows rendszerű virtuálisgép-méretezési csoportokhoz

A virtuálisgép-méretezési csoport csomópontja rendelkezik egy virtualMachineProfile, extensionProfile attribútummal rendelkező tulajdonságokat tartalmazó szakaszsal. A Bővítmények területen adja meg a DSC-bővítmény részleteit.

A DSC-bővítmény örökli az alapértelmezett bővítménytulajdonságokat. További információ: VirtualMachineScaleSetExtension osztály.

"extensionProfile": {
    "extensions": [
      {
        "name": "Microsoft.Powershell.DSC",
        "properties": {
          "publisher": "Microsoft.Powershell",
          "type": "DSC",
          "typeHandlerVersion": "2.77",
          "autoUpgradeMinorVersion": true,
          "protectedSettings": {
            "Items": {
              "registrationKeyPrivate": "[listKeys(resourceId('Microsoft.Automation/automationAccounts/', parameters('automationAccountName')), '2018-06-30').Keys[0].value]"
            }
          },
          "settings": {
            "Properties": [
              {
                "Name": "RegistrationKey",
                "Value": {
                  "UserName": "PLACEHOLDER_DONOTUSE",
                  "Password": "PrivateSettingsRef:registrationKeyPrivate"
                },
                "TypeName": "System.Management.Automation.PSCredential"
              },
              {
                "Name": "RegistrationUrl",
                "Value": "[reference(concat('Microsoft.Automation/automationAccounts/', parameters('automationAccountName'))).registrationUrl]",
                "TypeName": "System.String"
              },
              {
                "Name": "NodeConfigurationName",
                "Value": "[parameters('nodeConfigurationName')]",
                "TypeName": "System.String"
              }
            ]
          }
        }
      }
    ]
  }

Részletes beállítások

Használja az alábbi sémát az Azure DSC-bővítmény beállítások szakaszában egy Resource Manager sablonban.

Az alapértelmezett konfigurációs szkripthez elérhető argumentumok listáját lásd: Alapértelmezett konfigurációs szkript.

"settings": {
    "wmfVersion": "latest",
    "configuration": {
        "url": "http://validURLToConfigLocation",
        "script": "ConfigurationScript.ps1",
        "function": "ConfigurationFunction"
    },
    "configurationArguments": {
        "argument1": "Value1",
        "argument2": "Value2"
    },
    "configurationData": {
        "url": "https://foo.psd1"
    },
    "privacy": {
        "dataCollection": "enable"
    },
    "advancedOptions": {
        "downloadMappings": {
            "customWmfLocation": "http://myWMFlocation"
        }
    }
},
"protectedSettings": {
    "configurationArguments": {
        "parameterOfTypePSCredential1": {
            "userName": "UsernameValue1",
            "password": "PasswordValue1"
        },
        "parameterOfTypePSCredential2": {
            "userName": "UsernameValue2",
            "password": "PasswordValue2"
        }
    },
    "configurationUrlSasToken": "?g!bber1sht0k3n",
    "configurationDataUrlSasToken": "?dataAcC355T0k3N"
}

Részletek

Tulajdonság neve Típus Description
settings.wmfVersion sztring Megadja a virtuális gépre telepíteni kívánt Windows Management Framework (WMF) verzióját. Ha ezt a tulajdonságot a legújabbra állítja, a WMF legújabb verzióját telepíti. Jelenleg ennek a tulajdonságnak az egyetlen lehetséges értéke a 4.0, 5.0, 5.1 és újabb. Ezekre a lehetséges értékekre frissítések vonatkoznak. Az alapértelmezett érték a legújabb.
settings.configuration.url sztring Megadja azt az URL-címet, ahonnan le szeretné tölteni a DSC-konfigurációs .zip fájlt. Ha a megadott URL-címhez SAS-jogkivonat szükséges a hozzáféréshez, állítsa a protectedSettings.configurationUrlSasToken tulajdonságot az SAS-jogkivonat értékére. Ez a tulajdonság akkor szükséges, ha a settings.configuration.script vagy a settings.configuration.function definiálva van. Ha ezekhez a tulajdonságokhoz nincs megadva érték, a bővítmény meghívja az alapértelmezett konfigurációs szkriptet a Hely Configuration Manager (LCM) metaadatainak beállításához, és argumentumokat kell megadni.
settings.configuration.script sztring Megadja annak a szkriptnek a fájlnevét, amely a DSC-konfiguráció definícióját tartalmazza. Ennek a szkriptnek a settings.configuration.url tulajdonság által megadott URL-címről letöltött .zip fájl gyökérmappájában kell lennie. Ez a tulajdonság akkor szükséges, ha a settings.configuration.url vagy a settings.configuration.script definiálva van. Ha ezekhez a tulajdonságokhoz nincs megadva érték, a bővítmény meghívja az alapértelmezett konfigurációs szkriptet az LCM-metaadatok beállításához, és meg kell adni az argumentumokat.
settings.configuration.function sztring Megadja a DSC-konfiguráció nevét. A névvel ellátott konfigurációnak szerepelnie kell a settings.configuration.script által definiált szkriptben. Ez a tulajdonság akkor szükséges, ha a settings.configuration.url vagy settings.configuration.function meg van határozva. Ha ezekhez a tulajdonságokhoz nincs megadva érték, a bővítmény meghívja az alapértelmezett konfigurációs szkriptet az LCM-metaadatok beállításához, és meg kell adni az argumentumokat.
settings.configurationArguments Gyűjtemény Meghatározza azokat a paramétereket, amelyeket át szeretne adni a DSC-konfigurációnak. Ez a tulajdonság nincs titkosítva.
settings.configurationData.url sztring Megadja azt az URL-címet, amelyről a DSC-konfiguráció bemeneteként használni kívánt konfigurációs adatfájlt (.psd1) le szeretné tölteni. Ha a megadott URL-címhez SAS-jogkivonat szükséges a hozzáféréshez, állítsa a protectedSettings.configurationDataUrlSasToken tulajdonságot az SAS-jogkivonat értékére.
settings.privacy.dataCollection sztring Engedélyezi vagy letiltja a telemetriai gyűjteményt. Ennek a tulajdonságnak az egyetlen lehetséges értéke az Engedélyezés, a Letiltás, a "" vagy a $null. Ha ezt a tulajdonságot üresen vagy null értékként hagyja, lehetővé teszi a telemetriai adatokat. Az alapértelmezett érték a "". További információ: Azure DSC-bővítmény adatgyűjtése.
settings.advancedOptions.downloadMappings Gyűjtemény Meghatározza azokat a másodlagos helyeket, ahonnan le szeretné tölteni a WMF-et. További információ: Azure DSC extension 2.8 és a bővítményfüggőségek letöltéseinek leképezése a saját helyére.
protectedSettings.configurationArguments Gyűjtemény Meghatározza azokat a paramétereket, amelyeket át szeretne adni a DSC-konfigurációnak. Ez a tulajdonság titkosítva van.
protectedSettings.configurationUrlSasToken sztring Megadja a settings.configuration.url által definiált URL-cím eléréséhez használandó SAS-jogkivonatot. Ez a tulajdonság titkosítva van.
protectedSettings.configurationDataUrlSasToken sztring Megadja a settings.configurationData.url által definiált URL-cím eléréséhez használandó SAS-jogkivonatot. Ez a tulajdonság titkosítva van.

Alapértelmezett konfigurációs szkript

Az alábbi értékekkel kapcsolatos további információkért lásd: Helyi Configuration Manager alapszintű beállítások. A DSC-bővítmény alapértelmezett konfigurációs szkriptjével csak az alábbi táblázatban felsorolt LCM-tulajdonságokat konfigurálhatja.

Tulajdonság neve Típus Description
protectedSettings.configurationArguments.RegistrationKey PSCredential Kötelező tulajdonság. Megadja azt a kulcsot, amelyet egy csomópont a Azure Automation szolgáltatásban való regisztrációhoz használ egy PowerShell-hitelesítőadat-objektum jelszavaként. Ez az érték automatikusan felderíthető a listkeys metódussal az Automation-fiókban. Lásd a példát.
settings.configurationArguments.RegistrationUrl sztring Kötelező tulajdonság. Annak az Automation-végpontnak az URL-címét adja meg, ahol a csomópont regisztrálni próbál. Ez az érték automatikusan felderíthető az Automation-fiók referenciametódusának használatával.
settings.configurationArguments.NodeConfigurationName sztring Kötelező tulajdonság. Az Automation-fiók csomópontkonfigurációját adja meg a csomóponthoz való hozzárendeléshez.
settings.configurationArguments.ConfigurationMode sztring Meghatározza az LCM módját. Az érvényes beállítások közé tartozik az ApplyOnly, az ApplyandMonitor és az ApplyandAutoCorrect. Az alapértelmezett érték az ApplyandMonitor.
settings.configurationArguments.RefreshFrequencyMins uint32 Meghatározza, hogy az LCM milyen gyakran kísérel meg frissítéseket keresni az Automation-fiókkal. Az alapértelmezett érték 30. A minimális érték 15.
settings.configurationArguments.ConfigurationModeFrequencyMins uint32 Meghatározza, hogy az LCM milyen gyakran ellenőrzi az aktuális konfigurációt. Az alapértelmezett érték 15. A minimális érték 15.
settings.configurationArguments.RebootNodeIfNeeded boolean Meghatározza, hogy egy csomópont automatikusan újraindítható-e, ha egy DSC-művelet kéri. Az alapértelmezett érték hamis.
settings.configurationArguments.ActionAfterReboot sztring Megadja, hogy mi történik az újraindítás után a konfiguráció alkalmazásakor. Az érvényes beállítások a ContinueConfiguration és a StopConfiguration. Az alapértelmezett érték a ContinueConfiguration.
settings.configurationArguments.AllowModuleOverwrite boolean Meghatározza, hogy az LCM felülírja-e a csomóponton lévő meglévő modulokat. Az alapértelmezett érték hamis.

beállítások és protectedSettings

Az összes beállítás a virtuális gépen található beállítások szövegfájljában lesz mentve. A beállítások között felsorolt tulajdonságok nyilvános tulajdonságok. A nyilvános tulajdonságok nincsenek titkosítva a beállítások szövegfájljában. A protectedSettings alatt felsorolt tulajdonságok tanúsítványokkal vannak titkosítva, és nem jelennek meg egyszerű szövegben a virtuális gép beállításfájljában.

Ha a konfigurációnak hitelesítő adatokra van szüksége, a hitelesítő adatokat a protectedSettings fájlba is felveheti:

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

Példakonfigurációs szkriptre

Az alábbi példa a DSC-bővítmény alapértelmezett viselkedését mutatja be, amely metaadat-beállításokat ad meg az LCM-nek, és regisztrál az Automation DSC szolgáltatásban. Konfigurációs argumentumokra van szükség. A konfigurációs argumentumokat a rendszer átadja az alapértelmezett konfigurációs szkriptnek az LCM-metaadatok beállításához.

"settings": {
    "configurationArguments": {
        "RegistrationUrl" : "[parameters('registrationUrl1')]",
        "NodeConfigurationName" : "nodeConfigurationNameValue1"
    }
},
"protectedSettings": {
    "configurationArguments": {
        "RegistrationKey": {
            "userName": "NOT_USED",
            "Password": "registrationKey"
        }
    }
}

Példa a konfigurációs szkript használatával az Azure Storage-ban

Az alábbi példa a DSC bővítménykezelő áttekintéséből származik. Ez a példa parancsmagok helyett Resource Manager sablonokat használ a bővítmény üzembe helyezéséhez. Mentse a IisInstall.ps1 konfigurációt, helyezze egy .zip fájlba (például: iisinstall.zip), majd töltse fel a fájlt egy akadálymentes URL-címre. Ez a példa az Azure Blob Storage-t használja, de tetszőleges helyről letöltheti .zip fájlokat.

A Resource Manager sablonban a következő kód utasítja a virtuális gépet, hogy töltse le a megfelelő fájlt, majd futtassa a megfelelő PowerShell-függvényt:

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

Példa hivatkozott Azure Automation regisztrációs értékek használatával

Az alábbi példa lekéri a RegistrationUrl és a RegistrationKey értéket a Azure Automation fióktulajdonságokra hivatkozva, és a listkeys metódussal kéri le az elsődleges kulcsot (0). Ebben a példában az automationAccountName és a NodeConfigName paramétereket adták meg a sablonnak.

"settings": {
    "RegistrationUrl" : "[reference(concat('Microsoft.Automation/automationAccounts/', parameters('automationAccountName'))).registrationUrl]",
    "NodeConfigurationName" : "[parameters('NodeConfigName')]"
},
"protectedSettings": {
    "configurationArguments": {
        "RegistrationKey": {
            "userName": "NOT_USED",
            "Password": "[listKeys(resourceId('Microsoft.Automation/automationAccounts/', parameters('automationAccountName')), '2018-01-15').Keys[0].value]"
        }
    }
}

Frissítés egy korábbi formátumból

A bővítmény korábbi formátumú beállításai (és amelyek a ModulesUrl, a ModuleSource, a ModuleVersion, a ConfigurationFunction, a SasToken vagy a Properties nyilvános tulajdonsággal rendelkeznek) automatikusan igazodnak a bővítmény aktuális formátumához. Ugyanúgy futnak, mint korábban.

Az alábbi séma azt mutatja be, hogy néz ki az előző beállításséma:

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

Az előző formátum a következőképpen igazodik az aktuális formátumhoz:

Aktuális tulajdonságnév Korábbi sémaegyenérték
settings.wmfVersion Beállítások. WMFVersion
settings.configuration.url Beállítások. ModulesUrl
settings.configuration.script A beállítások első része. ConfigurationFunction (előtt \\)
settings.configuration.function A beállítások második része. ConfigurationFunction (a \\) után
settings.configuration.module.name Beállítások. ModuleSource
settings.configuration.module.version Beállítások. ModuleVersion
settings.configurationArguments Beállítások. Tulajdonságok
settings.configurationData.url protectedSettings.DataBlobUri (SAS-jogkivonat nélkül)
settings.privacy.dataCollection Beállítások. Privacy.dataCollection
settings.advancedOptions.downloadMappings Beállítások. AdvancedOptions.DownloadMappings
protectedSettings.configurationArguments protectedSettings.Properties
protectedSettings.configurationUrlSasToken Beállítások. SasToken
protectedSettings.configurationDataUrlSasToken SAS-jogkivonat a protectedSettings.DataBlobUri szolgáltatásból

Hibaelhárítás

Íme néhány hiba, amelybe belefuthat, és hogyan háríthatja el őket.

Érvénytelen értékek

"Privacy.dataCollection a ""{0}. Az egyetlen lehetséges érték az "", az "Engedélyezés" és a "Letiltás". "A WmfVersion a ""{0}. Csak a lehetséges értékek... és a "legújabb".

Probléma: A megadott érték nem engedélyezett.

Megoldás: Módosítsa az érvénytelen értéket érvényes értékre. További információért tekintse meg a részleteket tartalmazó táblázatot.

Érvénytelen URL-cím

"ConfigurationData.url: ""{0}. Ez nem érvényes URL-cím: "A DataBlobUri értéke ""{0}. Ez nem érvényes URL-cím" "Configuration.url is '"{0}. Ez nem érvényes URL-cím"

Probléma: A megadott URL-cím érvénytelen.

Megoldás: Ellenőrizze az összes megadott URL-címet. Győződjön meg arról, hogy minden URL-cím olyan érvényes helyre van feloldva, amelyhez a bővítmény hozzáférhet a távoli gépen.

Érvénytelen RegistrationKey-típus

"Érvénytelen típus a PSCredential típusú RegistrationKey paraméterhez."

Probléma: A protectedSettings.configurationArguments registrationKey értéke nem adható meg más típusként, mint PSCredential.

Megoldás: Módosítsa a RegistrationKey protectedSettings.configurationArguments bejegyzését PSCredential típusra a következő formátumban:

"configurationArguments": {
    "RegistrationKey": {
        "userName": "NOT_USED",
        "Password": "RegistrationKey"
    }
}

Érvénytelen ConfigurationArgument-típus

"Érvénytelen configurationArguments típus {0}"

Probléma: A ConfigurationArguments tulajdonság nem oldható fel kivonattábla-objektumra .

Megoldás: Tegye a ConfigurationArguments tulajdonságot kivonattáblává. Kövesse az előző példákban megadott formátumot. Nézze meg az idézőjeleket, a vesszőket és a kapcsos zárójeleket.

ConfigurationArguments duplikálása

"Duplikált argumentumokat talált a{0} nyilvános és a védett configurationArguments elemben is"

Probléma: A nyilvános beállításokBan a ConfigurationArguments és a Védett beállításokban a ConfigurationArguments tulajdonság ugyanazzal a névvel rendelkezik.

Megoldás: Távolítsa el az egyik duplikált tulajdonságot.

Hiányzó tulajdonságok

"beállítások. A Configuration.function megköveteli, hogy a settings.configuration.url vagy settings.configuration.module paraméter meg legyen adva"

"beállítások. A Configuration.url használatához meg kell adni a settings.configuration.script parancsprogramot"

"beállítások. A Configuration.script használatához meg kell adni a settings.configuration.url címet"

"beállítások. A Configuration.url használatához meg kell adni a settings.configuration.function függvényt"

"protectedSettings.ConfigurationUrlSasToken megköveteli, hogy a settings.configuration.url meg legyen adva"

"protectedSettings.ConfigurationDataUrlSasToken megköveteli a settings.configurationData.url megadását"

Probléma: Egy definiált tulajdonságnak szüksége van egy másik tulajdonságra, amely hiányzik.

Megoldások:

  • Adja meg a hiányzó tulajdonságot.
  • Távolítsa el a hiányzó tulajdonságot igénylő tulajdonságot.

Következő lépések