Cloud & IT Cert Prep · Oppitunti

Bicep: moderni Azure IaC

Opetelkaa Bicepin tiivis syntaksi vahvasti tyypitettynä abstraktiona ARM JSON:n päällä, muuntakaa olemassa oleva ARM-malli Bicepiksi ja ottakaa se käyttöön Azure CLI:llä.

Oppitunti 3/413 vaihetta

Bicep: moderni Azure IaC on ilmainen Cloud & IT Cert Prep-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Cloud & IT Cert Prep-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mikä Bicep on ja miksi sitä käytetään

Bicep on Microsoftin kehittämä toimialakohtainen kieli (DSL), joka on vahvasti tyypitetty ja tiivis vaihtoehto ARM JSON -mallipohjille. Bicep käännetään tavalliseksi ARM JSON:ksi, joten se käyttää samaa ARM-käyttöönottomoottoria ja tukee kaikkia Azure-resurssityyppejä heti. Bicep poistaa suuren osan raakaa JSON:ia vaivaavasta toistuvasta rakenteesta ja tarjoaa paremman tyyppiturvallisuuden sekä IntelliSense-tuen.

Bicepin ja ARM JSON:n syntaksivertailu

Sama tallennustili, joka vaatii ARM-mallipohjassa noin 25 riviä JSON:ia, tarvitsee Bicepissä vain noin 8 riviä. Bicep poistaa '$schema'- ja contentVersion-määritykset, resources-taulukon ympäröivän rakenteen sekä pitkän lausekesyntaksin. Ominaisuuksien nimet ja tyypit säilyvät samoina, koska Bicep on suora abstraktiotaso ARM JSON:n päällä – ajonaikaista eroa ei ole.

// Bicep: deploy a storage account
param storageAccountName string
param location string = resourceGroup().location
param sku string = 'Standard_LRS'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: sku
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
    minimumTlsVersion: 'TLS1_2'
  }
}

Parametrit ja annotaatiot Bicepissä

Bicepin parametreissa käytetään tiivistä param name type = defaultValue -syntaksia. Parametrin yläpuolelle voi lisätä suoraan annotaatioita, joiden etuliitteenä on @ ja joilla määritetään rajoituksia, kuten @minLength(), @maxLength(), @allowed() ja @description(). @secure()-annotaatio merkitsee parametrin arkaluonteiseksi, mikä vastaa secureString-tyyppiä ARM JSON:ssa.

@description('Globally unique name for the storage account')
@minLength(3)
@maxLength(24)
param storageAccountName string

@allowed(['Standard_LRS', 'Standard_GRS', 'Premium_LRS'])
param sku string = 'Standard_LRS'

@secure()
param adminPassword string

Muuttujat ja lausekkeet Bicepissä

Bicepin muuttujat määritetään var-avainsanalla, ja ne voivat sisältää minkä tahansa lausekkeen, myös merkkijonojen interpoloinnin '${value}'-syntaksilla. Merkkijonojen interpolointi on yksi Bicepin luettavimmista parannuksista ARM JSON:iin verrattuna – concat()-funktiokutsuja ei enää tarvita. Bicep tukee myös ehtolausekkeita kolmiosaisella operaattorilla condition ? trueValue : falseValue.

param environment string = 'dev'
param baseName string = 'myapp'

var uniqueSuffix = uniqueString(resourceGroup().id)
var storageAccountName = '${baseName}${environment}${uniqueSuffix}'
var isProd = environment == 'prod'
var skuName = isProd ? 'Standard_GRS' : 'Standard_LRS'

Resurssimääritykset ja symboliset nimet

Bicepissä jokaiselle resurssille annetaan symbolinen nimi, eli tunniste, jonka avulla resurssiin viitataan mallipohjan sisällä. Symbolinen nimi ei ole sama kuin resurssin Azure-nimi. Symbolisten nimien avulla voitte käyttää resurssin ominaisuuksia ja muodostaa implisiittisiä riippuvuuksia viittaamalla yhteen resurssiin toisen sisällä, jolloin erillistä dependsOn-taulukkoa ei tarvita.

resource vnet 'Microsoft.Network/virtualNetworks@2023-05-01' = {
  name: 'myVNet'
  location: location
  properties: {
    addressSpace: { addressPrefixes: ['10.0.0.0/16'] }
  }
}

// Implicit dependency via symbolic name reference
resource subnet 'Microsoft.Network/virtualNetworks/subnets@2023-05-01' = {
  parent: vnet  // Bicep knows to create vnet first
  name: 'mySubnet'
  properties: {
    addressPrefix: '10.0.1.0/24'
  }
}

Tulosteet Bicepissä

Bicepin tulosteet ilmoitetaan output-avainsanalla, jota seuraavat tulosteen nimi, tyyppi ja arvo. Käyttöönotetun resurssin ominaisuuksiin voi viitata symbolisen nimen ja piste-merkinnän avulla, mikä on huomattavasti luettavampaa kuin ARM:n reference()-funktio. Tulosteet ovat olennaisia arvojen välittämisessä Bicep-moduulikutsujen välillä.

output storageAccountName string = storageAccount.name
output blobEndpoint string = storageAccount.properties.primaryEndpoints.blob
output storageAccountId string = storageAccount.id

Bicep-moduulit

Bicep-moduulit vastaavat ARM JSON -mallien linkitettyjä malleja ja mahdollistavat infrastruktuurin jakamisen uudelleenkäytettäviin komponentteihin. Moduuli on yksinkertaisesti toinen .bicep-tiedosto. Siihen viitataan module-avainsanalla, sille välitetään parametreja ja sen tulosteita käytetään. Moduuleja voi myös julkaista Azure Container Registryyn ja käyttää sieltä koko tiimin laajuisesti.

// main.bicep — consuming a storage module
module storage './modules/storage.bicep' = {
  name: 'storageDeploy'
  params: {
    storageAccountName: 'myuniquestorage'
    location: location
    sku: 'Standard_LRS'
  }
}

// Reference module output in parent template
output blobUri string = storage.outputs.blobEndpoint

ARM-mallien muuntaminen Bicepiksi

Jos käytössäsi on valmiita ARM JSON -malleja, Bicep CLI voi purkaa ne Bicep-muotoon komennolla bicep decompile. Tulos saattaa vaatia jonkin verran manuaalista siistimistä, mutta se tarjoaa erinomaisen lähtökohdan. Microsoft tarjoaa myös verkossa toimivan leikkikentän osoitteessa aka.ms/bicepdemo, jossa voit liittää ARM JSON -koodia ja nähdä vastaavan Bicep-koodin reaaliajassa.

# Install the Bicep CLI (or use it via Azure CLI)
az bicep install
az bicep upgrade

# Decompile existing ARM JSON to Bicep
az bicep decompile --file azuredeploy.json
# Produces azuredeploy.bicep in the same directory

# Compile Bicep to ARM JSON (for inspection)
az bicep build --file main.bicep

Bicepin käyttöönotto Azure CLI:llä

Azure CLI tukee Bicep-tiedostoja suoraan — niitä ei tarvitse kääntää manuaalisesti ARM JSON -muotoon ennen käyttöönottoa. Välitä .bicep-tiedoston polku komennolle az deployment group create lipulla --template-file, jolloin CLI kääntää tiedoston läpinäkyvästi. Samat validate- ja what-if-alakomennot toimivat Bicep-tiedostojen kanssa täsmälleen kuten ARM JSON -tiedostojen kanssa.

# Deploy a Bicep file directly
az deployment group create \
  --resource-group MyRG \
  --template-file main.bicep \
  --parameters storageAccountName=myprodstore environment=prod

# What-if preview with Bicep
az deployment group what-if \
  --resource-group MyRG \
  --template-file main.bicep \
  --parameters storageAccountName=myprodstore environment=prod

Silmukat ja ehdot Bicepissä

Bicep tukee resurssisilmukoita syntaksilla for ... in. Niiden avulla taulukkomuuttujan perusteella voidaan luoda resurssin useita instansseja ilman kopioi ja liitä -toistamista. if-avainsana mahdollistaa ehdollisen resurssin käyttöönoton — resurssi sisällytetään vain, kun tietty ehto on tosi. Molemmat ominaisuudet käännetään vastaavasti ARM:n copy- ja condition-rakenteiksi.

// Loop: create multiple storage accounts
param storageNames array = ['alpha', 'beta', 'gamma']

resource stores 'Microsoft.Storage/storageAccounts@2023-01-01' = [for name in storageNames: {
  name: '${name}${uniqueString(resourceGroup().id)}'
  location: location
  sku: { name: 'Standard_LRS' }
  kind: 'StorageV2'
}]

// Condition: only deploy in prod
param deployKeyVault bool = false

resource kv 'Microsoft.KeyVault/vaults@2023-07-01' = if (deployKeyVault) {
  name: 'myKeyVault'
  location: location
  properties: { sku: { family: 'A', name: 'standard' }, tenantId: subscription().tenantId, accessPolicies: [] }
}

Bicepin työkalut ja linttaus

Visual Studio Coden Bicep-laajennus tarjoaa monipuolisen IntelliSense-tuen, tyyppitarkistuksen ja virheiden korostuksen suoraan kirjoitettaessa. Bicep CLI sisältää linterin, joka tarkistaa parhaiden käytäntöjen rikkomukset, kuten käyttämättömät parametrit, puuttuvat kuvaukset ja virheelliset API-versiot. Suorita CI-putkessa az bicep lint --file main.bicep, jotta ongelmat havaitaan ennen käyttöönottoa.

# Run the Bicep linter
az bicep lint --file main.bicep

# Format a Bicep file
az bicep format --file main.bicep

# Generate resource type documentation
az bicep generate-params --file main.bicep --output-format json

Pikatarkistus

Testaa, miten hyvin ymmärrät tämän oppitunnin Microsoft Azure Fundamentals (AZ-900) -käsitteet.

Oppitunnin kertaus

Tässä oppitunnissa opit, että Bicep on tiivis ja vahvasti tyypitetty abstraktio ARM JSON -muodolle ja että se käännetään tavallisiksi ARM-malleiksi, moduulit ja silmukat mahdollistavat uudelleenkäytettävän ja DRY-periaatetta noudattavan infrastruktuurikoodin ja Azure CLI ottaa Bicep-tiedostot käyttöön suoraan tukien samaa validate/what-if/deploy-työnkulkua. Seuraavaksi tutustumme Terraformiin Azuressa.

Aloita maksutta

Opi Cloud & IT Cert Prep tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
150
Oppitunnit
600

Usein kysytyt kysymykset

Onko oppitunti ”Bicep: moderni Azure IaC” ilmainen?

Kyllä – oppitunnin ”Bicep: moderni Azure IaC” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Cloud & IT Cert Prep-kurssin, päivitä CoddyKit PROhon. Cloud & IT Cert Prep-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Bicep: moderni Azure IaC”?

Opetelkaa Bicepin tiivis syntaksi vahvasti tyypitettynä abstraktiona ARM JSON:n päällä, muuntakaa olemassa oleva ARM-malli Bicepiksi ja ottakaa se käyttöön Azure CLI:llä. Harjoittelet Cloud & IT Cert Prep-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Cloud & IT Cert Prep-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Cloud & IT Cert Prep-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.

Kuinka kauan ”Bicep: moderni Azure IaC”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Cloud & IT Cert Prep-oppitunnilla?

Kyllä. Jokainen Cloud & IT Cert Prep-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Miten Azure Resource Manager toimii
  2. ARM-mallien kirjoittaminen
  3. Bicep: moderni Azure IaC
  4. Terraform Azuressa
← Takaisin: Cloud & IT Cert Prep