Přehled platformy Desired State Configuration pro techniky

Tento dokument je určený vývojářským a provozním týmům, aby porozuměl výhodám powershellového Desired State Configuration (DSC). Pokud chcete zobrazit hodnotu, kterou poskytuje DSC, podívejte se na přehled Desired State Configuration pro pracovníky s rozhodovací pravomocí.

Výhody Desired State Configuration

DSC existuje pro:

  • Snížení složitosti skriptování ve Windows
  • Zvýšení rychlosti iterace

Koncept průběžného nasazování je stále důležitější. Průběžné nasazování znamená možnost nasazovat často, potenciálně mnohokrát za den. Účelem těchto nasazení není něco opravit, ale něco rychle publikovat. Tím, že nové funkce zprovozníte co nejplynulejším a nejs spolehlivěji, zkrátíte čas k hodnotě nové obchodní logiky.

Přechod ke cloud computingu znamená řešení nasazení, které využívá model "deklarativní" šablony, kde je prostředí koncového stavu deklarováno jako text a publikováno do modulu nasazení. Tato technika nasazení umožňuje rychlé změny ve velkém měřítku a odolnost proti hrozbě selhání, protože nasazení lze kdykoli konzistentně opakovat, aby byl zaručen koncový stav. Vytváření nástrojů a služeb, které podporují tento styl operací prostřednictvím automatizace, je reakcí na tyto změny.

DSC je platforma, která poskytuje deklarativní a idempotentní (opakovatelné) nasazení, konfiguraci a soulad. Platforma DSC umožňuje zajistit, aby komponenty vašeho datacentra měly správnou konfiguraci, která zabraňuje chybám a nákladným selháním nasazení. Díky tomu, že se konfigurace DSC považují za součást kódu aplikace, umožňuje průběžné nasazování. Konfigurace DSC by se měla aktualizovat jako součást aplikace, aby se zajistilo, že znalosti potřebné k nasazení aplikace jsou vždy aktuální a připravené k použití.

"Mám PowerShell, proč potřebuji Desired State Configuration?"

Konfigurace DSC oddělují záměr neboli "co chci udělat" od provádění nebo "jak to chci udělat". To znamená, že logika provádění je obsažena v prostředcích. Uživatelé nemusí vědět, jak implementovat nebo nasadit funkci, pokud je k dispozici prostředek DSC pro tuto funkci. Díky tomu se uživatel může zaměřit na strukturu svého nasazení.

Skripty PowerShellu by například měly vypadat takto:

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

Tento skript je jednoduchý, srozumitelný a přímočarý. Pokud se ale pokusíte tento skript uvést do produkčního prostředí, dojde k několika problémům. Co se stane, když se tento skript spustí dvakrát za sebou? Co se stane, když měl Bob dříve úplný přístup ke sdílené složce?

Aby se tyto problémy vykompenzují, "skutečná" verze skriptu se bude blížit k následujícímu příkladu:

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

Tento skript je složitější a nabízí spoustu logiky a zpracování chyb. Skript je složitější, protože už neuvádíte, co chcete udělat, ale jak to udělat.

DSC umožňuje říct, co chcete udělat, a základní logika se abstrahuje.

# 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

Tento skript je čistě formátovaný a snadno čitelný. Logické cesty a zpracování chyb se v implementaci prostředků stále nacházejí, ale autor skriptu je nevidí.

Oddělení prostředí od struktury

Běžným vzorem v DevOps je mít pro nasazení více prostředí. Například může existovat "vývojové" prostředí, které se používá k rychlému vytvoření prototypu nového kódu. Kód z vývojového prostředí přejde do "testovacího" prostředí, kde ostatní uživatelé ověřují nové funkce. Nakonec kód přejde do "prod" neboli do produkčního prostředí živého webu.

Konfigurace DSC použijí tento kanál pro vývoj-testování prostřednictvím konfiguračních dat. Tím se dále abstrahuje rozdíl mezi strukturou konfigurace z uzlů, které jsou spravovány. Můžete například definovat konfiguraci, která vyžaduje server SQL, server služby IIS a server střední vrstvy. Bez ohledu na to, které uzly obdrží různé části této konfigurace, budou tyto tři prvky vždy přítomny. Konfigurační data můžete použít k nasměrování všech tří prvků na stejný počítač pro vývojové prostředí, oddělení těchto tří prvků na tři různé počítače pro testovací prostředí a nakonec ke všem produkčním serverům pro produkční prostředí. Nasazení do různých prostředí můžete vyvolat Start-DscConfiguration se správnými konfiguračními daty pro prostředí, na které chcete cílit.

Viz také

Konfigurace

Konfigurační data

Prostředky