Inleiding tot de uitbreiding van de Desired State Configuration-handler

De Azure VM-agent en de bijbehorende extensies maken deel uit van De infrastructuurservices van Microsoft Azure. VM-extensies zijn softwareonderdelen die vm-functionaliteit uitbreiden en verschillende VM-beheerbewerkingen vereenvoudigen.

Notitie

Voordat u de DSC-extensie inschakelt, willen we graag weten dat een nieuwere versie van DSC nu beschikbaar is in preview, beheerd door een functie van Azure Policy benoemde gastconfiguratie. De functie voor gastconfiguratie combineert functies van de dsc-extensiehandler (Desired State Configuration), Azure Automation State Configuration en de meest aangevraagde functies van feedback van klanten. Gastconfiguratie omvat ook ondersteuning voor hybride machines via servers met Arc.

De primaire use-case voor de DSC-extensie (Azure Desired State Configuration) is het bootstrapen van een VM naar de DSC-service (Azure Automation State Configuration). De service biedt voordelen die bestaan uit doorlopend beheer van de VM-configuratie en -integratie met andere operationele hulpprogramma's, zoals Azure Monitoring. Het gebruik van de extensie om VM's te registreren bij de service biedt een flexibele oplossing die zelfs in Azure-abonnementen werkt.

U kunt de DSC-extensie onafhankelijk van de Automation DSC-service gebruiken. Hiermee wordt echter alleen een configuratie naar de VM gepusht. Er is geen doorlopende rapportage beschikbaar, behalve lokaal in de VIRTUELE machine.

Dit artikel bevat informatie over beide scenario's: het gebruik van de DSC-extensie voor automation-onboarding en het gebruik van de DSC-extensie als hulpprogramma voor het toewijzen van configuraties aan VM's met behulp van de Azure SDK.

Vereisten

  • Lokale computer: als u wilt communiceren met de Azure VM-extensie, moet u de Azure Portal of de Azure PowerShell SDK gebruiken.
  • Gastagent: de Azure-VM die is geconfigureerd door de DSC-configuratie, moet een besturingssysteem zijn dat ondersteuning biedt voor Windows Management Framework (WMF) 4.0 of hoger. Zie de versiegeschiedenis van de DSC-extensie voor de volledige lijst met ondersteunde besturingssysteemversies.

Termen en concepten

In deze handleiding wordt ervan uitgegaan dat u bekend bent met de volgende concepten:

  • Configuratie: een DSC-configuratiedocument.
  • Knooppunt: een doel voor een DSC-configuratie. In dit document verwijst knooppunt altijd naar een Virtuele Azure-machine.
  • Configuratiegegevens: een PSD1-bestand met omgevingsgegevens voor een configuratie.

Architectuur

De Azure DSC-extensie maakt gebruik van het Azure VM Agent-framework voor het leveren, uitvoeren en rapporteren van DSC-configuraties die worden uitgevoerd op Azure-VM's. De DSC-extensie accepteert een configuratiedocument en een set parameters. Als er geen bestand wordt opgegeven, wordt er een standaardconfiguratiescript ingesloten met de extensie. Het standaardconfiguratiescript wordt alleen gebruikt om metagegevens in te stellen in lokale Configuration Manager.

Wanneer de extensie voor het eerst wordt aangeroepen, wordt een versie van WMF geïnstalleerd met behulp van de volgende logica:

  • Als het besturingssysteem van de Azure-VM is Windows Server 2016, wordt er geen actie ondernomen. Windows Server 2016 is al de nieuwste versie van PowerShell geïnstalleerd.
  • Als de eigenschap wmfVersion is opgegeven, wordt die versie van WMF geïnstalleerd, tenzij die versie niet compatibel is met het besturingssysteem van de VIRTUELE machine.
  • Als er geen wmfVersion-eigenschap is opgegeven, wordt de meest recente toepasselijke versie van WMF geïnstalleerd.

Voor het installeren van WMF moet opnieuw worden opgestart. Nadat de extensie opnieuw is opgestart, wordt het .zip-bestand gedownload dat is opgegeven in de eigenschap modulesUrl , indien opgegeven. Als deze locatie zich in Azure Blob Storage bevindt, kunt u een SAS-token opgeven in de eigenschap sasToken om toegang te krijgen tot het bestand. Nadat de .zip is gedownload en uitgepakt, wordt de configuratiefunctie die is gedefinieerd in configurationFunction uitgevoerd om een .mof-bestand (Managed Object Format) te genereren. De extensie wordt vervolgens uitgevoerd Start-DscConfiguration -Force met behulp van het gegenereerde .mof-bestand. De extensie legt uitvoer vast en schrijft deze naar het Azure-statuskanaal.

Standaardconfiguratiescript

De Azure DSC-extensie bevat een standaardconfiguratiescript dat is bedoeld om te worden gebruikt wanneer u een VIRTUELE machine onboardt naar de Azure Automation DSC-service. De scriptparameters worden afgestemd op de configureerbare eigenschappen van lokale Configuration Manager. Zie Standaardconfiguratiescript in Desired State Configuration extensie met Azure Resource Manager-sjablonen voor scriptparameters. Zie de Azure-quickstartsjabloon in GitHub voor het volledige script.

Informatie voor het registreren bij Azure Automation State Configuration (DSC)-service

Wanneer u de DSC-extensie gebruikt om een knooppunt te registreren bij de State Configuration-service, moeten er drie waarden worden opgegeven.

  • RegistrationUrl - het https-adres van het Azure Automation-account
  • RegistrationKey: een gedeeld geheim dat wordt gebruikt voor het registreren van knooppunten bij de service
  • NodeConfigurationName: de naam van de knooppuntconfiguratie (MOF) die moet worden opgehaald uit de service om de serverfunctie te configureren

Deze informatie kan worden weergegeven in de Azure Portal of u kunt PowerShell gebruiken.

(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).Endpoint
(Get-AzAutomationRegistrationInfo -ResourceGroupName <resourcegroupname> -AutomationAccountName <accountname>).PrimaryKey

Zorg ervoor dat de knooppuntconfiguratie bestaat in Azure State Configuration voor de naam van de knooppuntconfiguratie. Als dit niet het geval is, retourneert de implementatie van de extensie een fout. Zorg er ook voor dat u de naam van de knooppuntconfiguratie gebruikt en niet de configuratie. Er wordt een configuratie gedefinieerd in een script dat wordt gebruikt om het MOF-bestand (Node Configuration) te compileren. De naam is altijd de configuratie gevolgd door een punt . en localhost een of een specifieke computernaam.

DSC-extensie in Resource Manager-sjablonen

In de meeste scenario's zijn Resource Manager implementatiesjablonen de verwachte manier om met de DSC-extensie te werken. Zie Desired State Configuration-extensie met Azure Resource Manager-sjablonen voor meer informatie en voorbeelden van het opnemen van de DSC-extensie in Resource Manager implementatiesjablonen.

PowerShell-cmdlets voor DSC-extensie

De PowerShell-cmdlets die worden gebruikt om de DSC-extensie te beheren, worden het beste gebruikt in interactieve scenario's voor probleemoplossing en het verzamelen van informatie. U kunt de cmdlets gebruiken voor het verpakken, publiceren en bewaken van DSC-extensie-implementaties. Cmdlets voor de DSC-extensie zijn nog niet bijgewerkt om te werken met het standaardconfiguratiescript.

De cmdlet Publish-AzVMDscConfiguration neemt een configuratiebestand in beslag, scant het naar afhankelijke DSC-resources en maakt vervolgens een .zip-bestand. Het .zip-bestand bevat de configuratie- en DSC-resources die nodig zijn om de configuratie uit te voeren. De cmdlet kan het pakket ook lokaal maken met behulp van de parameter -OutputArchivePath . Anders publiceert de cmdlet het .zip-bestand naar blobopslag en beveiligt deze vervolgens met een SAS-token.

Het .ps1 configuratiescript dat de cmdlet maakt, bevindt zich in het .zip bestand in de hoofdmap van de archiefmap. De modulemap wordt in de archiefmap in resources geplaatst.

De cmdlet Set-AzVMDscExtension injecteert de instellingen die de PowerShell DSC-extensie nodig heeft in een VM-configuratieobject.

De cmdlet Get-AzVMDscExtension haalt de DSC-extensiestatus van een specifieke VM op.

De cmdlet Get-AzVMDscExtensionStatus haalt de status op van de DSC-configuratie die wordt uitgevoerd door de DSC-extensiehandler. Deze actie kan worden uitgevoerd op één virtuele machine of op een groep VM's.

De cmdlet Remove-AzVMDscExtension verwijdert de extensiehandler van een specifieke VM. Met deze cmdlet verwijdert u de configuratie niet , verwijdert u WMF of wijzigt u de toegepaste instellingen op de VIRTUELE machine niet. De extensiehandler wordt alleen verwijderd.

Belangrijke informatie over Resource Manager DSC-extensie-cmdlets:

  • Azure Resource Manager-cmdlets zijn synchroon.
  • De parameters ResourceGroupName, VMName, ArchiveStorageAccountName, Version en Location zijn allemaal vereist.
  • ArchiveResourceGroupName is een optionele parameter. U kunt deze parameter opgeven wanneer uw opslagaccount deel uitmaakt van een andere resourcegroep dan de resourcegroep waarin de VIRTUELE machine wordt gemaakt.
  • Gebruik de AutoUpdate-switch om de extensiehandler automatisch bij te werken naar de nieuwste versie wanneer deze beschikbaar is. Deze parameter kan ertoe leiden dat de VM opnieuw wordt opgestart wanneer er een nieuwe versie van WMF wordt uitgebracht.

Aan de slag met cmdlets

De Azure DSC-extensie kan DSC-configuratiedocumenten gebruiken om azure-VM's rechtstreeks te configureren tijdens de implementatie. Met deze stap wordt het knooppunt niet geregistreerd bij Automation. Het knooppunt wordt niet centraal beheerd.

In het volgende voorbeeld ziet u een eenvoudig voorbeeld van een configuratie. Sla de configuratie lokaal op als iisInstall.ps1.

configuration IISInstall
{
    node "localhost"
    {
        WindowsFeature IIS
        {
            Ensure = "Present"
            Name = "Web-Server"
        }
    }
}

Met de volgende opdrachten wordt het iisInstall.ps1-script op de opgegeven VM op de opgegeven VM weergegeven. De opdrachten voeren ook de configuratie uit en rapporteren vervolgens weer over de status.

$resourceGroup = 'dscVmDemo'
$vmName = 'myVM'
$storageName = 'demostorage'
#Publish the configuration script to user storage
Publish-AzVMDscConfiguration -ConfigurationPath .\iisInstall.ps1 -ResourceGroupName $resourceGroup -StorageAccountName $storageName -force
#Set the VM to run the DSC configuration
Set-AzVMDscExtension -Version '2.76' -ResourceGroupName $resourceGroup -VMName $vmName -ArchiveStorageAccountName $storageName -ArchiveBlobName 'iisInstall.ps1.zip' -AutoUpdate -ConfigurationName 'IISInstall'

Azure CLI-implementatie

De Azure CLI kan worden gebruikt om de DSC-extensie te implementeren op een bestaande virtuele machine.

Voor een virtuele machine met Windows:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name DSC \
  --publisher Microsoft.Powershell \
  --version 2.77 --protected-settings '{}' \
  --settings '{}'

Voor een virtuele machine waarop Linux wordt uitgevoerd:

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name DSCForLinux \
  --publisher Microsoft.OSTCExtensions \
  --version 2.7 --protected-settings '{}' \
  --settings '{}'

Azure Portal-functionaliteit

DSC instellen in de portal:

  1. Ga naar een VIRTUELE machine.
  2. Selecteer onder Instellingen de optie Extensies.
  3. Selecteer + Toevoegen op de nieuwe pagina die is gemaakt en selecteer vervolgens PowerShell Desired State Configuration.
  4. Klik onder aan de pagina met extensiegegevens op Maken .

De portal verzamelt de volgende invoer:

  • Configuratiemodules of script: dit veld is verplicht (het formulier is niet bijgewerkt voor het standaardconfiguratiescript). Voor configuratiemodules en scripts is een .ps1-bestand met een configuratiescript of een .zip-bestand met een .ps1 configuratiescript in de hoofdmap vereist. Als u een .zip-bestand gebruikt, moeten alle afhankelijke resources worden opgenomen in modulemappen in de .zip. U kunt het .zip bestand maken met behulp van de cmdlet Publish-AzureVMDscConfiguration -OutputArchivePath die is opgenomen in de Azure PowerShell SDK. Het .zip-bestand wordt geüpload naar uw gebruikersblobopslag en beveiligd door een SAS-token.

  • Module-gekwalificeerde naam van configuratie: u kunt meerdere configuratiefuncties opnemen in een .ps1-bestand. Voer de naam in van het configuratie-.ps1 script gevolgd door \ en de naam van de configuratiefunctie. Als uw .ps1 script bijvoorbeeld de naam configuration.ps1 heeft en de configuratie IisInstall is, voert u configuration.ps1\IisInstall in.

  • Configuratieargumenten: Als de configuratiefunctie argumenten gebruikt, voert u deze hier in de notatie argumentName1=value1,argumentName2=value2. Deze indeling is een andere indeling waarin configuratieargumenten worden geaccepteerd in PowerShell-cmdlets of Resource Manager sjablonen.

  • PSD1-bestand voor configuratiegegevens: als voor uw configuratie een configuratiegegevensbestand .psd1is vereist, gebruikt u dit veld om het gegevensbestand te selecteren en te uploaden naar uw gebruikersblobopslag. Het configuratiegegevensbestand wordt beveiligd door een SAS-token in blobopslag.

  • WMF-versie: Hiermee geeft u de versie van Windows Management Framework (WMF) op die moet worden geïnstalleerd op uw VM. Als u deze eigenschap instelt op de meest recente versie van WMF, wordt de meest recente versie van WMF geïnstalleerd. Momenteel zijn de enige mogelijke waarden voor deze eigenschap 4.0, 5.0, 5.1 en nieuwste. Deze mogelijke waarden zijn onderhevig aan updates. De standaardwaarde is de meest recente.

  • Gegevensverzameling: bepaalt of de extensie telemetrie verzamelt. Zie het verzamelen van gegevens van de Azure DSC-extensie voor meer informatie.

  • Versie: Hiermee geeft u de versie van de DSC-extensie op die moet worden geïnstalleerd. Zie de versiegeschiedenis van de DSC-extensie voor meer informatie over versies.

  • Secundaire versie automatisch bijwerken: dit veld wordt toegewezen aan de AutoUpdate-switch in de cmdlets en stelt de extensie in staat automatisch bij te werken naar de nieuwste versie tijdens de installatie. Met Ja wordt de extensie-handler geïnstrueerd om de meest recente beschikbare versie te gebruiken. Nee dwingt de opgegeven versie af om te worden geïnstalleerd. Het selecteren van Ja of Nee is niet hetzelfde als het selecteren van Nee.

Logboeken

Logboeken voor de extensie worden opgeslagen op de volgende locatie: C:\WindowsAzure\Logs\Plugins\Microsoft.Powershell.DSC\<version number>

Volgende stappen