Nastavení průběžného nasazování s využitím Chocolatey
Poznámka:
Azure Automation State Configuration bude vyřazena 30. září 2027. Do tohoto data přejděte na Azure Machine Configuration . Další informace najdete v blogovém příspěvku. Služba Azure Machine Configuration kombinuje funkce rozšíření DSC, Azure Automation State Configuration a nejčastěji požadované funkce od zpětné vazby zákazníků. Konfigurace počítače Azure také zahrnuje podporu hybridních počítačů prostřednictvím serverů s podporou Arc.
Upozornění
Azure Automation DSC pro Linux se 30. září 2023 vyřadil z 30. Další informace najdete v oznámení.
Ve světě DevOps existuje mnoho nástrojů, které vám pomůžou s různými body v kanálu kontinuální integrace. Azure Automation State Configuration je uvítacím novým doplňkem možností, které můžou využívat týmy DevOps.
Azure Automation je spravovaná služba v Microsoft Azure, která umožňuje automatizovat různé úlohy pomocí runbooků, uzlů a sdílených prostředků, jako jsou přihlašovací údaje, plány a globální proměnné. Azure Automation State Configuration rozšiřuje tuto možnost automatizace tak, aby zahrnovala nástroje DSC (Desired State Configuration) PowerShellu. Tady je skvělý přehled.
Tento článek ukazuje, jak nastavit průběžné nasazování (CD) pro počítač s Windows. Můžete snadno rozšířit techniku tak, aby zahrnovala tolik počítačů s Windows, kolik je potřeba v roli, například webu, a přejít odtud k dalším rolím.
Na vysoké úrovni
Je tu poměrně dost, ale naštěstí se dá rozdělit do dvou hlavních procesů:
- Napíšete kód a otestujete ho a pak vytvoříte a publikujete instalační balíčky pro hlavní a podverze systému.
- Vytváření a správa virtuálních počítačů, které instalují a spouštějí kód v balíčcích
Jakmile jsou obě tyto základní procesy zavedeny, je snadné automaticky aktualizovat balíček na virtuálních počítačích při vytváření a nasazení nových verzí.
Přehled komponent
Správci balíčků, jako je apt-get , jsou dobře známí ve světě Linuxu, ale ne tolik ve světě Windows. Chocolatey je správce balíčků pro Windows. Scott Hanselmanův blogový příspěvek o Chocolatey je skvělý úvod. Chocolatey umožňuje použít příkazový řádek k instalaci balíčků z centrálního úložiště do operačního systému Windows. Můžete vytvořit a spravovat vlastní úložiště a Chocolatey může instalovat balíčky z libovolného počtu úložišť, která určíte.
PowerShell DSC je nástroj PowerShellu, který umožňuje deklarovat požadovanou konfiguraci počítače. Pokud například chcete nainstalovat Chocolatey, nainstalovat službu IIS, otevřít port 80 a nainstalovanou verzi 1.0.0 vašeho webu, implementuje nástroj DSC Local Configuration Manager (LCM) tuto konfiguraci. Server vyžádané replikace DSC obsahuje úložiště konfigurací pro vaše počítače. LCM na každém počítači pravidelně kontroluje, jestli jeho konfigurace odpovídá uložené konfiguraci. Může buď nahlásit stav, nebo se pokusit počítač vrátit zpět do souladu s uloženou konfigurací. Uloženou konfiguraci na serveru vyžádané replikace můžete upravit tak, aby počítač nebo sada počítačů přišly do souladu se změněnou konfigurací.
Prostředek DSC je modul kódu, který má specifické funkce, jako je správa sítí, Active Directory nebo SQL Serveru. Prostředek Chocolatey DSC ví, jak získat přístup k serveru NuGet, stahovat balíčky, instalovat balíčky a provádět další úlohy. V Galerie prostředí PowerShell existuje mnoho dalších prostředků DSC. Tyto moduly nainstalujete na server vyžádané replikace služby Azure Automation State Configuration pro použití s vašimi konfiguracemi.
Šablony Resource Manageru poskytují deklarativní způsob generování prostředků pro vaši infrastrukturu, například:
- sítě a podsítě
- zabezpečení sítě
- směrování
- nástroje pro vyrovnávání zatížení,
- Síťové karty, virtuální počítače a další
Porovnání modelu nasazení Resource Manageru (deklarativní) s modelem nasazení Azure Classic (imperativní) najdete v tématu Azure Resource Manager a klasické nasazení. Tento článek obsahuje diskuzi o hlavních poskytovateli prostředků: výpočetních prostředků, úložišti a síti.
Jednou z klíčových funkcí šablony Resource Manageru je možnost instalace rozšíření virtuálního počítače během zřizování virtuálního počítače. Rozšíření virtuálního počítače má specifické možnosti, jako je spuštění vlastního skriptu, instalace antivirového softwaru a spuštění konfiguračního skriptu DSC. Existuje mnoho dalších typů rozšíření virtuálních počítačů.
Rychlý výlet kolem diagramu
Od začátku napíšete kód, sestavíte ho, otestujete ho a pak vytvoříte instalační balíček. Chocolatey dokáže zpracovat různé typy instalačních balíčků, jako je MSI, MSU, ZIP. A máte plnou sílu PowerShellu, abyste mohli provést skutečnou instalaci, pokud na ní nejsou nativní schopnosti Chocolatey. Umístěte balíček na nějaké místo dostupné – úložiště balíčků. Tento příklad použití používá veřejnou složku v účtu úložiště objektů blob v Azure, ale může být kdekoli. Chocolatey nativně funguje se servery NuGet a několik dalších pro správu metadat balíčků. Tento článek popisuje možnosti. Příklad použití používá NuGet. A Nuspec je metadata o vašich balíčcích. Informace Nuspec jsou kompilovány do NuPkg a uloženy na serveru NuGet. Když konfigurace požádá o balíček podle názvu a odkazuje na server NuGet, prostředek Chocolatey DSC na virtuálním počítači balíček vezme a nainstaluje ho. Můžete také požádat o konkrétní verzi balíčku.
V levém dolním rohu obrázku je šablona Azure Resource Manageru. V tomto příkladu použití rozšíření virtuálního počítače zaregistruje virtuální počítač pomocí serveru vyžádané replikace azure Automation State Configuration jako uzlu. Konfigurace je uložena na serveru vyžádané replikace dvakrát: jednou jako prostý text a jednou je zkompilována jako soubor MOF. MoF na webu Azure Portal představuje konfiguraci uzlu, nikoli jednoduchou konfiguraci.
Je poměrně jednoduché vytvořit Nuspec, zkompilovat ho a uložit na server NuGet. Další krok průběžného nasazování vyžaduje následující jednorázové úlohy:
- Nastavení serveru vyžádané replikace
- Registrace uzlů na serveru
- Vytvoření počáteční konfigurace na serveru
Konfiguraci konfigurace a uzlu na serveru vyžádané replikace musíte aktualizovat pouze při upgradu a nasazení balíčků do úložiště.
Pokud nespouštíte šablonu Resource Manageru, existují příkazy PowerShellu, které vám pomůžou zaregistrovat virtuální počítače na serveru vyžádané replikace. Další informace najdete v tématu Onboarding machines for management by Azure Automation State Configuration.
Informace o příkladu použití
Příklad použití v tomto článku začíná virtuálním počítačem z obecné image Windows Serveru 2012 R2 z galerie Azure. Můžete začít z libovolné uložené image a pak ji upravit pomocí konfigurace DSC. Změna konfigurace, která je zapečená do image, je ale mnohem obtížnější než dynamicky aktualizovat konfiguraci pomocí DSC.
K použití této techniky s virtuálními počítači nemusíte používat šablonu Resource Manageru a rozšíření virtuálního počítače. A vaše virtuální počítače nemusí být v Azure, aby byly pod správou CD. Stačí nainstalovat Chocolatey a nakonfigurovat LCM na virtuální počítač, aby věděl, kde je server vyžádané replikace.
Když aktualizujete balíček na virtuálním počítači, který je v produkčním prostředí, musíte tento virtuální počítač během instalace aktualizace vyřídit mimo obměnu. Způsob, jakým to uděláte, se značně liší. Například s virtuálním počítačem za Azure Load Balancerem můžete přidat vlastní sondu. Při aktualizaci virtuálního počítače vraťte koncový bod sondy hodnotu 400. Úprava potřebná k tomu, aby tato změna způsobila, může být uvnitř vaší konfigurace, protože je možné ji upravit tak, aby se po dokončení aktualizace vrátila zpět na verzi 200.
Úplný zdroj pro tento příklad použití je v tomto projektu sady Visual Studio na GitHubu.
Krok 1: Nastavení serveru vyžádané replikace a účtu Automation
V ověřené relaciConnect-AzAccount
PowerShellu spusťte následující příkazy:
New-AzResourceGroup -Name MY-AUTOMATION-RG -Location MY-RG-LOCATION-IN-QUOTES
$newAzAutomationAccountSplat = @{
ResourceGroupName = 'MY-AUTOMATION-RG'
Location = 'MY-RG-LOCATION-IN-QUOTES'
Name = 'MY-AUTOMATION-ACCOUNT'
}
New-AzAutomationAccount @newAzAutomationAccountSplat
Tento krok trvá několik minut, než je server vyžádané replikace nastavený.
Svůj účet Automation můžete vytvořit v některé z následujících oblastí Azure:
- USA – východ 2
- Středojižní USA
- US Gov – Virginie
- West Europe
- Southeast Asia
- Japonsko – východ
- Indie – střed
- Austrálie – jihovýchod
- Střední Kanada
- Severní Evropa
Krok 2: Úprava rozšíření virtuálního počítače na šablonu Resource Manageru
Podrobnosti o registraci virtuálního počítače (pomocí rozšíření virtuálního počítače PowerShell DSC) uvedené v této šabloně rychlého startu Azure Tento krok zaregistruje nový virtuální počítač na serveru vyžádané replikace v seznamu uzlů konfigurace stavu. Součástí této registrace je určení konfigurace uzlu, která se má použít na uzel. Tato konfigurace uzlu ještě na serveru vyžádané replikace neexistuje, ale musíte zvolit název uzlu a název konfigurace. V tomto příkladu je isvbox
uzel a název konfigurace je ISVBoxConfig
. Zadaný název DeploymentTemplate.json
konfigurace uzlu je ISVBoxConfig.isvbox
.
Krok 3: Přidání požadovaných prostředků DSC na server vyžádané replikace
Galerie prostředí PowerShell může do svého účtu Azure Automation nainstalovat prostředky DSC. Přejděte k požadovanému prostředku a vyberte Nasadit do Služby Azure Automation.
Další technika, která byla nedávno přidána na web Azure Portal, umožňuje načíst nové moduly nebo aktualizovat existující moduly. Výběrem ikony Procházet galerii zobrazíte seznam modulů v galerii, přejdete k podrobnostem a naimportujete ho do svého účtu Automation. Tento proces můžete použít k udržování modulů v aktualizovaném stavu. Funkce importu také kontroluje závislosti s jinými moduly, aby se zajistilo, že se nic nesynchronizuje.
Existuje také ruční přístup, který se používá jenom jednou pro každý prostředek, pokud ho nechcete upgradovat později. Další informace o vytváření modulů integrace PowerShellu najdete v tématu Vytváření modulů integrace pro Azure Automation.
Poznámka:
Struktura složek modulu integrace PowerShellu pro počítač s Windows se mírně liší od struktury složek očekávané službou Azure Automation.
Nainstalujte Windows Management Framework v5 (není potřeba pro Windows 10).
Nainstalujte modul integrace.
Install-Module -Name MODULE-NAME` <—grabs the module from the PowerShell Gallery
Zkopírujte složku modulu z
C:\Program Files\WindowsPowerShell\Modules\MODULE-NAME
dočasné složky.Odstraňte ukázky a dokumentaci z hlavní složky.
Zazipujte hlavní složku a pojmenujte soubor ZIP názvem složky.
Soubor ZIP umístěte do dostupného umístění HTTP, například do úložiště objektů blob v účtu služby Azure Storage.
Spusťte následující příkaz:
$newAzAutomationModuleSplat = @{ ResourceGroupName = 'MY-AUTOMATION-RG' AutomationAccountName = 'MY-AUTOMATION-ACCOUNT' Name = 'MODULE-NAME' ContentLinkUri = 'https://STORAGE-URI/CONTAINERNAME/MODULE-NAME.zip' } New-AzAutomationModule @newAzAutomationModuleSplat
Zahrnutý příklad implementuje tyto kroky pro cChoco a xNetworking.
Krok 4: Přidání konfigurace uzlu na server vyžádané replikace
Při prvním importu konfigurace do serveru vyžádané replikace a kompilace není nic zvláštního. Všechny pozdější importy nebo kompilace stejné konfigurace vypadají úplně stejně. Pokaždé, když balíček aktualizujete a potřebujete ho odeslat do produkčního prostředí, provedete tento krok po zajištění správnosti konfiguračního souboru , včetně nové verze balíčku. Tady je konfigurační soubor ISVBoxConfig.ps1
:
Configuration ISVBoxConfig
{
Import-DscResource -ModuleName cChoco
Import-DscResource -ModuleName xNetworking
Node 'isvbox' {
cChocoInstaller installChoco
{
InstallDir = 'C:\choco'
}
WindowsFeature installIIS
{
Ensure = 'Present'
Name = 'Web-Server'
}
xFirewall WebFirewallRule
{
Direction = 'Inbound'
Name = 'Web-Server-TCP-In'
DisplayName = 'Web Server (TCP-In)'
Description = 'IIS allow incoming web site traffic.'
Enabled = 'True'
Action = 'Allow'
Protocol = 'TCP'
LocalPort = '80'
Ensure = 'Present'
}
cChocoPackageInstaller trivialWeb
{
Name = 'trivialweb'
Version = '1.0.0'
Source = 'MY-NUGET-V2-SERVER-ADDRESS'
DependsOn = '[cChocoInstaller]installChoco','[WindowsFeature]installIIS'
}
}
}
New-ConfigurationScript.ps1
Následující skript byl upraven tak, aby používal modul Az PowerShell:
$importAzAutomationDscConfigurationSplat = @{
ResourceGroupName = 'MY-AUTOMATION-RG'
AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
SourcePath = 'C:\temp\AzureAutomationDsc\ISVBoxConfig.ps1'
Published = -Published
Force = -Force
}
Import-AzAutomationDscConfiguration @importAzAutomationDscConfigurationSplat
$startAzAutomationDscCompilationJobSplat = @{
ResourceGroupName = 'MY-AUTOMATION-RG'
AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
ConfigurationName = 'ISVBoxConfig'
}
$jobData = Start-AzAutomationDscCompilationJob @startAzAutomationDscCompilationJobSplat
$compilationJobId = $jobData.Id
$getAzAutomationDscCompilationJobSplat = @{
ResourceGroupName = 'MY-AUTOMATION-RG'
AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
Id = $compilationJobId
}
Get-AzAutomationDscCompilationJob @getAzAutomationDscCompilationJobSplat
Krok 5: Vytvoření a údržba metadat balíčku
Pro každý balíček, který vložíte do úložiště balíčků, potřebujete Nuspec, který ho popisuje. Musí být zkompilován a uložen na vašem serveru NuGet. Další informace najdete v tématu [Vytvoření balíčku NuGet pomocí rozhraní příkazového řádku nuget.exe].
Jako server NuGet můžete použít MyGet.org . Tuto službu si můžete koupit, ale k dispozici je bezplatná počáteční skladová položka. Pokyny k instalaci vlastního serveru NuGet pro vaše privátní balíčky najdete v dokumentaci k Nuget.org.
Krok 6: Svázat vše dohromady
Pokaždé, když verze projde kontrolu kvality a je schválená pro nasazení, balíček se vytvoří a nuspec a nupkg se aktualizují a nasadí na server NuGet. Konfiguraci (krok 4) musíte aktualizovat číslem nové verze. Pak ho odešlete na server vyžádané replikace a zkompilujte ho.
Od tohoto okamžiku je na virtuálních počítačích, které závisí na této konfiguraci, aby aktualizaci stáhly a nainstalovaly. Každá z těchto aktualizací je jednoduchá – stačí řádek nebo dva powershellové řádky. U Azure DevOps se některé z nich zapouzdřují do úloh sestavení, které můžete zřetězovat v sestavení. Tento článek obsahuje další podrobnosti. Toto úložiště GitHubu podrobně popisuje dostupné úlohy sestavení.
Související články
Další kroky
- Přehled najdete v přehledu služby Azure Automation State Configuration.
- Pokud chcete začít používat tuto funkci, přečtěte si téma Začínáme se službou Azure Automation State Configuration.
- Další informace o kompilaci konfigurací DSC, abyste je mohli přiřadit cílovým uzlům, najdete v tématu Kompilace konfigurací DSC ve službě Azure Automation State Configuration.
- Referenční informace k rutinám PowerShellu najdete v tématu Az.Automation.
- Informace o cenách najdete v tématu Ceny služby Azure Automation State Configuration.