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ä.
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 stringMuuttujat 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.idBicep-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.blobEndpointARM-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.bicepBicepin 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=prodSilmukat 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 jsonPikatarkistus
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.
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
- Miten Azure Resource Manager toimii
- ARM-mallien kirjoittaminen
- Bicep: moderni Azure IaC
- Terraform Azuressa