Megosztás a következőn keresztül:


Folyamatos üzembe helyezés beállítása a Chocolatey segítségével

Feljegyzés

Az Azure Automation State Configuration 2027. szeptember 30-án megszűnik, ezért ezen a napon lépjen át az Azure Machine Configuration szolgáltatásra. További információkért lásd a blogbejegyzés bejelentését. Az Azure Machine Configuration szolgáltatás egyesíti a DSC-bővítmény, az Azure Automation State Configuration és az ügyfelek visszajelzései alapján leggyakrabban kért funkciókat. Az Azure Machine Configuration emellett az Arc-kompatibilis kiszolgálókon keresztüli hibrid gépek támogatását is tartalmazza.

Fontos

Az Add, Compose configuration és Gallery navigációs hivatkozások 2025. március 31-én törlődnek a portálról.

Figyelemfelhívás

A Linuxhoz készült Azure Automation DSC 2023. szeptember 30-án megszűnt. További információkért lásd a közleményt.

A DevOps-világban számos eszköz áll rendelkezésre a folyamatos integrációs folyamat különböző pontjaihoz való segítségnyújtáshoz. Az Azure Automation State Configuration a DevOps-csapatok által használható lehetőségek új új kiegészítése.

Az Azure Automation egy felügyelt szolgáltatás a Microsoft Azure-ban, amely lehetővé teszi különböző feladatok automatizálását runbookok, csomópontok és megosztott erőforrások, például hitelesítő adatok, ütemezések és globális változók használatával. Az Azure Automation State Configuration ezt az automatizálási képességet kibővíti a PowerShell Desired State Configuration (DSC) eszközeivel. Íme egy nagyszerű áttekintés.

Ez a cikk bemutatja, hogyan állíthat be folyamatos üzembe helyezést (CD) Windows rendszerű számítógépeken. Egyszerűen kiterjesztheti a technikát úgy, hogy a szerepkörben a szükséges számú Windows-számítógépet, például egy webhelyet is belefoglaljon, és onnan további szerepkörökre léphet.

Folyamatos üzembe helyezés IaaS virtuális gépekhez

Magas szinten

Van itt egy kicsit, de szerencsére két fő folyamatra bontható:

  • Kód írása és tesztelése, majd telepítési csomagok létrehozása és közzététele a rendszer fő és alverzióihoz.
  • Olyan virtuális gépek létrehozása és kezelése, amelyek telepítik és végrehajtják a kódot a csomagokban.

Miután mindkét alapvető folyamat létrejött, könnyen automatikusan frissítheti a csomagot a virtuális gépeken az új verziók létrehozása és üzembe helyezése során.

Összetevők áttekintése

Az olyan csomagkezelők, mint az apt-get , jól ismertek a Linux-világon, de a Windows-világban nem annyira. A Chocolatey a Windows csomagkezelője. Scott Hanselman blogbejegyzése a Chocolateyról nagyszerű bevezetés. A Chocolatey lehetővé teszi, hogy a parancssor használatával csomagokat telepítsen egy központi adattárból egy Windows operációs rendszerre. Létrehozhatja és kezelheti a saját adattárát, a Chocolatey pedig tetszőleges számú tárházból telepíthet csomagokat.

A PowerShell DSC egy PowerShell-eszköz, amellyel deklarálhatja a géphez kívánt konfigurációt. Ha például telepíteni szeretné a Chocolateyt, az IIS-t, a 80-es portot, és telepítette a webhely 1.0.0-s verzióját, a DSC Local Configuration Manager (LCM) implementálja ezt a konfigurációt. A DSC lekéréses kiszolgálója a gépek konfigurációinak adattárát tartalmazza. Az egyes gépeken lévő LCM rendszeres időközönként ellenőrzi, hogy a konfigurációja megfelel-e a tárolt konfigurációnak. Jelentheti az állapotot, vagy megpróbálhatja visszahozni a gépet a tárolt konfigurációhoz. Szerkesztheti a lekéréses kiszolgálón tárolt konfigurációt, hogy egy gép vagy gépcsoport igazodjon a módosított konfigurációhoz.

A DSC-erőforrások olyan kódmodulok, amelyek speciális képességekkel rendelkeznek, például a hálózatkezelés, az Active Directory vagy az SQL Server kezelésére. A Chocolatey DSC-erőforrás tudja, hogyan férhet hozzá a NuGet-kiszolgálóhoz, hogyan tölthet le csomagokat, telepíthet csomagokat, és hogyan hajthat végre egyéb feladatokat. A PowerShell-galéria számos más DSC-erőforrás is található. Ezeket a modulokat az Azure Automation State Configuration lekéréses kiszolgálójára telepítheti a konfigurációk általi használatra.

A Resource Manager-sablonok deklaratív módon generálnak erőforrásokat az infrastruktúrához, például:

  • hálózatok és alhálózatok
  • hálózati biztonság
  • Útválasztás
  • terheléselosztók,
  • Hálózati adapterek, virtuális gépek és mások

A Resource Manager-alapú üzemi modell (deklaratív) és a klasszikus Azure üzemi modell (imperatív) összehasonlításához tekintse meg az Azure Resource Manager és a klasszikus üzembe helyezés című témakört. Ez a cikk az alapvető erőforrás-szolgáltatók, a számítás, a tárolás és a hálózat ismertetését tartalmazza.

A Resource Manager-sablon egyik fő funkciója, hogy képes virtuálisgép-bővítményt telepíteni a virtuális gép kiépítése során. A virtuálisgép-bővítmények speciális képességekkel rendelkeznek, például egyéni szkriptek futtatásával, víruskereső szoftverek telepítésével és DSC-konfigurációs szkript futtatásával. Számos más típusú virtuálisgép-bővítmény létezik.

Gyors utazás a diagram körül

A felülről kiindulva megírhatja a kódot, elkészítheti, tesztelheti, majd létrehozhat egy telepítőcsomagot. A Chocolatey különböző telepítési csomagokat képes kezelni, például MSI, MSU, ZIP. A PowerShell teljes erejével elvégezheti a tényleges telepítést, ha a Chocolatey natív képességei nem teljes körűek. Helyezze a csomagot egy elérhető helyre – egy csomagtárba. Ez a használati példa egy nyilvános mappát használ egy Azure Blob Storage-fiókban, de bárhol lehet. A Chocolatey natív módon működik a NuGet-kiszolgálókkal és néhány másikkal a csomag metaadatainak kezeléséhez. Ez a cikk a beállításokat ismerteti. A használati példa a NuGetet használja. A Nuspec a csomagok metaadatai. A Nuspec-információk egy NuPkg-fájlba lesznek lefordítva, és egy NuGet-kiszolgálón tárolódnak. Amikor a konfiguráció név alapján kér egy csomagot, és egy NuGet-kiszolgálóra hivatkozik, a virtuális gépen található Chocolatey DSC-erőforrás megragadja és telepíti a csomagot. A csomag egy adott verzióját is kérheti.

A kép bal alsó részén található egy Azure Resource Manager-sablon. Ebben a használati példában a virtuálisgép-bővítmény csomópontként regisztrálja a virtuális gépet az Azure Automation State Configuration lekéréses kiszolgálójával. A konfigurációt a rendszer kétszer tárolja a lekéréses kiszolgálón: egyszer egyszerű szövegként, egyszer pedig MOF-fájlként. Az Azure Portalon az MOF egy csomópontkonfigurációt jelöl, szemben az egyszerű konfigurációval.

Viszonylag egyszerű létrehozni a Nuspec-et, lefordítani és tárolni egy NuGet-kiszolgálón. A folyamatos üzembe helyezés következő lépéséhez a következő egyszeri feladatok szükségesek:

  • A lekéréses kiszolgáló beállítása
  • Csomópontok regisztrálása a kiszolgálóval
  • A kezdeti konfiguráció létrehozása a kiszolgálón

A lekéréses kiszolgáló konfigurációját és csomópontkonfigurációját csak akkor kell frissítenie, amikor csomagokat frissít és helyez üzembe az adattárban.

Ha nem Resource Manager-sablonnal kezdi, powerShell-parancsokkal regisztrálhatja a virtuális gépeket a lekéréses kiszolgálón. További információ: Gépek előkészítése az Azure Automation State Configuration általi felügyelethez.

A használati példa ismertetése

A cikkben szereplő használati példa egy általános Windows Server 2012 R2 rendszerképből származó virtuális géppel kezdődik az Azure-katalógusból. Bármilyen tárolt rendszerképből kiindulhat, majd onnan finomhangolást végezhet a DSC-konfigurációval. A rendszerképbe sütött konfiguráció módosítása azonban sokkal nehezebb, mint a konfiguráció dinamikus frissítése a DSC használatával.

Ehhez a technikához nem kell Resource Manager-sablont és virtuálisgép-bővítményt használnia. A virtuális gépeknek pedig nem kell az Azure-ban lenniük ahhoz, hogy CD-felügyelet alatt legyenek. Csak telepítse a Chocolateyt, és konfigurálja az LCM-et a virtuális gépen, hogy tudja, hol van a lekéréses kiszolgáló.

Amikor éles környezetben lévő virtuális gépen frissíti a csomagot, a frissítés telepítésekor ki kell vennie a virtuális gépet a forgatásból. Ennek menete nagyban eltér. Ha például egy Azure Load Balancer mögötti virtuális gép van, hozzáadhat egyéni mintavételt. A virtuális gép frissítése során a mintavételi végpont 400-et ad vissza. A módosítás okához szükséges finomhangolás a konfiguráción belül lehet, ahogy a frissítés befejezése után visszakapcsolható a 200-as értékre.

A használati példa teljes forrása ebben a GitHubon található Visual Studio-projektben található.

1. lépés: A lekéréses kiszolgáló és az Automation-fiók beállítása

Futtassa a következő parancsokat egy hitelesített (Connect-AzAccount) PowerShell-munkamenetben:

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

Ez a lépés néhány percet vesz igénybe, amíg a lekéréses kiszolgáló be van állítva.

Automation-fiókját az alábbi Azure-régiókban hozhatja létre:

  • USA 2. keleti régiója
  • USA déli középső régiója
  • USA-beli államigazgatás – Virginia
  • Nyugat-Európa
  • Délkelet-Ázsia
  • Kelet-Japán
  • Közép-India
  • Délkelet-Ausztrália
  • Közép-Kanada
  • Észak-Európa

2. lépés: A virtuálisgép-bővítmény finomhangolása a Resource Manager-sablonnal

A virtuális gépek regisztrációjának részletei (a PowerShell DSC virtuálisgép-bővítmény használatával) az Azure gyorsútmutató-sablonban találhatók. Ez a lépés regisztrálja az új virtuális gépet a lekéréses kiszolgálóval az állapotkonfigurációs csomópontok listájában. A regisztráció része a csomópontra alkalmazni kívánt csomópontkonfiguráció megadása. Ennek a csomópontkonfigurációnak még nem kell léteznie a lekéréses kiszolgálón, de ki kell választania a csomópont nevét és a konfiguráció nevét. Ebben a példában a csomópont és isvbox a konfiguráció neve.ISVBoxConfig A megadott DeploymentTemplate.json csomópontkonfiguráció neve a következő ISVBoxConfig.isvbox: .

3. lépés: Szükséges DSC-erőforrások hozzáadása a lekéréses kiszolgálóhoz

A PowerShell-galéria DSC-erőforrásokat telepíthet az Azure Automation-fiókjába. Keresse meg a kívánt erőforrást, és válassza az Üzembe helyezés az Azure Automationben lehetőséget.

PowerShell-galéria példa

Az Azure Portalhoz nemrég hozzáadott másik technika lehetővé teszi új modulok lekérését vagy a meglévő modulok frissítését. A Katalógus tallózása ikonra kattintva megtekintheti a katalógusban található modulok listáját, részletezheti a részleteket, és importálhatja az Automation-fiókjába. Ezzel a eljárással naprakészen tarthatja a modulokat. Emellett az importálási funkció ellenőrzi a függőségeket más modulokkal, hogy semmi ne legyen szinkronizálva.

Van egy manuális megközelítés is, amelyet erőforrásonként csak egyszer használnak, hacsak nem szeretné később frissíteni. A PowerShell-integrációs modulok készítésével kapcsolatos további információkért lásd: Integrációs modulok készítése az Azure Automationhez.

Feljegyzés

A Windows rendszerű számítógépek PowerShell-integrációs moduljának mappastruktúrája kissé eltér az Azure Automation által várt mappastruktúrától.

  1. Telepítse a Windows Management Framework 5-ös verzióját (windows 10-hez nem szükséges).

  2. Telepítse az integrációs modult.

    Install-Module -Name MODULE-NAME`    <—grabs the module from the PowerShell Gallery
    
  3. Másolja a modulmappát C:\Program Files\WindowsPowerShell\Modules\MODULE-NAME egy ideiglenes mappába.

  4. Minták és dokumentáció törlése a fő mappából.

  5. Tömörítse a fő mappát, és a ZIP-fájlt a mappa nevével nevezze el.

  6. Helyezze a ZIP-fájlt egy elérhető HTTP-helyre, például egy Azure Storage-fiók blobtárolójába.

  7. Futtassa az alábbi parancsot.

    $newAzAutomationModuleSplat = @{
        ResourceGroupName = 'MY-AUTOMATION-RG'
        AutomationAccountName = 'MY-AUTOMATION-ACCOUNT'
        Name = 'MODULE-NAME'
        ContentLinkUri = 'https://STORAGE-URI/CONTAINERNAME/MODULE-NAME.zip'
    }
    New-AzAutomationModule @newAzAutomationModuleSplat
    

A mellékelt példa ezeket a lépéseket implementálja a cChoco és az xNetworking esetében.

4. lépés: A csomópont konfigurációjának hozzáadása a lekéréses kiszolgálóhoz

Nincs semmi különleges abban az időben, amikor először importálja a konfigurációt a lekéréses kiszolgálóra, és lefordítja. Az azonos konfigurációjú későbbi importálások és fordítások pontosan ugyanúgy néznek ki. Minden alkalommal, amikor frissíti a csomagot, és ki kell küldenie az éles környezetbe, ezt a lépést a konfigurációs fájl helyességének biztosítása után kell elvégeznie , beleértve a csomag új verzióját is. A konfigurációs fájl ISVBoxConfig.ps1a következő:

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

A következő New-ConfigurationScript.ps1 szkript módosult az Az PowerShell-modul használatára:

$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

5. lépés: Csomag metaadatainak létrehozása és karbantartása

A csomagtárba helyezett minden egyes csomaghoz szüksége van egy Nuspecre, amely leírja azt. Ezt a NuGet-kiszolgálón kell lefordítani és tárolni. További információ: [NuGet-csomag létrehozása nuget.exe parancssori felület használatával].

A MyGet.org NuGet-kiszolgálóként is használható. Megvásárolhatja ezt a szolgáltatást, de van egy ingyenes kezdő termékváltozat. A saját NuGet-kiszolgáló privát csomagokhoz való telepítésével kapcsolatos utasításokért tekintse meg a Nuget.org dokumentációját.

6. lépés: Kösse össze az egészet

Minden alkalommal, amikor egy verzió megfelel a QA-nak, és jóváhagyják az üzembe helyezést, létrejön a csomag, és a nuspec és az nupkg frissül és üzembe kerül a NuGet-kiszolgálón. Frissítenie kell a konfigurációt (4. lépés) az új verziószámmal. Ezután küldje el a lekéréses kiszolgálónak, és fordítsa le.

Ettől a ponttól kezdve a konfigurációtól függő virtuális gépeken múlik a frissítés lekérése és telepítése. Mindegyik frissítés egyszerű – csak egy vagy két sornyi PowerShell. Az Azure DevOps esetében ezek némelyike olyan buildelési feladatokba van beágyazva, amelyeket össze lehet láncolva egy buildben. Ez a cikk további részleteket tartalmaz. Ez a GitHub-adattár részletesen ismerteti az elérhető buildelési feladatokat.

Következő lépések