Delen via


Overzicht Desired State Configuration voor technici

Dit document is bedoeld voor ontwikkelaars en operationele teams om inzicht te hebben in de voordelen van PowerShell Desired State Configuration (DSC). Voor een overzicht van de waarde die DSC biedt, raadpleegt u Desired State Configuration Overzicht voor besluitvormers

Voordelen van Desired State Configuration

DSC bestaat voor:

  • De complexiteit van het uitvoeren van scripts in Windows verminderen
  • De iteratiesnelheid verhogen

Het concept 'continue implementatie' wordt steeds belangrijker. Continue implementatie betekent de mogelijkheid om vaak en mogelijk meerdere keren per dag te implementeren. Het doel van deze implementaties is niet om iets op te lossen, maar om iets snel te publiceren. Door nieuwe functies via de ontwikkeling zo soepel en betrouwbaar mogelijk te laten werken, vermindert u de time-to-value van nieuwe bedrijfslogica.

De overstap naar cloud-computing impliceert een implementatieoplossing die gebruikmaakt van een 'declaratief' sjabloonmodel, waarbij een eindstatusomgeving wordt gedeclareerd als tekst en wordt gepubliceerd naar een implementatie-engine. Deze implementatietechniek zorgt voor snelle wijzigingen, op schaal, met tolerantie tegen de dreiging van fouten, omdat de implementatie op elk gewenst moment consistent kan worden herhaald om een eindstatus te garanderen. Het maken van hulpprogramma's en services die deze stijl van bewerkingen ondersteunen via automatisering is een reactie op deze wijzigingen.

DSC is een platform dat declaratieve en idempotente (herhaalbare) implementatie, configuratie en conformiteit biedt. Met het DSC-platform kunt u ervoor zorgen dat de onderdelen van uw datacentrum de juiste configuratie hebben, waardoor fouten en kostbare implementatiefouten worden voorkomen. Door DSC-configuraties te behandelen als onderdeel van toepassingscode, maakt DSC continue implementatie mogelijk. De DSC-configuratie moet worden bijgewerkt als onderdeel van de toepassing, zodat de kennis die nodig is voor het implementeren van de toepassing altijd up-to-date is en klaar is voor gebruik.

"Ik heb PowerShell, waarom heb ik Desired State Configuration nodig?"

DSC-configuraties scheiden intentie, of 'wat ik wil doen', van uitvoering of 'hoe ik het wil doen'. Dit betekent dat de logica van de uitvoering is opgenomen in de resources. Gebruikers hoeven niet te weten hoe ze een functie kunnen implementeren of implementeren wanneer er een DSC-resource voor die functie beschikbaar is. Hierdoor kan de gebruiker zich richten op de structuur van de implementatie.

PowerShell-scripts moeten er bijvoorbeeld als volgt uitzien:

# Create a share in Windows Server 8
New-SmbShare -Name MyShare -Path C:\Demo\Temp -FullAccess Alice -ReadAccess Bob

Dit script is eenvoudig, begrijpelijk en duidelijk. Als u dat script echter in productie probeert te zetten, treedt er een aantal problemen op. Wat gebeurt er als dat script twee keer achter elkaar wordt uitgevoerd? Wat gebeurt er als Bob eerder volledige toegang tot de share had?

Om deze problemen te compenseren, kijkt een 'echte' versie van het script dichter bij iets als:

# But actually creating a share in an idempotent way would be

$shareExists = $false
$smbShare = Get-SmbShare -Name $Name -ErrorAction SilentlyContinue
if($smbShare -ne $null)
{
    Write-Verbose -Message "Share with name $Name exists"
    $shareExists = $true
}

if ($shareExists -eq $false)
{
    Write-Verbose "Creating share $Name to ensure it is Present"
    New-SmbShare @PSBoundParameters
}
else
{
    # Need to call either Set-SmbShare or *ShareAccess cmdlets
    if ($PSBoundParameters.ContainsKey("ChangeAccess"))
    {
       #...etc, etc, etc
    }
}

Dit script is complexer, met veel logica en foutafhandeling. Het script is complexer omdat u niet langer aangeeft wat u wilt doen, maar hoe u het moet doen.

Met DSC kunt u zeggen wat u wilt doen en de onderliggende logica wordt weggeabstraheerd.

# A configuration is a special kind of PowerShell function
Configuration Sample_Share
{
   Import-DSCResource -ModuleName xSmbShare
   # Nodes are the endpoint we wish to configure
   # A Configuration block can have zero or more Node blocks
   Node $NodeName
   {
      # Next, specify one or more resource blocks
      # Resources are simply PowerShell modules that
      # implement the logic of "how" to execute a task
      xSmbShare MySMBShare
      {
          Ensure      = "Present"
          Name        = "MyShare"
          Path        = "C:\Demo\Temp"
          ReadAccess  = "Bob"
          FullAccess  = "Alice"
          Description = "This is an updated description for this share"
      }
   }
}
#Run the function to compile the configuration
Sample_Share
#Pass the configuration to the nodes we defined and configure them
Start-DscConfiguration Sample_Share

Dit script is netjes opgemaakt en eenvoudig te lezen. De logische paden en foutafhandeling zijn nog steeds aanwezig in de resource-implementatie , maar onzichtbaar voor de auteur van het script.

Omgeving van structuur scheiden

Een veelvoorkomend patroon in DevOps is om meerdere omgevingen te hebben voor implementatie. Er kan bijvoorbeeld een ontwikkelomgeving zijn die wordt gebruikt om snel een prototype van nieuwe code te maken. De code van de ontwikkelomgeving gaat naar een testomgeving, waar anderen de nieuwe functionaliteit controleren. Ten slotte gaat de code naar 'prod' of de productieomgeving van de livesite.

DSC-configuraties bieden plaats aan deze dev-test-prod-pijplijn door gebruik te maken van configuratiegegevens. Dit abstraheert verder het verschil tussen de structuur van de configuratie van de knooppunten die worden beheerd. U kunt bijvoorbeeld een configuratie definiƫren waarvoor een SQL-server, een IIS-server en een server in de middelste laag zijn vereist. Ongeacht welke knooppunten de verschillende onderdelen van deze configuratie ontvangen, zijn deze drie elementen altijd aanwezig. U kunt configuratiegegevens gebruiken om alle drie de elementen naar dezelfde machine te verwijzen voor een ontwikkelomgeving, de drie elementen te scheiden naar drie verschillende machines voor een testomgeving en ten slotte naar al uw productieservers voor de prod-omgeving. Als u wilt implementeren in de verschillende omgevingen, kunt u aanroepen Start-DscConfiguration met de juiste configuratiegegevens voor de omgeving waarop u zich wilt richten.

Zie ook

Configuraties

Configuratiegegevens

Bronnen