Harjoitus – Parametrien ja muuttujien lisääminen Bicep-tiedostoon

Valmis

Note

Tämä harjoitus on valinnainen. Jos haluat suorittaa tämän harjoituksen, sinun on luotava Azure-tilaus ennen aloittamista. Jos sinulla ei ole Azure-tiliä tai et halua luoda sellaista tällä hetkellä, voit lukea ohjeet läpi, jotta ymmärrät esitetyt tiedot.

Tässä harjoituksessa päivität aiemmin luomasi Bicep-tiedoston, joten se:\

  • Hyväksyy resurssisijainteja ja nimiä koskevat parametrit.
  • Liiketoimintasääntöjen avulla voit valita oikeat varastointiyksiköt käyttöönotettaville resursseille.

Prosessin aikana teet seuraavat:

  • Päivitä Bicep-tiedosto sisältämään location parametri.
  • Päivitä Bicep-tiedosto sisältämään parametrit ja muuttujat resurssien nimille.
  • Lausekkeiden avulla voit määrittää parametreille oletusarvot.
  • Päivitä Bicep-tiedosto sisältämään muuttujat kunkin resurssin SKU:lle.
  • Testaa käyttöönottoa varmistaaksesi, että Bicep-tiedosto on kelvollinen.

Sijainnin ja resurssin nimen parametrien lisääminen

  1. Lisää Seuraava koodi Visual Studio Coden main.bicep-tiedostoon Bicep-tiedoston yläosaan:

    param location string = 'eastus'
    param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
    param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
    
    var appServicePlanName = 'toy-product-launch-plan'
    

    Bicep-linter lisää keltaiset aaltoviivat jokaisen parametrin ja muuttujan nimen alle osoittamaan, ettei niitä käytetä Bicep-tiedostossa. Korjaat tämän ongelman pian.

    Huomaa, että käytät lausekkeita, jotka sisältävät merkkijonon interpoloinnin ja uniqueString()-funktion oletusarvojen arvojen määrittämiseen. Joku, joka ottaa tämän Bicep-tiedoston käyttöön, voi ohittaa oletusarvoiset parametriarvot määrittämällä arvot käyttöönoton aikana, mutta hän ei voi ohittaa muuttujien arvoja.

    Huomaa myös, että käytät muuttujaa Azure-sovelluspalvelun palvelupaketin nimessä, mutta käytät parametreja muille nimille. Tallennustilit ja sovelluspalvelun sovellukset tarvitsevat yleisesti yksilöiviä nimiä, mutta sovelluspalvelusopimusnimien on oltava yksilöllisiä vain resurssiryhmässään. Tämä ero tarkoittaa, että sinun ei tarvitse käyttää samaa sovelluspalvelusuunnitelman nimeä eri käyttöönotoissa, kunhan kaikki käyttöönotot on jaettu eri resurssiryhmiin.

    Juomaraha

    Määrität, että location-parametrin arvoksi määritetään westus3. Yleensä luot resursseja samassa sijainnissa kuin resurssiryhmä käyttämällä resourceGroup().location-ominaisuutta. Kun käytät Microsoft Learn -eristystä, sinun on käytettävä tiettyjä Azure-alueita, jotka eivät vastaa resurssiryhmän sijaintia.

  2. Etsi resurssimääritelmistä paikat, joissa location ja name ominaisuudet on määritetty, ja päivitä ne käyttämään parametriarvoja. Kun olet valmis, Bicep-tiedoston resurssimääritysten pitäisi näyttää tältä:

    resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
      name: storageAccountName
      location: location
      sku: {
        name: 'Standard_LRS'
      }
      kind: 'StorageV2'
      properties: {
        accessTier: 'Hot'
      }
    }
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: 'F1'
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    
  3. Tallenna muutokset tiedostoon.

Määritä kunkin ympäristötyypin SKU:t automaattisesti

  1. Lisää main.bicep -tiedostoon Visual Studio Codessa seuraava Bicep-parametri edellisessä tehtävässä luomiesi parametrien alapuolelle:

    @allowed([
      'nonprod'
      'prod'
    ])
    param environmentType string
    

    Huomaa, että määrität parametrin sallituilla arvoilla, mutta et määritä oletusarvoa tälle parametrille.

  2. Lisää seuraavat muuttujamääritykset appServicePlanName-muuttujan ilmoittavan rivin alapuolelle:

    var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
    var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
    

    Huomaa, että määrität näitä muuttujien arvoja käyttämällä ternaarioperaattoria if/then/else logiikan ilmaisemiseen.

  3. Etsi resurssien määritelmistä paikat, joissa sku ominaisuudet määritetään, ja päivitä ne käyttämään parametriarvoja. Kun olet valmis, Bicep-tiedoston resurssimääritysten pitäisi näyttää tältä:

    resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
      name: storageAccountName
      location: location
      sku: {
        name: storageAccountSkuName
      }
      kind: 'StorageV2'
      properties: {
        accessTier: 'Hot'
      }
    }
    
    resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
      name: appServicePlanName
      location: location
      sku: {
        name: appServicePlanSkuName
      }
    }
    
    resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
      name: appServiceAppName
      location: location
      properties: {
        serverFarmId: appServicePlan.id
        httpsOnly: true
      }
    }
    

    Huomaa, että kaikkea ei ole parametrisoitu. Olet määrittänyt joitain ominaisuuksia suoraan resurssimäärityksiä, joissa tiedät, että nämä arvot eivät muutu käyttöönottojen välillä.

  4. Tallenna muutokset tiedostoon.

Vahvista Bicep-tiedostosi

Kun olet tehnyt kaikki edellä mainitut muutokset, main.bicep-tiedoston pitäisi näyttää tältä:

param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'

@allowed([
  'nonprod'
  'prod'
])
param environmentType string

var appServicePlanName = 'toy-product-launch-plan'
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountSkuName
  }
  kind: 'StorageV2'
  properties: {
    accessTier: 'Hot'
  }
}

resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
  name: appServicePlanName
  location: location
  sku: {
    name: appServicePlanSkuName
  }
}

resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
  name: appServiceAppName
  location: location
  properties: {
    serverFarmId: appServicePlan.id
    httpsOnly: true
  }
}

Jos tiedosto ei täsmää, kopioi esimerkki tai muuta tiedostosi vastaamaan esimerkkiä.

Päivitetyn Bicep-tiedoston käyttöönotto

Suorita seuraava Azure CLI -komento päätteessä.

az deployment group create \
  --name main \
  --template-file main.bicep \
  --parameters environmentType=nonprod

Suorita seuraava Azure PowerShell -komento päätteessä.

New-AzResourceGroupDeployment `
  -Name main `
  -TemplateFile main.bicep `
  -environmentType nonprod

Huomaa, että määrität environmentType-parametrin arvon nimenomaisesti, kun suoritat käyttöönoton. Sinun ei tarvitse määrittää muita parametriarvoja, koska niillä on kelvolliset oletusarvot.

Käyttöönoton tarkistaminen

  1. Palaa selaimessa takaisin Azure -portaalin ja siirry resurssiryhmääsi. Näet edelleen yhden onnistuneen käyttöönoton, koska käyttöönotto käytti samaa nimeä kuin ensimmäinen käyttöönotto.

  2. Valitse onnistunut -linkki 1.

  3. Valitse käyttöönotto nimeltä pääja laajenna käyttöön otettujen resurssien luettelo valitsemalla Käyttöönottotiedot.

    Näyttökuva tietyn käyttöönoton Azure-portaalin käyttöliittymästä, jossa on lueteltu luodut nimet tallennustilin ja sovelluspalvelun resursseissa.

  4. Huomaa, että uusi sovelluspalvelun sovellus ja tallennustili on otettu käyttöön käyttäen satunnaisesti luotuja nimiä.