ARM-sablonok integrálása az Azure Pipelines használatával
Az Azure Resource Manager-sablonokat (ARM-sablonokat) integrálhatja az Azure Pipelines szolgáltatással a folyamatos integráció és a folyamatos üzembe helyezés (CI/CD) érdekében. Ebben a cikkben két speciális módszert ismerhet meg a sablonok Azure Pipelines használatával történő üzembe helyezésére.
Válassza ki a kívánt lehetőséget
Mielőtt továbblépnénk a cikkre, tekintsük át az ARM-sablonok folyamatból való üzembe helyezésének különböző lehetőségeit.
Használjon ARM-sablon üzembehelyezési feladatot. Ez a legegyszerűbb lehetőség. Ez a módszer akkor működik, ha egy sablont közvetlenül egy adattárból szeretne üzembe helyezni. Ez a lehetőség nem szerepel ebben a cikkben, hanem az ARM-sablonok Azure Pipelinesba való folyamatos integrálását ismertető oktatóanyagban található. Bemutatja, hogyan helyezhet üzembe sablont a GitHub-adattárból az ARM-sablon üzembe helyezési feladatával .
Adjon hozzá egy Azure PowerShell szkriptet futtató feladatot. Ez a beállítás azzal az előnnyel jár, hogy konzisztenciát biztosít a fejlesztési életciklus során, mivel ugyanazt a szkriptet használhatja, amelyet a helyi tesztek futtatásakor használt. A szkript üzembe helyezi a sablont, de más műveleteket is végrehajthat, például leküldheti a paraméterekként használandó értékeket. Ez a lehetőség jelenik meg ebben a cikkben. Lásd: Azure PowerShell feladat.
A Visual Studio biztosítja a PowerShell-szkriptet tartalmazó Azure-erőforráscsoport-projektet . A szkript a projektből egy olyan tárfiókba bontja az összetevőket, amelyekhez Resource Manager férhetnek hozzá. Az összetevők a projekt elemei, például csatolt sablonok, szkriptek és alkalmazás bináris fájljai. Ha folytatni szeretné a szkript használatát a projektből, használja az ebben a cikkben bemutatott PowerShell-szkriptfeladatot.
Feladatok hozzáadása a feladatok másolásához és üzembe helyezéséhez. Ez a lehetőség kényelmes alternatívát kínál a projektszkript helyett. A folyamat két feladatát konfigurálja. Az egyik tevékenység akadálymentes helyre ra bontja az összetevőket. A másik feladat az adott helyről telepíti a sablont. Ez a lehetőség jelenik meg ebben a cikkben. Lásd: Feladatok másolása és üzembe helyezése.
A projekt előkészítése
Ez a cikk feltételezi, hogy az ARM-sablon és az Azure DevOps-szervezet készen áll a folyamat létrehozására. Az alábbi lépések bemutatják, hogyan győződjön meg arról, hogy készen áll:
Azure DevOps-szervezettel rendelkezik. Ha még nincs ilyenje, hozzon létre egyet ingyen. Ha a csapata már rendelkezik Azure DevOps-szervezettel, győződjön meg arról, hogy Ön a használni kívánt Azure DevOps-projekt rendszergazdája.
Konfigurált egy szolgáltatáskapcsolatot az Azure-előfizetéséhez. A folyamat feladatai a szolgáltatásnév identitása alatt futnak. A kapcsolat létrehozásának lépéseit lásd: DevOps-projekt létrehozása.
Rendelkezik egy ARM-sablonnal , amely meghatározza a projekt infrastruktúráját.
Folyamat létrehozása
Ha korábban még nem adott hozzá folyamatot, létre kell hoznia egy új folyamatot. Az Azure DevOps-szervezetben válassza a Folyamatok és új folyamat lehetőséget.
Adja meg a kód tárolási helyét. Az alábbi képen az Azure Repos Git kiválasztása látható.
Ebből a forrásból válassza ki azt az adattárat, amely a projekt kódját tartalmazza.
Válassza ki a létrehozni kívánt folyamat típusát. Kiválaszthatja a Starter-folyamatot.
Készen áll egy Azure PowerShell feladat hozzáadására, vagy a fájl másolására és a feladatok üzembe helyezésére.
Azure PowerShell-feladat
Ez a szakasz bemutatja, hogyan konfigurálhatja a folyamatos üzembe helyezést egyetlen feladat használatával, amely a PowerShell-szkriptet futtatja a projektben. Ha sablont üzembe helyező PowerShell-szkriptre van szüksége, tekintse meg Deploy-AzTemplate.ps1 vagy Deploy-AzureResourceGroup.ps1.
A következő YAML-fájl létrehoz egy Azure PowerShell feladatot:
trigger:
- master
pool:
vmImage: 'ubuntu-latest'
steps:
- task: AzurePowerShell@5
inputs:
azureSubscription: 'script-connection'
ScriptType: 'FilePath'
ScriptPath: './Deploy-AzTemplate.ps1'
ScriptArguments: -Location 'centralus' -ResourceGroupName 'demogroup' -TemplateFile templates\mainTemplate.json
azurePowerShellVersion: 'LatestVersion'
Amikor a tevékenységet értékre AzurePowerShell@5
állítja, a folyamat az Az modult használja. Ha az AzureRM modult használja a szkriptben, állítsa a feladatot értékre AzurePowerShell@3
.
steps:
- task: AzurePowerShell@3
A esetében azureSubscription
adja meg a létrehozott szolgáltatáskapcsolat nevét.
inputs:
azureSubscription: '<your-connection-name>'
A esetében scriptPath
adja meg a folyamatfájl és a szkript relatív elérési útját. Az elérési utat az adattárban tekintheti meg.
ScriptPath: '<your-relative-path>/<script-file-name>.ps1'
A fájlban ScriptArguments
adja meg a szkript által igényelt paramétereket. Az alábbi példa egy szkript néhány paraméterét mutatja be, de testre kell szabnia a szkript paramétereit.
ScriptArguments: -Location 'centralus' -ResourceGroupName 'demogroup' -TemplateFile templates\mainTemplate.json
Amikor a Mentés lehetőséget választja, a buildfolyamat automatikusan lefut. Vissza a buildelési folyamat összegzésére, és watch az állapotot.
A tevékenységek részleteinek megtekintéséhez válassza ki az éppen futó folyamatot. Amikor befejeződik, az egyes lépések eredményeit láthatja.
Feladatok másolása és üzembe helyezése
Ez a szakasz bemutatja, hogyan konfigurálhatja a folyamatos üzembe helyezést két feladat használatával. Az első feladat az összetevőket egy tárfiókba helyezi, a második pedig üzembe helyezi a sablont.
Ha fájlokat szeretne egy tárfiókba másolni, a szolgáltatáskapcsolat szolgáltatásnevét a Storage-blobadatok közreműködője vagy a Storage-blobadatok tulajdonosa szerepkörrel kell hozzárendelni. További információ: Ismerkedés az AzCopyval.
Az alábbi YAML az Azure-fájlmásolási feladatot mutatja be.
trigger:
- master
pool:
vmImage: 'windows-latest'
steps:
- task: AzureFileCopy@4
inputs:
SourcePath: 'templates'
azureSubscription: 'copy-connection'
Destination: 'AzureBlob'
storage: 'demostorage'
ContainerName: 'projecttemplates'
name: AzureFileCopy
Ennek a feladatnak több részét is át kell vizsgálnia a környezetében. A SourcePath
az összetevők helyét jelzi a folyamatfájlhoz viszonyítva.
SourcePath: '<path-to-artifacts>'
A esetében azureSubscription
adja meg a létrehozott szolgáltatáskapcsolat nevét.
azureSubscription: '<your-connection-name>'
A tároló és a tároló neveként adja meg annak a tárfióknak és tárolónak a nevét, amelyet az összetevők tárolásához szeretne használni. A tárfióknak léteznie kell.
storage: '<your-storage-account-name>'
ContainerName: '<container-name>'
A fájlmásolási feladat létrehozása után készen áll arra, hogy hozzáadja a feladatot a szakaszos sablon üzembe helyezéséhez.
Az alábbi YAML az Azure Resource Manager-sablon üzembehelyezési feladatát mutatja be:
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'copy-connection'
subscriptionId: '00000000-0000-0000-0000-000000000000'
action: 'Create Or Update Resource Group'
resourceGroupName: 'demogroup'
location: 'West US'
templateLocation: 'URL of the file'
csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
csmParametersFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.parameters.json$(AzureFileCopy.StorageContainerSasToken)'
deploymentMode: 'Incremental'
deploymentName: 'deploy1'
Ennek a feladatnak több részét is részletesebben át kell tekinteni.
deploymentScope
: Válassza ki az üzembe helyezés hatókörét a következő lehetőségek közül:Management Group
,Subscription
, ésResource Group
. A hatókörökről további információt az Üzembehelyezési hatókörök című témakörben talál.azureResourceManagerConnection
: Adja meg a létrehozott szolgáltatáskapcsolat nevét.subscriptionId
: Adja meg a cél előfizetés-azonosítót. Ez a tulajdonság csak az erőforráscsoport üzembehelyezési hatókörére és az előfizetés üzembehelyezési hatókörére vonatkozik.resourceGroupName
éslocation
: adja meg annak az erőforráscsoportnak a nevét és helyét, amelybe üzembe szeretne helyezni. A tevékenység létrehozza az erőforráscsoportot, ha az nem létezik.resourceGroupName: '<resource-group-name>' location: '<location>'
csmFileLink
: Adja meg a szakaszos sablon hivatkozását. Az érték beállításakor használja a fájlmásolási feladatból visszaadott változókat. Az alábbi példa egy mainTemplate.json nevű sablonra hivatkozik. A sablonok nevű mappa azért van benne, mert a fájlmásolási feladat oda másolta a fájlt. A folyamatban adja meg a sablon elérési útját és a sablon nevét.csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
A folyamat a következőképpen néz ki:
trigger:
- master
pool:
vmImage: 'windows-latest'
steps:
- task: AzureFileCopy@4
inputs:
SourcePath: 'templates'
azureSubscription: 'copy-connection'
Destination: 'AzureBlob'
storage: 'demostorage'
ContainerName: 'projecttemplates'
name: AzureFileCopy
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
azureResourceManagerConnection: 'copy-connection'
subscriptionId: '00000000-0000-0000-0000-000000000000'
action: 'Create Or Update Resource Group'
resourceGroupName: 'demogroup'
location: 'West US'
templateLocation: 'URL of the file'
csmFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.json$(AzureFileCopy.StorageContainerSasToken)'
csmParametersFileLink: '$(AzureFileCopy.StorageContainerUri)templates/mainTemplate.parameters.json$(AzureFileCopy.StorageContainerSasToken)'
deploymentMode: 'Incremental'
deploymentName: 'deploy1'
Amikor a Mentés lehetőséget választja, a buildfolyamat automatikusan lefut. A Feladatok keretben válassza a Feladat lehetőséget a feladat állapotának megtekintéséhez.
Következő lépések
- A lehetőségelemzési művelet folyamatokban való használatához lásd: ARM-sablonok tesztelése What-If egy folyamatban.
- Az ARM-sablonok GitHub Actions való használatáról az Azure Resource Manager-sablonok üzembe helyezése GitHub Actions használatával című témakörben olvashat.