Sdílet prostřednictvím


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.

Průběžné nasazování virtuálních počítačů IaaS

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.

příklad Galerie prostředí PowerShell

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.

  1. Nainstalujte Windows Management Framework v5 (není potřeba pro Windows 10).

  2. Nainstalujte modul integrace.

    Install-Module -Name MODULE-NAME`    <—grabs the module from the PowerShell Gallery
    
  3. Zkopírujte složku modulu z C:\Program Files\WindowsPowerShell\Modules\MODULE-NAME dočasné složky.

  4. Odstraňte ukázky a dokumentaci z hlavní složky.

  5. Zazipujte hlavní složku a pojmenujte soubor ZIP názvem složky.

  6. 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.

  7. 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í.

Další kroky