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

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

    Képernyőkép az Új folyamat hozzáadása gombról

  2. Adja meg a kód tárolási helyét. Az alábbi képen az Azure Repos Git kiválasztása látható.

    Képernyőkép a kódforrás kiválasztásáról az Azure DevOpsban

  3. Ebből a forrásból válassza ki azt az adattárat, amely a projekt kódját tartalmazza.

    Képernyőkép a projekt adattárának kiválasztásáról az Azure DevOpsban

  4. Válassza ki a létrehozni kívánt folyamat típusát. Kiválaszthatja a Starter-folyamatot.

    Képernyőkép az Azure DevOpsban létrehozandó folyamat típusának kiválasztásáról

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 azureSubscriptionadja meg a létrehozott szolgáltatáskapcsolat nevét.

inputs:
    azureSubscription: '<your-connection-name>'

A esetében scriptPathadja 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 ScriptArgumentsadja 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.

Képernyőkép az Azure DevOps folyamateredmény-nézetéről

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 azureSubscriptionadja 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, és Resource 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 és location: 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