ARM-mallien kirjoittaminen
Rakentakaa parametroitava ARM-malli JSON-muodossa tallennustilin ja näennäiskoneen käyttöönottoa varten ja käyttäkää mallifunktioita ja muuttujia mallien uudelleenkäytettävyyden parantamiseen.
ARM-mallien kirjoittaminen on ilmainen Azure Fundamentals-oppitunti CoddyKitissä. Tämä on oppitunti 2/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 Azure Fundamentals-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Azure Fundamentals-kurssilla on yhteensä 4 oppituntia.
Miksi ARM-mallipohjia käytetään
ARM-mallipohjien avulla voitte määrittää Azure-infrastruktuurin JSON-muodossa koodina. Tämä mahdollistaa toistettavat ja yhdenmukaiset käyttöönotot, joita voidaan hallita versionhallinnassa sovelluskoodin rinnalla. Mallipohjat ovat idempotentteja: saman mallipohjan suorittaminen useita kertoja tuottaa saman tuloksen, joten niiden käyttöönotto uudelleen muutosten jälkeen on turvallista.
Mallipohjan runko ja skeema
Jokainen ARM-mallipohja alkaa $schema-ominaisuudella, joka osoittaa mallipohjan skeeman URL-osoitteeseen, ja sitä seuraavalla contentVersion-merkkijonolla. Skeema kertoo Azure-portaalille ja editorilaajennuksille, miten mallipohja vahvistetaan ja miten sille tarjotaan IntelliSense-täydennyksiä. Seuraavat viisi pääosiota ovat parameters, variables, functions, resources ja outputs.
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#',
'contentVersion': '1.0.0.0',
'parameters': {},
'variables': {},
'functions': [],
'resources': [],
'outputs': {}
}Parametrien määrittäminen
Parametrit tekevät mallipohjista uudelleenkäytettäviä hyväksymällä syötteitä käyttöönoton aikana. Jokaisella parametrilla on type (string, int, bool, object, array tai secureString), valinnainen defaultValue ja valinnaiset allowedValues-arvot tarkistusta varten. Kun käytätte salasanoille tyyppiä secureString, arvoa ei koskaan kirjata käyttöönott historiaan.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24,
"metadata": { "description": "Globally unique storage account name" }
},
"sku": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": ["Standard_LRS", "Standard_GRS", "Premium_LRS"]
}
}Muuttujien käyttäminen laskettuihin arvoihin
Muuttujat tallentavat parametreista tai mallipohjan funktioista laskettuja arvoja, mikä vähentää toistoa ja helpottaa mallipohjien ylläpitoa. Muuttujat arvioidaan kerran, ja niihin viitataan koko resources-osiossa käyttämällä [variables('name')]-lauseketta. Yleinen käyttötapa on muodostaa resurssin nimi yhdistämällä parametri ja yksilöllinen loppuosa.
"variables": {
"uniqueStorageName": "[concat(parameters('storageAccountName'), uniqueString(resourceGroup().id))]",
"location": "[resourceGroup().location]"
}Resurssien määrittäminen
resources-taulukko on ARM-mallipohjan keskeinen osa. Jokainen alkio kuvaa yhtä Azure-resurssia, jolla on pakolliset kentät: type, apiVersion, name ja location. apiVersion määrittää resurssipalveluntarjoajan skeemaversion. Käyttäkää aina uusinta vakaata versiota, jotta saatte käyttöön uusimmat ominaisuudet ja vältätte käytöstä poistettuja ominaisuuksia.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-01-01",
"name": "[variables('uniqueStorageName')]",
"location": "[variables('location')]",
"sku": { "name": "[parameters('sku')]" },
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true,
"minimumTlsVersion": "TLS1_2"
}
}
]Mallipohjan funktiot ja lausekkeet
ARM-mallipohjien lausekkeet ympäröidään hakasulkeilla [...], ja niissä voidaan käyttää merkkijonoihin, taulukoihin, objekteihin ja resurssitunnuksiin tarkoitettuja sisäänrakennettuja funktioita. Yleisiä funktioita ovat concat(), resourceGroup(), resourceId(), uniqueString() ja parameters(). ARM arvioi nämä funktiot palvelimella käyttöönoton aikana, ei paikallisesti.
// Reference a resource ID inside a template
"subnetId": "[resourceId('Microsoft.Network/virtualNetworks/subnets', 'myVNet', 'mySubnet')]"
// Build a unique, deterministic name
"name": "[concat('storage', uniqueString(resourceGroup().id))]"
// Conditionally include a resource
"condition": "[equals(parameters('deployStorage'), true)]"Outputs: arvojen palauttaminen
outputs-osiossa määritetään arvot, jotka ARM palauttaa onnistuneen käyttöönoton jälkeen. Output-arvot ovat olennaisia mallipohjien ketjuttamisessa: otatte verkkopohjan käyttöön ja palautatte aliverkon resurssitunnuksen, minkä jälkeen välitätte sen parametrina virtuaalikoneen mallipohjalle. Output-arvot voivat viitata mihin tahansa lausekkeeseen, myös käyttöönoton resurssien ominaisuuksiin.
"outputs": {
"storageAccountName": {
"type": "string",
"value": "[variables('uniqueStorageName')]"
},
"blobEndpoint": {
"type": "string",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints.blob]"
}
}Linkitetyt ja sisäkkäiset mallipohjat
Monimutkaisia arkkitehtuureja varten ARM tukee linkitettyjä mallipohjia (viittaus ulkoisten mallipohjien URL-osoitteisiin) ja sisäkkäisiä mallipohjia (mallipohjan upottaminen resources-taulukkoon käyttämällä tyyppiä Microsoft.Resources/deployments). Näin suuren infrastruktuurin käyttöönoton voi jakaa modulaarisiin, uudelleenkäytettäviin osiin ja säilyttää samalla yhden orkestrointimallipohjan lähtöpisteenä.
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "networkDeploy",
"properties": {
"mode": "Incremental",
"templateLink": {
"uri": "https://raw.githubusercontent.com/contoso/templates/main/network.json",
"contentVersion": "1.0.0.0"
},
"parameters": {
"vnetName": { "value": "[parameters('vnetName')]" }
}
}
}Parametritiedostot
Sen sijaan että välittäisitte parametrit komentorivillä, tallentakaa ne erilliseen parametritiedostoon – JSON-tiedostoon, jonka parameters-objekti sisältää nimi–arvo-parit. Parametritiedostot voivat olla ympäristökohtaisia (esimerkiksi dev.parameters.json ja prod.parameters.json), ja ne voidaan tallentaa lähdekoodin hallintaan. Arkaluonteiset arvot kannattaa tällöin säilyttää Azure Key Vault -viittauksina selväkielisen tekstin sijaan.
// dev.parameters.json
{
'$schema': 'https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#',
'contentVersion': '1.0.0.0',
'parameters': {
'storageAccountName': { 'value': 'devstorageacct' },
'sku': { 'value': 'Standard_LRS' }
}
}
// Deploy with parameters file
// az deployment group create -g MyRG -f azuredeploy.json -p dev.parameters.jsonMallipohjien käyttöönotto ja vahvistaminen
Ottakaa mallipohja käyttöön resurssiryhmässä Azure CLI -komennolla az deployment group create. Suorittakaa ennen tuotantoon käyttöönottoa az deployment group validate skeema- ja logiikkavirheiden havaitsemiseksi sekä az deployment group what-if resurssimuutosten esikatselemiseksi. Nämä kolme komentoa muodostavat turvallisen käyttöönottoputken: vahvista, esikatsele, ota käyttöön.
# Step 1: Validate the template syntax
az deployment group validate \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 2: Preview changes
az deployment group what-if \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.json
# Step 3: Deploy
az deployment group create \
--resource-group MyRG \
--template-file azuredeploy.json \
--parameters @dev.parameters.jsonARM-mallipohjien parhaat käytännöt
Noudattakaa ARM-mallipohjissa seuraavia parhaita käytäntöjä: käyttäkää parametreja ympäristökohtaisille arvoille, käyttäkää muuttujia toiston välttämiseksi, kiinnittäkää API-versiot vakaisiin versioihin, käyttäkää secureString-tyyppiä salasanoille, lisätkää parametreihin metatietokuvaukset ja jakakaa suuret mallipohjat linkitetyiksi moduuleiksi. Tallentakaa mallipohjat Git-varastoon ja ottakaa ne käyttöön CI/CD-putken kautta jäljitettävyyden varmistamiseksi.
Pikatarkistus
Testatkaa tämän oppitunnin Microsoft Azure Fundamentals (AZ-900) -käsitteiden ymmärtämistänne.
Oppitunnin yhteenveto
Tässä oppitunnissa opitte, että ARM-mallipohjat ovat JSON-dokumentteja, joilla Azure-infrastruktuuri määritetään deklaratiivisesti, parametrit ja muuttujat tekevät mallipohjista uudelleenkäytettäviä ja ylläpidettäviä ja validate-, what-if- ja deploy-työnkulku mahdollistaa turvalliset ja toistettavat käyttöönotot. Seuraavaksi tutustumme Bicepiin, joka on moderni abstraktiotaso ARM JSON:n päällä.
Opi Azure Fundamentals 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
- 30
- Oppitunnit
- 120
Usein kysytyt kysymykset
Onko oppitunti ”ARM-mallien kirjoittaminen” ilmainen?
Kyllä – oppitunnin ”ARM-mallien kirjoittaminen” 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 Azure Fundamentals-kurssin, päivitä CoddyKit PROhon. Azure Fundamentals-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”ARM-mallien kirjoittaminen”?
Rakentakaa parametroitava ARM-malli JSON-muodossa tallennustilin ja näennäiskoneen käyttöönottoa varten ja käyttäkää mallifunktioita ja muuttujia mallien uudelleenkäytettävyyden parantamiseen. Harjoittelet Azure Fundamentals-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Azure Fundamentals-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Azure Fundamentals-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”ARM-mallien kirjoittaminen”-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ä Azure Fundamentals-oppitunnilla?
Kyllä. Jokainen Azure Fundamentals-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