Azure Fundamentals · Oppitunti

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.

Oppitunti 2/413 vaihetta

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.json

Mallipohjien 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.json

ARM-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ä.

Aloita maksutta

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

  1. Miten Azure Resource Manager toimii
  2. ARM-mallien kirjoittaminen
  3. Bicep: moderni Azure IaC
  4. Terraform Azuressa
← Takaisin: Azure Fundamentals