Lisää joustavuutta parametrien ja muuttujien avulla
Bicep-tiedostot ovat tehokkaita niiden uudelleenkäytettävyyden vuoksi. Bicepin avulla voit kirjoittaa tiedostoja, jotka ottavat käyttöön useita ympäristöjä tai kopioita resursseistasi.
Leluyrityksesi käynnistää uusia tuotteita säännöllisesti, ja sinun on luotava Bicep-tiedostojen avulla kunkin tuotteen julkaisun edellyttämät Azure-resurssit. Sinun on vältettävä kiinteiden resurssien nimien käyttämistä. Monet Azure-resurssityypit tarvitsevat yksilölliset nimet, joten nimien upottaminen Bicep-tiedostoon tarkoittaa, että tiedostoa ei voi käyttää uudelleen useille tuotelanseerauksille. Resurssit on otettava käyttöön myös eri sijainneissa sen mukaan, missä lelut julkaistaan, joten et voi myöskään upottaa resurssisijainteja tiedostoon.
Tässä osiossa tutustut parametreihin ja muuttujiin. Ne ovat kaksi Bicep-ominaisuutta, jotka voivat tehdä Bicep-tiedostoistasi joustavia ja uudelleenkäytettäviä. Lisäksi tutustut lausekkeisiin.
Huomautus
Tämän yksikön komennot näytetään käsitteiden havainnollistamiseksi. Älä suorita komentoja vielä. Harjoittelet oppimaani täällä pian.
Parametrit ja muuttujat
Parametrin avulla voit tuoda arvoja Bicep-tiedoston ulkopuolelta. Jos esimerkiksi otat tiedoston käyttöön manuaalisesti käyttämällä Azure CLI:tä tai Azure PowerShelliä, sinua pyydetään antamaan arvot kullekin parametrille. Voit myös luoda parametritiedoston, jossa luetellaan kaikki parametrit ja arvot, joita haluat käyttää käyttöönotossa. Jos Bicep-tiedosto otetaan käyttöön automatisoidusta prosessista, kuten käyttöönottoputkesta, putki voi tarjota parametriarvot.
Muuttuja määritetään ja määritetään Bicep-tiedostossa. Muuttujien avulla voit tallentaa tärkeitä tietoja yhteen paikkaan ja viitata siihen koko tiedostossa ilman, että niitä tarvitsee kopioida ja liittää.
Yleensä kannattaa käyttää parametreja eri käyttöönottojen välillä muuttuville asioille, kuten:
- Resurssinimet, joiden on oltava yksilöllisiä.
- Sijainnit, joihin resursseja voidaan ottaa käyttöön.
- Asetukset, jotka vaikuttavat resurssien hinnoitteluun, kuten niiden varastointiyksiköt, hinnoittelutasot ja esiintymämäärät.
- Tunnistetiedot ja tiedot, joita tarvitaan muihin järjestelmiin, joita ei ole määritetty Bicep-tiedostossa.
Muuttujat ovat yleensä hyvä vaihtoehto, kun käytät samoja arvoja kussakin käyttöönotossa, mutta haluat tehdä arvosta uudelleenkäytettävän tiedostossa tai kun haluat luoda monimutkaisen arvon lausekkeiden avulla. Voit myös käyttää muuttujia resursseille, jotka eivät tarvitse yksilöllisiä nimiä.
Juomaraha
On tärkeää käyttää hyvää nimeämistä parametreille ja muuttujille, jotta Bicep-tiedostoja on helppo lukea ja ymmärtää. Varmista, että käytät selkeitä, kuvaavia ja yhtenäisiä nimiä.
Parametrin lisääminen
Voit määrittää Bicepissä seuraavankaltaisen parametrin:
param appServiceAppName string
Katsotaan seuraavaksi, miten tämän määrityksen kukin osa toimii:
-
paramkertoo Bicepille, että määrität parametrin. -
appServiceAppNameon parametrin nimi. Jos otat Bicep-tiedoston käyttöön manuaalisesti, sinua saatetaan pyytää antamaan arvo, joten on tärkeää, että nimi on selkeä ja ymmärrettävä. Nimi ilmaisee myös sitä, miten viittaat parametriarvoon tiedostossa, aivan kuten resurssien symbolisilla nimillä. -
stringon parametrin tyyppi. Voit määrittää useita eri tyyppejä Bicep-parametreille, kutenstringtekstille,intnumeroille jabooltotuusarvoille tosi tai epätosi. Voit myös välittää monimutkaisempia parametreja käyttämälläarray- jaobject-tyyppejä.
Juomaraha
Yritä olla yleistämättä Bicep-tiedostoja liian monen parametrin avulla. Käytä liiketoimintaskenaariossa tarvitsemiesi parametrien vähimmäismäärää. Muista, että voit aina muuttaa Bicep-tiedostoja jatkossa, jos vaatimuksesi muuttuvat.
Oletusarvojen antaminen
Voit halutessasi antaa parametrille oletusarvon. Kun määrität oletusarvon, parametrista tulee valinnainen. Henkilö, joka ottaa Bicep-tiedoston käyttöön, voi halutessaan määrittää arvon, mutta jos ei halua, Bicep käyttää oletusarvoa.
Voit lisätä oletusarvon näin:
param appServiceAppName string = 'toy-product-launch-1'
Huomautus
Tässä esimerkissä Azure-sovelluspalvelun sovelluksen nimellä on pysyväiskoodattu oletusarvo. Tämä ei ole hyvä idea, koska sovelluspalvelun sovellukset tarvitsevat yksilölliset nimet. Korjaat tämän pian.
Parametriarvojen käyttäminen Bicep-tiedostossa
Kun olet määrittänyt parametrin, voit viitata siihen koko Bicep-tiedoston muissa versioissa. Katsotaan, miten voit käyttää uutta parametria resurssimäärityksessä:
resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
name: appServiceAppName
location: 'eastus'
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Huomaa, että Bicep-tiedosto käyttää nyt parametriarvoa määrittääkseen sovelluksen resurssin nimen kiinteästi koodatun arvon sijaan.
Juomaraha
Visual Studio Coden Bicep-laajennus näyttää visuaaliset ilmaisimet, jotka osoittavat, jos et seuraa suositeltuja käytäntöjä. Se esimerkiksi varoittaa, jos määrität parametrin, jota et käytä. Bicep linter suorittaa näitä tarkistuksia jatkuvasti työskentelyn aikana.
Muuttujan lisääminen
Voit määrittää muuttujan seuraavasti:
var appServicePlanName = 'toy-product-launch-plan'
Muuttujat määritetään samalla tavalla kuin parametrit, mutta niiden välillä on muutamia eroja:
- kerro
var-avainsanan avulla Bicepille, että määrität muuttujan. - Muuttujalle on annettava arvo.
- Muuttujat eivät tarvitse tyyppejä. Bicep voi määrittää tyypin määrittämäsi arvon perusteella.
Lausekkeet
Kun kirjoitat Bicep-tiedostoja, et usein halua kovakoodata arvoja tai pyytää niiden määrittämistä parametrissa. Haluat sen sijaan löytää arvot, kun tiedosto suoritetaan. Haluat luultavasti ottaa kaikki Bicep-tiedoston resurssit käyttöön yhdellä Azure-alueella, jolla olet luonut resurssiryhmän. Saatat myös haluta luoda resurssille automaattisesti yksilöivän nimen yrityksesi käyttämän nimeämisstrategian perusteella.
-lausekkeet Bicepissä ovat tehokas ominaisuus, joka auttaa käsittelemään kaikenlaisia kiinnostavia skenaarioita. Tutustutaan muutamiin paikkoihin, joissa voit käyttää Bicep-tiedoston lausekkeita.
Resurssien sijainnit
Kun kirjoitat ja otat käyttöön mallia, et usein halua määrittää jokaisen resurssin sijaintia yksitellen. Sinulla voi sen sijaan olla yksinkertainen liiketoimintasääntö, joka sanoo: oletusarvoisesti ota kaikki resurssit käyttöön samassa sijainnissa, jossa resurssiryhmä luotiin.
Voit luoda Bicepissä parametrin nimeltä locationja asettaa sitten sen arvon lausekkeen avulla:
param location string = resourceGroup().location
Katso tämän parametrin oletusarvoa. Se käyttää funktiota nimeltä resourceGroup() , joka antaa sinulle pääsyn sen resurssiryhmän tietoihin, jossa Bicep-tiedostoa otetaan käyttöön. Tässä esimerkissä tiedosto käyttää -ominaisuutta location . Tätä menetelmää käytetään usein resurssien käyttöönottoon samalla Azure-alueella kuin resurssiryhmä.
Jos joku ottaa tämän Bicep-tiedoston käyttöön, hän saattaa ohittaa oletusarvon täällä ja käyttää eri sijaintia.
Huomautus
Osa Azuren resursseista voidaan ottaa käyttöön vain tietyissä sijainneissa. Näiden resurssien sijaintien määrittämiseen tarvitaan ehkä erilliset parametrit.
Voit nyt käyttää Bicep-tiedoston sisällä olevaa resurssisijaintiparametria seuraavasti:
resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Resurssien nimet
Monet Azure-resurssit tarvitsevat yksilölliset nimet. Skenaariossasi on kaksi resurssia, jotka tarvitsevat yksilölliset nimet: tallennustilin ja sovelluspalvelusovelluksen. Jos näitä arvoja pyydetään määrittämään parametreiksi, Bicep-tiedoston käyttäjien on vaikea löytää nimeä, jota kukaan muu ei ole käyttänyt.
Bicep-funktiolla on toinen funktio nimeltä uniqueString() josta on hyötyä, kun luot resurssien nimiä. Kun käytät tätä funktiota, sinun on annettava alkuarvo, jonka pitäisi olla erilainen eri käyttöönotoissa, mutta yhdenmukainen kaikissa saman resurssin käyttöönotoissa.
Jos valitset hyvän alkuarvon, saat saman nimen aina, kun otat käyttöön saman resurssijoukon, mutta saat eri nimen aina, kun otat käyttöön eri resurssijoukon käyttämällä samaa Bicep-tiedostoa. Katsotaan, miten voit käyttää uniqueString() funktiota:
param storageAccountName string = uniqueString(resourceGroup().id)
Tämän parametrin oletusarvo käyttää resourceGroup() -funktiota uudelleen, kuten teit määrittäessäsi resurssin sijaintia. Tällä kertaa saat kuitenkin resurssiryhmän tunnuksen. Resurssiryhmän tunnus näyttää tältä:
/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyResourceGroup
Resurssiryhmän tunnus sisältää Azure-tilaustunnuksen (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e) ja resurssiryhmän nimen (MyResourceGroup). Resurssiryhmän tunnus on usein hyvä ehdokas resurssien nimien alkuarvoksi, koska:
- Aina, kun otat käyttöön samoja resursseja, ne siirtyvät samaan resurssiryhmään.
uniqueString()-funktio palauttaa saman arvon joka kerta. - Jos otat käyttöön kahdessa eri resurssiryhmässä Azure-tilauksessa, arvo on eri,
resourceGroup().idkoska resurssiryhmien nimet ovat erilaiset.uniqueString()-funktio antaa eri arvot kullekin resurssijoukolle. - Jos otat käyttöön kahdessa eri Azure-tilauksessa, vaikka käyttäisit samaa resurssiryhmän nimeä,
resourceGroup().idarvo on erilainen, koska Azure-tilaustunnus on erilainen.uniqueString()funktio antaa jälleen eri arvot kullekin resurssijoukolle.
Juomaraha
Usein kannattaa käyttää Bicep-tiedostolausekkeita resurssien nimien luomiseen. Monissa Azure-resurssityypeissä on sääntöjä, jotka koskevat niiden nimien sallittuja merkkejä ja pituutta. Resurssien nimien luomisen upottaminen Bicep-tiedostoon tarkoittaa sitä, että kaikkien tiedostoa käyttävien ei tarvitse muistaa noudattaa näitä sääntöjä itse.
Yhdistetyt merkkijonot
Jos käytät vain uniqueString()-funktiota resurssien nimien määrittämiseen, saat todennäköisesti yksilölliset nimet, mutta ne eivät ole merkityksellisiä. Hyvän resurssin nimen tulisi myös olla kuvaava, jotta on selvää, mihin resurssi on tarkoitettu. Haluat usein luoda nimen yhdistämällä mielekkään sanan tai merkkijonon yksilöivään arvoon. Näin sinulla on resursseja, joilla on sekä merkityksellinen että yksilölliset nimet.
Bicep sisältää ominaisuuden nimeltä merkkijonon interpoloinnin jonka avulla voit yhdistää merkkijonoja. Katsotaan, miten se toimii:
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
storageAccountName-parametrin oletusarvossa on nyt kaksi osaa:
-
toylaunchon pysyväiskoodattu merkkijono, joka auttaa kaikkia, jotka tarkastelevat käyttöön otettua resurssia Azuressa, ymmärtämään tallennustilin tarkoituksen. -
${uniqueString(resourceGroup().id)}avulla Bicep voi arvioidauniqueString(resourceGroup().id)-funktion tuloksen ja liittää sen sitten merkkijonoon.
Juomaraha
Joskus uniqueString() funktio luo merkkijonoja, jotka alkavat numerolla. Jotkin Azure-resurssit, kuten tallennustilit, eivät salli nimien alkamista numeroista. Tämä tarkoittaa sitä, että merkkijonon interpoloinnin avulla on hyvä luoda resurssien nimiä, kuten edellisessä esimerkissä.
SKU:iden valitseminen resursseille
Muut tiimisi jäsenet ovat vaikuttuneita Tähän mennessä rakentamastasi Bicep-koodista. Olet päättänyt yhdessä, että käytät Bicep-tiedostoasi resurssien käyttöönottoon, jotta voit tukea kaikkia uusia lelulanseerauksiasi.
Yksi työtovereistasi on ehdottanut, että luot jokaiselle tuotteen julkaisulle ympäristöjä, jotka eivät ole tuotantoympäristöjä. Niiden avulla markkinointitiimi voi testata sivustoja, ennen kuin ne ovat asiakkaiden saatavilla. Haluat kuitenkin varmistaa, ettet käytä liikaa rahaa ympäristöihin, jotka eivät ole tuotantoympäristöjä, joten päätät joitain käytäntöjä yhdessä:
- Tuotantoympäristöissä tallennustilit otetaan käyttöön
Standard_GRS(maantieteellisesti vikasietoinen tallennus) -SKU:ssa vikasietoisuuden vuoksi. Sovelluspalvelusuunnitelmat otetaan käyttöönP2v3SKU:ssa suorituskyvyn parantamiseksi. - Muissa kuin tuotantoympäristöissä tallennustilit otetaan käyttöön
Standard_LRS(paikallisesti vikasietoisessa tallennustilassa) SKU:ssa. Sovelluspalvelusopimukset otetaan käyttöön maksuttomassaF1SKU:ssa.
Yksi tapa toteuttaa nämä liiketoimintavaatimukset on käyttää parametreja kunkin SKU:n määrittämiseen. Jokaisen SKU:n määrittäminen parametrina voi kuitenkin olla hankalaa, etenkin jos sinulla on suurempia Bicep-tiedostoja. Toinen vaihtoehto on upottaa liiketoimintasäännöt tiedostoon käyttämällä parametrien, muuttujien ja lausekkeiden yhdistelmää.
Ensin voit määrittää parametrin, joka ilmaisee, onko käyttöönotto tarkoitettu tuotantoympäristöön vai muuhun kuin tuotantoon:
@allowed([
'nonprod'
'prod'
])
param environmentType string
Huomaa, että tässä koodissa käytetään jotain uutta syntaksia määrittämään -parametrille environmentType arvojen luettelo. Bicep ei anna kenenkään ottaa Bicep-tiedostoa käyttöön, elleivät he anna jotain näistä arvoista.
Seuraavaksi voit luoda muuttujia, jotka määrittävät tallennustilille käytettävät SKU:t ja sovelluspalvelusopimus ympäristön perusteella:
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2V3' : 'F1'
Huomaa myös tässä uusi syntaksi. Eriteltynä tämä:
-
(environmentType == 'prod')antaa tulokseksi totuusarvon (tosi tai epätosi) sen mukaan, mitä sallittua arvoaenvironmentTypeparametrissa käytetään. -
?kutsutaan -operaattoriksi, ja se arvioiif/then-lausekkeen. arvoa?-operaattorin jälkeen käytetään, jos lauseke on tosi. Jos lauseke antaa tulokseksi epätosi, käytetään kaksoispisteen (:) jälkeinen arvo.
Voimme kääntää nämä säännöt seuraavasti:
- Jos
storageAccountSkuName-muuttujanenvironmentType-parametrin arvoksi on määritettyprod, käytäStandard_GRS-SKU:a. Muussa tapauksessa käytä SKUStandard_LRSkäyttöoikeutta. - Jos
appServicePlanSkuName-muuttujanenvironmentType-parametrin arvoksi on määritettyprod, käytäP2V3-SKU:a jaPremiumV3-tasoa. Muussa tapauksessa käytä SKUF1käyttöoikeutta.
Juomaraha
Kun luot tällaisia moniosaisia lausekkeita, muuttujia kannattaa käyttää sen sijaan, että upotat lausekkeet suoraan resurssiominaisuuksiin. Tämä helpottaa Bicep-tiedostojen lukemista ja ymmärtämistä, koska se välttää resurssimääritysten täyttämisen logiikalla.
Kun käytät parametreja, muuttujia ja lausekkeita Bicep-tiedostossa, voit käyttää tiedostoa uudelleen ja ottaa nopeasti käyttöön uuden resurssijoukon. Esimerkiksi aina, kun markkinointiosastosi pyytää sinua ottamaan käyttöön uuden sivuston seuraavaa toy-käynnistystä varten, annat uudet parametriarvot kullekin käyttöönotettavalle ympäristölle, jolloin sinut määritetään!