A célállapot-konfiguráció áttekintése mérnökök számáraDesired State Configuration Overview for Engineers

Ez a dokumentum fejlesztőknek és operatív csapatoknak készült a PowerShell desired State Configuration (DSC) előnyeinek megismeréséhez.This document is intended for developer and operations teams to understand the benefits of PowerShell Desired State Configuration (DSC). A DSC által biztosított érték magasabb szintű megjelenítéséhez tekintse meg a döntéshozók a kívánt állapot konfigurációjának áttekintése című témakört.For a higher level view of the value DSC provides, please see Desired State Configuration Overview for Decision Makers

A kívánt állapot konfigurációjának előnyeiBenefits of Desired State Configuration

A DSC a következőhöz van:DSC exists to:

  • A parancsfájlok összetettségének csökkentése a WindowsbanDecrease the complexity of scripting in Windows
  • Az iteráció sebességének növeléseIncrease the speed of iteration

A "folyamatos üzembe helyezés" fogalma egyre fontosabbá válik.The concept of "continuous deployment" is becoming more important. A folyamatos üzembe helyezés lehetővé teszi, hogy naponta, sokszor többször is telepítsen.Continuous deployment means the ability to deploy frequently, potentially many times per day. Ezeknek az üzembe helyezéseknek a célja, hogy nem javítanak valamit, de gyorsan közzé kell tenni valamit.The purpose of these deployments are not to fix something but to get something published quickly. Azáltal, hogy a lehető legzökkenőmentesebb és megbízhatóan végzi a fejlesztést az új funkciókkal, csökkentheti az új üzleti logika időbeli értékét.By getting new features through development into operation as smoothly and reliably as possible, you reduce time-to-value of new business logic.

A Felhőbeli számítástechnika irányába történő áttérés olyan üzembe helyezési megoldást jelent, amely egy "deklaratív" sablon modellt használ, ahol a befejező állapotú környezet szövegként van deklarálva, és közzé van téve egy üzembe helyezési motoron.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. Ez az üzembe helyezési módszer lehetővé teszi a gyors, nagy léptékű módosítást, amely rugalmasságot biztosít a meghibásodás veszélye miatt, mert az üzembe helyezés bármikor megismételhető a befejezési állapot biztosításához.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. Az ilyen típusú műveleteket támogató eszközök és szolgáltatások automatizáláson keresztüli létrehozása a változásokra adott válasz.The creation of tools and services that support this style of operations through automation is a response to these changes.

A DSC egy olyan platform, amely deklaratív és idempotens (ismételhető) üzembe helyezést, konfigurálást és megfelelést biztosít.DSC is a platform that provides declarative and idempotent (repeatable) deployment, configuration and conformance. A DSC platform lehetővé teszi annak biztosítását, hogy az adatközpont összetevői megfelelő konfigurációval rendelkezzenek, ami elkerüli a hibákat, és megakadályozza a költséges üzembe helyezési hibákat.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. A DSC-konfigurációk alkalmazási kód részeként történő kezelésével a DSC lehetővé teszi a folyamatos üzembe helyezést.By treating DSC configurations as part of application code, DSC enables continuous deployment. A DSC-konfigurációt az alkalmazás részeként kell frissíteni, hogy az alkalmazás üzembe helyezéséhez szükséges ismeretek mindig naprakészek legyenek, és készen álljanak a használatra.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.

"PowerShell, miért van szükségem a kívánt állapot konfigurálására?""I have PowerShell, why do I need Desired State Configuration?"

A DSC-konfigurációk külön szándékot, vagy "mit szeretnék csinálni", a végrehajtástól, vagy "hogyan szeretném csinálni".DSC configurations separate intent, or "what I want to do", from execution, or "how I want to do it." Ez azt jelenti, hogy a végrehajtás logikája az erőforrásokon belül található.This means the logic of execution is contained within the resources. A felhasználóknak nem kell tudniuk, hogyan implementálják vagy helyezik üzembe a szolgáltatást, ha elérhető a szolgáltatáshoz tartozó DSC-erőforrás.Users do not have to know how to implement or deploy a feature when a DSC resource for that feature is available. Ez lehetővé teszi a felhasználó számára, hogy az üzembe helyezés szerkezetére koncentráljon.This allows the user to focus on the structure of their deployment.

A PowerShell-parancsfájloknak például a következőképpen kell kinéznie: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

Ez a szkript egyszerű, érthető és egyszerű.This script is simple, comprehensible, and straightforward. Ha azonban a szkriptet éles környezetben próbálja meg üzembe helyezve, számos problémába fog futni.However, if you try putting that script into production, you will run into several issues. Mi történik, ha a szkript kétszer fut egy sorban?What happens if that script is run twice in a row? Mi történik, ha Bob korábban teljes hozzáféréssel rendelkezett a megosztáshoz?What happens if Bob previously had Full Access to the share?

Ezen problémák kompenzálása érdekében a szkript "valódi" verziója közelebb fog nézni a következőhöz hasonló módon: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
    }
}

Ez a szkript összetettebb, rengeteg logikával és hibakezelés.This script is more complex, with plenty of logic and error handling. A szkript bonyolultabb, mert már nem arról van szó, hogy mit szeretne tenni, de hogyan kell csinálni.The script is more complex because you are no longer stating what you want done, but how to do it.

A DSC segítségével elmondhatja, hogy mit szeretne tenni, és a mögöttes logika el van-e absztrakt.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  = "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

Ezt a szkriptet tisztán formázzák és egyszerűen olvashatóak.This script is cleanly formatted and straightforward to read. A logikai elérési utak és a hibakezelés továbbra is megtalálható az erőforrás -implementációban, de a szkript szerzője nem látható.The logic paths and error handling are still present in the resource implementation, but invisible to the script author.

Környezet elkülönítése a szerkezetbőlSeparating Environment from Structure

A DevOps gyakori mintája több környezet üzembe helyezése.A common pattern in DevOps is to have multiple environments for deployment. Előfordulhat például, hogy egy "dev" környezet van használatban az új kódok gyors prototípusához.For example, there might be a "dev" environment used to quickly prototype new code. A "fejlesztői" környezet programkódja egy "teszt" környezetbe kerül, ahol a többi személy ellenőrzi az új funkciókat.The code from the "dev" environment goes into a "test" environment, where other people verify the new functionality. Végezetül a kód a "Prod" vagy a Live site éles környezetbe kerül.Finally, the code goes into "prod", or the live site production environment.

A DSC-konfigurációk a fejlesztői-test-Prod folyamatot a konfigurációsadathasználattal fogadják el.DSC configurations accommodate this dev-test-prod pipeline through the use of configuration data. Ez továbbra is elvégzi a konfiguráció struktúrája közötti különbséget a felügyelt csomópontok között.This further abstracts the difference between the structure of the configuration from the nodes that are managed. Megadhat például egy olyan konfigurációt, amely egy SQL Servert, egy IIS-kiszolgálót és egy középső rétegbeli kiszolgálót igényel.For example, you can define a configuration that requires a SQL server, an IIS server, and a middle-tier server. Függetlenül attól, hogy melyik csomópont kapja a konfiguráció különböző darabjait, a három elem mindig jelen lesz.Regardless of what nodes receive the different pieces of this configuration, those three elements will always be present. A konfigurációs adatokat úgy is használhatja, hogy mindhárom elemet ugyanarra a gépre irányítsa egy fejlesztői környezet esetében, és a három elemet három különböző gépre kiválaszthatja egy tesztkörnyezetben, végül pedig az összes éles kiszolgálót a gyártási környezethez.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. A különböző környezetekben történő üzembe helyezéshez a megcélozni kívánt környezet megfelelő konfigurációs adatokkal hívható Start-DscConfiguration meg.To deploy to the different environments, you can invoke Start-DscConfiguration with the correct configuration data for the environment you want to target.

Lásd még:See Also

KonfigurációkConfigurations

Konfigurációs adatokConfiguration Data

ErőforrásokResources