Overzicht Desired State Configuration voor techniciDesired State Configuration Overview for Engineers

Dit document is bedoeld voor teams van ontwikkelaars en bewerkingen om te begrijpen wat de voordelen van PowerShell Desired State Configuration (DSC).This document is intended for developer and operations teams to understand the benefits of PowerShell Desired State Configuration (DSC). Voor de weergave van een hoger niveau van de waarde DSC biedt, raadpleegt u Desired Configuration overzicht voor besluitvormersFor a higher level view of the value DSC provides, please see Desired State Configuration Overview for Decision Makers

Voordelen van Desired State ConfigurationBenefits of Desired State Configuration

DSC bestaat met:DSC exists to:

  • Verklein de complexiteit van het uitvoeren van scripts in WindowsDecrease the complexity of scripting in Windows
  • De snelheid van herhaling verhogenIncrease the speed of iteration

Het concept van 'continue implementatie' steeds belangrijker.The concept of "continuous deployment" is becoming more important. Doorlopende implementatie betekent dat de mogelijkheid om te implementeren, mogelijk meerdere keren per dag.Continuous deployment means the ability to deploy frequently, potentially many times per day. Het doel van deze implementaties zijn niet iets te repareren, maar naar iets snel gepubliceerd.The purpose of these deployments are not to fix something but to get something published quickly. Met het ophalen van nieuwe functies via ontwikkeling in werking zo soepel en betrouwbaar mogelijk, moet u naar tijdwaarde maken van nieuwe bedrijfslogica verminderen.By getting new features through development into operation as smoothly and reliably as possible, you reduce time-to-value of new business logic.

De overgang naar cloud computing impliceert een implementatieoplossing die gebruikmaakt van een model 'declaratieve' sjabloon, waarbij een end-status-omgeving is gedeclareerd als tekst en gepubliceerd naar een implementatie-engine.The move towards cloud computing implies a deployment solution that utilizes a "declarative" template model, where an end state environment is declared as text and published to a deployment engine. Deze techniek implementatie kunt u snel wijzigen, klikt u op grote schaal, met herstelmogelijkheden tegen bedreiging van de fout omdat op elk gewenst moment de implementatie kan worden consistent herhaald om bescherming te bieden een end-status.This deployment technique allows for rapid change, at scale, with resilience against threat of failure because at any time the deployment can be consistently repeated to guarantee an end state. Het maken van de hulpprogramma's en services die ondersteuning bieden voor deze stijl van bewerkingen door middel van automatisering is een reactie op deze wijzigingen.The creation of tools and services that support this style of operations through automation is a response to these changes.

DSC is een platform waarmee declaratieve en idempotent (herhaalbare)-implementatie, configuratie en overeenstemming.DSC is a platform that provides declarative and idempotent (repeatable) deployment, configuration and conformance. De DSC-platform kunt u om ervoor te zorgen dat de onderdelen van uw datacenter de juiste configuratie, die voorkomt fouten en kostbaar implementatiestoringen voorkomt.The DSC platform enables you to ensure that the components of your data center have the correct configuration, which avoids errors and prevents costly deployment failures. DSC ingeschakeld door het DSC-configuraties te behandelen als onderdeel van de toepassingscode, continue implementatie.By treating DSC configurations as part of application code, DSC enables continuous deployment. De DSC-configuratie moet worden bijgewerkt als onderdeel van de toepassing, ervoor zorgen dat de kennis die nodig zijn voor het implementeren van de toepassing altijd actueel en klaar om te worden gebruikt.The DSC configuration should be updated as a part of the application, ensuring that the knowledge needed to deploy the application is always up-to-date and ready to be used.

'Ik heb PowerShell, waarom ik Desired State Configuration moet?'"I have PowerShell, why do I need Desired State Configuration?"

DSC-configuraties afzonderlijk doel of 'wat ik wil', uitvoeren of "hoe ik wil dit doen."DSC configurations separate intent, or "what I want to do", from execution, or "how I want to do it." Dit betekent dat de logica van de uitvoering van deel uitmaakt van de resources.This means the logic of execution is contained within the resources. Gebruikers hoeven niet te weten hoe u kunt implementeren of implementeren van een functie wanneer een DSC-resource voor deze functie beschikbaar is.Users do not have to know how to implement or deploy a feature when a DSC resource for that feature is available. Hierdoor kan de gebruiker zich richten op de structuur van hun implementatie.This allows the user to focus on the structure of their deployment.

Als u bijvoorbeeld er PowerShell-scripts als volgt uit:As an example, PowerShell scripts should look like this:

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

Dit script is eenvoudig, begrijpen en snel.This script is simple, comprehensible, and straightforward. Als u het script in productie te stellen probeert, kunt u wordt echter voor uitvoeren in verschillende problemen.However, if you try putting that script into production, you will run into several issues. Wat gebeurt er als die script tweemaal in een rij wordt uitgevoerd?What happens if that script is run twice in a row? Wat gebeurt er als Bob had eerder volledige toegang tot de share?What happens if Bob previously had Full Access to the share?

Om te compenseren voor deze problemen, een 'echte' versie van het script ziet er dichter bij ongeveer als volgt:To compensate for these issues, a "real" version of the script will look closer to something like:

# 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 complexere met veel van de logica en foutafhandeling.This script is more complex, with plenty of logic and error handling. Het script is complexer omdat u niet meer worden weergegeven naar wens gereed is, maar te werk.The script is more complex because you are no longer stating what you want done, but how to do it.

DSC kunt u aannemen dat u de gewenste gereed en de onderliggende logica beschouwing verwijderd.DSC allows you to say what you want done, and the underlying logic is abstracted away.

# A configuration is a special kind of PowerShell function
Configuration Sample_Share
{
   Import-DscResource -Module 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  = "Alice"
          FullAccess  = "Bob"
          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 foutloos geformatteerd en eenvoudig te lezen.This script is cleanly formatted and straightforward to read. De logische paden en foutafhandeling nog steeds aanwezig zijn in de resource implementatie, maar onzichtbaar voor de auteur van het script.The logic paths and error handling are still present in the resource implementation, but invisible to the script author.

Het scheiden van de omgeving van structuurSeparating Environment from Structure

Een algemene patroon in DevOps is om meerdere omgevingen voor implementatie.A common pattern in DevOps is to have multiple environments for deployment. Bijvoorbeeld, kunnen er een 'dev'-omgeving gebruikt voor het snel prototype nieuwe code.For example, there might be a "dev" environment used to quickly prototype new code. De code uit de omgeving 'dev' gaat in een omgeving 'test' anderen controleren waar de nieuwe functionaliteit.The code from the "dev" environment goes into a "test" environment, where other people verify the new functionality. Ten slotte wordt de code 'prod' of de productieomgeving live site.Finally, the code goes into "prod", or the live site production environment.

DSC-configuraties mogelijk deze dev-test-prod-pipeline met behulp van configuratiegegevens.DSC configurations accommodate this dev-test-prod pipeline through the use of configuration data. Hiermee isoleert verder het verschil tussen de structuur van de configuratie van de knooppunten die worden beheerd.This further abstracts the difference between the structure of the configuration from the nodes that are managed. U kunt bijvoorbeeld een configuratie die een SQL-server, een IIS-server en een server voor de middelste laag vereist definiƫren.For example, you can define a configuration that requires a SQL server, an IIS server, and a middle-tier server. Ongeacht welke knooppunten de verschillende onderdelen van deze configuratie wordt weergegeven, wordt deze drie elementen altijd aanwezig zijn.Regardless of what nodes receive the different pieces of this configuration, those three elements will always be present. U kunt configuratiegegevens wijst alle drie elementen naar dezelfde machine in een omgeving dev afzonderlijke uit de drie elementen met drie verschillende machines voor een testomgeving en tot slot naar uw productieservers voor de prod-omgeving.You can use configuration data to point all three elements towards the same machine for a dev environment, separate out the three elements to three different machines for a test environment, and finally towards all your production servers for the prod environment. Als u wilt implementeren in verschillende omgevingen, u kunt aanroepen Start DscConfiguration met de juiste configuratie van de gegevens voor de omgeving die u wilt targeten.To deploy to the different environments, you can invoke Start-DscConfiguration with the correct configuration data for the environment you want to target.

Zie ookSee Also

ConfiguratiesConfigurations

ConfiguratiegegevensConfiguration Data

ResourcesResources