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.
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.
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.
Telepítse a Windows Management Framework 5-ös verzióját (windows 10-hez nem szükséges).
Telepítse az integrációs modult.
Install-Module -Name MODULE-NAME` <—grabs the module from the PowerShell Gallery
Másolja a modulmappát
C:\Program Files\WindowsPowerShell\Modules\MODULE-NAME
egy ideiglenes mappába.Minták és dokumentáció törlése a fő mappából.
Tömörítse a fő mappát, és a ZIP-fájlt a mappa nevével nevezze el.
Helyezze a ZIP-fájlt egy elérhető HTTP-helyre, például egy Azure Storage-fiók blobtárolójába.
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.ps1
a 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.
Kapcsolódó cikkek
Következő lépések
- Az áttekintésért tekintse meg az Azure Automation State Configuration áttekintését.
- A funkció használatának megkezdéséhez tekintse meg az Azure Automation State Configuration használatának első lépéseit.
- A DSC-konfigurációk összeállításáról, hogy hozzárendelhesse őket a célcsomópontokhoz, olvassa el a DSC-konfigurációk fordítása az Azure Automation State Configuration szolgáltatásban című témakört.
- PowerShell-parancsmagra vonatkozó referencia: Az.Automation.
- A díjszabással kapcsolatos információkért tekintse meg az Azure Automation State Configuration díjszabását.