Dosažení požadovaného stavu pomocí PowerShell DSC
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:
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 konfiguraceMyDscConfiguration
.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 { ... }
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')
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
. TentoWindowsFeature
prostředek zajišťuje, že je nainstalovanáWeb-Server
funkce Systému Windows.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.
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.
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.