Dosažení požadovaného stavu pomocí PowerShell DSC

Dokončeno

K určení požadovaného stavu virtuálního počítače můžete použít PowerShell DSC. V této lekci se dozvíte více o PowerShell DSC a o tom, jak ho používat k řízení stavu virtuálních počítačů. V ukázkovém scénáři použijete PowerShell DSC, abyste měli jistotu, že je služba IIS pro Windows Server nainstalovaná a konfigurovaná konzistentně na všech webových serverech.

Na konci této lekce:

  • Budete rozumět principům uzlů a bloků konfigurace.
  • Budete rozumět principům prostředků přihlašovacích údajů.
  • Budete umět napsat kód PowerShell DSC pro idempotentní instalaci služby Microsoft IIS.

Prostředky DSC

Viděli jste, že PowerShell DSC je deklarativní skriptovací jazyk. Deklarativní programování se zaměřuje na výsledek, nikoli na cestu. PowerShell DSC vám pomůže, když potřebujete nakonfigurovat a nasadit prostředek Azure konzistentně na sadu virtuálních počítačů. PowerShell DSC můžete použít i v případě, že neznáte technický postup instalace a konfigurace daného softwaru a služeb.

Windows Server obsahuje sadu integrovaných prostředků PowerShell DSC. Tyto prostředky můžete zobrazit spuštěním rutiny PowerShellu Get-DSCResource .

Get-DscResource | select Name,Module,Properties

Některé integrované prostředky PowerShell DSC jsou uvedeny v následující tabulce.

Resource Popis
Soubor Spravuje soubory a složky v uzlu.
Archiv Dekomprimuje archiv ve formátu .zip.
Prostředí Spravuje proměnné prostředí systému.
Protokol Zapisuje zprávu do protokolu událostí DSC.
Balíček Nainstaluje nebo odebere balíček.
Registr Spravuje klíč registru uzlu (kromě HKEY Users).
Skript Provádí příkazy PowerShellu v uzlu.
Služba Spravuje služby systému Windows.
Uživatelská Spravuje místní uživatele v uzlu.
WindowsFeature Přidá nebo odebere roli nebo funkci v uzlu.
WindowsOptionalFeature Přidá nebo odebere volitelnou roli nebo funkci v uzlu.
WindowsProcess Spravuje proces systému Windows.

Pro složitější prostředky, jako je integrace služby Active Directory, použijte sadu prostředků DSC, která se aktualizuje každý měsíc. Odkaz na sadu prostředků DSC najdete v souhrnné lekci na konci tohoto modulu.

Prostředek, který chcete nakonfigurovat, už musí být součástí virtuálního počítače nebo součástí image virtuálního počítače. Jinak se úloha nepodaří zkompilovat a spustit.

Anatomie bloku kódu DSC

Blok kódu DSC obsahuje čtyři části. Pro podrobnější pohled použijte následující příklad. V tomto příkladu nejsou čísla součástí syntaxe. Označují se jako komentáře a odkazují na oddíly v následující diskuzi.

Configuration MyDscConfiguration {              ##1
    Node "localhost" {                          ##2
        WindowsFeature MyFeatureInstance {      ##3
            Ensure = 'Present'
            Name = 'Web-Server'
        }
    }
}
MyDscConfiguration -OutputPath C:\temp\         ##4

Syntaxe konfigurace zahrnuje tyto oddíly:

  1. Konfigurace: Blok konfigurace je vnější blok skriptu. Začíná klíčovým slovem Configuration a zadáte název. Tady používáme název konfigurace MyDscConfiguration.

    Blok konfigurace popisuje požadovanou konfiguraci. Blok konfigurace si můžete představit jako funkci, až na to, že obsahuje popis prostředků, které se mají nainstalovat (ne kód pro jejich instalaci).

    Blok konfigurace, podobně jako funkce PowerShellu, může přijímat parametry. Je například možné parametrizovat název uzlu.

    Configuration MyDscConfiguration {
    param
    (
        [string] $ComputerName='localhost'
    )
    
    Node $ComputerName {
        ...
    }
    
  2. Uzel: Můžete mít jeden nebo více bloků uzlu. Blok uzlu určuje názvy souborů .mof, které se vygenerují při kompilaci konfigurace. Například název localhost uzlu generuje pouze jeden soubor localhost.mof, ale tento soubor .mof můžete odeslat na libovolný server. Pokud použijete více názvů uzlů, vygeneruje se více souborů .mof.

    K cílení na více hostitelů použijte v bloku uzlu notaci pole. Příklad:

    Node @('WEBSERVER1', 'WEBSERVER2', 'WEBSERVER3')
    
  3. Prostředek: K určení prostředků, které se mají konfigurovat, můžete použít jeden nebo více bloků prostředků. V tomto případě jeden blok prostředků odkazuje na prostředek WindowsFeature. Tento WindowsFeature prostředek zajišťuje, že je nainstalovaná Web-Server funkce Systému Windows.

  4. MyDscConfiguration: Toto volání vyvolá MyDscConfiguration blok. Je to jako spuštění funkce. Při spuštění se blok konfigurace zkompiluje do dokumentu ve formátu MOF (Managed Object Format). MOF je zkompilovaný jazyk, který vytvořila organizace Desktop Management Task Force. Je založený na jazyku IDL (Interface Definition Language).

    Pro každý uzel uvedený ve skriptu DSC se vytvoří soubor. mof ve složce, kterou jste zadali pomocí parametru -OutputPath.

Konfigurační data ve skriptu DSC

V bloku konfiguračních dat můžete zadat data, která vyžaduje proces konfigurace. Tato data můžete použít na pojmenované uzly nebo je můžete použít globálně na všech uzlech.

Blok konfiguračních dat je pojmenovaný blok, který obsahuje pole uzlů. Toto pole musí mít název AllNodes. V poli AllNodes se pomocí proměnné NodeName zadávají data pro uzel.

Při použití předchozího scénáře řekněme, že na webovém serveru, který je nainstalovaný na jednotlivých uzlech, chcete nastavit vlastnost SiteName na různé hodnoty. Můžete definovat blok konfiguračních dat podobně jako tento:

$datablock =
@{
    AllNodes =
    @(
        @{
            NodeName = "WEBSERVER1"
            SiteName = "WEBSERVER1-Site"
        },
        @{
            NodeName = "WEBSERVER2"
            SiteName = "WEBSERVER2-Site"
        },
        @{
            NodeName = "WEBSERVER3"
            SiteName = "WEBSERVER3-Site"
        }
    );
}

Pokud chcete v každém uzlu nastavit vlastnost na stejnou hodnotu, do pole AllNodes zadejte NodeName = "*".

Zabezpečené přihlašovací údaje ve skriptu DSC

Skript DSC může pro proces konfigurace vyžadovat přihlašovací údaje. Vyhněte se vkládání přihlašovacích údajů do prostého textu do nástroje pro správu zdrojového kódu. Místo toho můžou konfigurace DSC ve službě Azure Automation odkazovat na přihlašovací údaje uložené v objektu PSCredential. Pomocí typu můžete definovat parametr pro skript PSCredential DSC. Před spuštěním skriptu získejte přihlašovací údaje uživatele, pomocí přihlašovacích údajů vytvořte nový PSCredential objekt a předejte tento objekt do skriptu jako parametr.

Přihlašovací údaje nejsou ve výchozím nastavení šifrované v souborech .mof; jsou vystavené jako prostý text. Pokud chcete přihlašovací údaje zašifrovat, použijte v konfiguračních datech certifikát. Privátní klíč certifikátu musí být v uzlu, ve kterém chcete tuto konfiguraci použít. Certifikáty jsou konfigurovány prostřednictvím LCM uzlu.

Od verze PowerShell 5.1 se soubory .mof v uzlu šifrují v klidovém stavu. Při přenosu se všechny přihlašovací údaje šifrují prostřednictvím WinRM.

Nabízení replikace konfigurace do uzlu

Po vytvoření zkompilovaného souboru .mof pro konfiguraci ho můžete odeslat do uzlu spuštěním rutiny Start-DscConfiguration . Pokud přidáte cestu k adresáři, použije se v uzlu každý soubor .mof, který se v daném adresáři nachází:

Start-DscConfiguration -path D:\

Tento krok odpovídá režimu nabízení replikace, s kterým jste se seznámili v předchozí lekci.

Vyžádání replikace konfigurace pro uzly

Pokud máte v Azure stovky virtuálních počítačů, je vhodnější použít režim vyžádání replikace než režim nabízení replikace.

Účet Azure Automation můžete nakonfigurovat tak, aby fungoval jako služba vyžádané replikace; stačí nahrát konfiguraci do účtu Automation a pak zaregistrovat virtuální počítače s tímto účtem.

Před kompilací konfigurace naimportujte do účtu Automation všechny moduly PowerShellu, které proces DSC potřebuje. Tyto moduly definují, jak se má úloha provést, aby se dosáhlo požadovaného stavu.

Například skript DSC v předchozí lekci pomocí modulu PowerShellu xSmbShare předával do DSC informaci, jak se má zkontrolovat stav sdílené složky. DSC automaticky načte moduly z účtu Automation do uzlu.

Následující diagram znázorňuje, jak se Azure Automation State Configuration nastavuje. Tyto kroky prozkoumáme v další lekci.

Diagram znázorňující kroky nastavení DSC

Ve výchozím nastavení se LCM ve virtuálním počítači každých 15 minut dotazuje služby Azure Automation na všechny změny v souboru konfigurace DSC. Všechny změny ve virtuálních počítačích se zaznamenávají do konfigurace požadovaného stavu. Když konfiguraci změníte, můžete ji nahrát do účtu Automation, aby se virtuální počítače automaticky překonfigurovaly.

Následující diagram znázorňuje proces, jak LCM spravuje požadovaný stav na virtuálním počítači.

Diagram znázorňující, jak se virtuální počítač dotazuje na Azure Automation

Váš účet Automation zpracovává přihlašovací údaje nativně. Tato správa snižuje složitost zabezpečení a práce s přihlašovacími údaji.