Gyakorlat – Erőforrások feltételes üzembe helyezése

Befejeződött

Feljegyzés

Amikor első alkalommal aktivál egy tesztkörnyezetet, és elfogadja a feltételeket, a Microsoft-fiókja egy új, Microsoft Learn Sandbox nevű Azure-címtárhoz lesz társítva. Emellett hozzá lesz adva egy Concierge-előfizetés nevű speciális előfizetéshez is.

A toy cég erőforrásait számos környezetben kell üzembe helyeznie, és paraméterekkel és feltételekkel szeretné szabályozni, hogy mi legyen üzembe helyezve az egyes környezetekben.

Ebben a gyakorlatban létre fog hozni egy Azure SQL logikai kiszolgálót és egy adatbázist. Ezután hozzáadja a naplózási beállításokat, hogy a naplózás engedélyezve legyen, de azt csak éles környezetben való üzembe helyezéskor szeretné engedélyezni. Naplózási célból rendelkeznie kell egy tárfiókot, amelyet csak akkor fog üzembe helyezni, ha erőforrásokat helyez üzembe egy éles környezetben.

A folyamat során a következőt fogja elvégezni:

  • Hozzon létre egy Bicep-fájlt, amely egy adatbázissal rendelkező logikai kiszolgálót határoz meg.
  • Adjon hozzá egy tárfiókot és egy SQL-naplózási beállítást, amelyek mindegyike egy feltétellel van üzembe helyezve.
  • Állítson be egy infrastruktúrát a fejlesztési környezethez, majd ellenőrizze az eredményt.
  • Helyezze üzembe újra az infrastruktúrát az éles környezetben, majd tekintse meg a változásokat.

Ez a gyakorlat a Visual Studio Code Bicep-bővítményét használja. Telepítse ezt a bővítményt a Visual Studio Code-ban.

Bicep-sablon létrehozása logikai kiszolgálóval és adatbázissal

  1. Nyissa meg a Visual Studio Code-ot.

  2. Hozzon létre egy main.bicep nevű új fájlt.

  3. Mentse az üres fájlt, hogy a Visual Studio Code betöltse a Bicep-eszközt.

    Választhatja a Fájlmentés>másként lehetőséget, vagy a Ctrl+S billentyűkombinációt a Windowsban (⌘+S macOS rendszeren). Ne feledje, hogy hová mentette a fájlt. Létrehozhat például egy sablonmappát, amelybe mentheti.

  4. Logikai kiszolgáló és adatbázis definiálásához adja hozzá a következő tartalmat a fájlhoz, valamint az erőforrásokhoz szükséges paramétereket és változókat. Írja be a tartalmat saját maga másolás és beillesztés helyett, így láthatja, hogy az eszköz hogyan segíti a Bicep-fájlok írását.

    @description('The Azure region into which the resources should be deployed.')
    param location string
    
    @secure()
    @description('The administrator login username for the SQL server.')
    param sqlServerAdministratorLogin string
    
    @secure()
    @description('The administrator login password for the SQL server.')
    param sqlServerAdministratorLoginPassword string
    
    @description('The name and tier of the SQL database SKU.')
    param sqlDatabaseSku object = {
      name: 'Standard'
      tier: 'Standard'
    }
    
    var sqlServerName = 'teddy${location}${uniqueString(resourceGroup().id)}'
    var sqlDatabaseName = 'TeddyBear'
    
    resource sqlServer 'Microsoft.Sql/servers@2021-11-01-preview' = {
      name: sqlServerName
      location: location
      properties: {
        administratorLogin: sqlServerAdministratorLogin
        administratorLoginPassword: sqlServerAdministratorLoginPassword
      }
    }
    
    resource sqlDatabase 'Microsoft.Sql/servers/databases@2021-11-01-preview' = {
      parent: sqlServer
      name: sqlDatabaseName
      location: location
      sku: sqlDatabaseSku
    }
    

    Figyelje meg, hogy az összes paraméter tartalmaz @description dekorátorokat, amelyek megkönnyítik a munkát. Azt is figyelje meg, hogy a sqlServerAdministratorLogin dekoratőr és sqlServerAdministratorLoginPassword a @secure paraméterek alkalmazva vannak rájuk. Ez azt jelzi a Bicep-nek, hogy ezek a paraméterértékek érzékenyek. Az Azure nem nyomtat bizalmas értékeket a naplókba.

Tárfiók hozzáadása

A logikai kiszolgálók naplózási beállításai között meg kell adnia egy tárfiókot a naplózási adatok tárolásához. A Bicep-fájlt úgy fogja frissíteni, hogy létrehozza ezt a tárfiókot, de csak akkor, ha a naplózás engedélyezve lesz.

  1. A paraméterdeklarációk alatt adja hozzá a következő paramétereket:

    @description('The name of the environment. This must be Development or Production.')
    @allowed([
      'Development'
      'Production'
    ])
    param environmentName string = 'Development'
    
    @description('The name of the audit storage account SKU.')
    param auditStorageAccountSkuName string = 'Standard_LRS'
    
  2. A változódeklarációk alatt adja hozzá a következő változókat:

    var auditingEnabled = environmentName == 'Production'
    var auditStorageAccountName = take('bearaudit${location}${uniqueString(resourceGroup().id)}', 24)
    

    Figyelje meg, hogy létrehoz egy úgynevezett auditingEnabledváltozót, amelyet a naplózási erőforrások üzembe helyezésének feltételeként fog használni. Ha ilyen változót hoz létre, a Bicep-kód egyértelműbbé és könnyebben olvashatóvá válik. Bárki, aki megvizsgálja az erőforrások feltételeit, megérti, hogy mi történik.

    Azt is figyelje meg, hogy a auditStorageAccountName változó egy úgynevezett take()függvényt használ. A tárfiókok neve legfeljebb 24 karakter hosszúságú lehet, ezért ez a függvény levágja a sztring végét, hogy a név érvényes legyen.

  3. A fájl alján, az erőforrások alatt adja hozzá a tárfiók következő erőforrásdefinícióját:

    resource auditStorageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = if (auditingEnabled) {
      name: auditStorageAccountName
      location: location
      sku: {
        name: auditStorageAccountSkuName
      }
      kind: 'StorageV2'  
    }
    

    Figyelje meg, hogy a tárfiók definíciói tartalmazzák a if kulcsszót, amely egy üzembe helyezési feltételt határoz meg.

Naplózási beállítások hozzáadása

  1. Az imént hozzáadott tárfiók-erőforrás alatt adja hozzá a következőket:

    resource sqlServerAudit 'Microsoft.Sql/servers/auditingSettings@2021-11-01-preview' = if (auditingEnabled) {
      parent: sqlServer
      name: 'default'
      properties: {
        state: 'Enabled'
        storageEndpoint: environmentName == 'Production' ? auditStorageAccount.properties.primaryEndpoints.blob : ''
        storageAccountAccessKey: environmentName == 'Production' ? listKeys(auditStorageAccount.id, auditStorageAccount.apiVersion).keys[0].value : ''
      }
    }
    

    Figyelje meg, hogy a definíció ugyanazt if a feltételt tartalmazza, mint a tárfiók. Emellett a storageEndpoint tulajdonságok a storageAccountAccessKey kérdőjel (?) ternáris operátor használatával biztosítják, hogy az értékek mindig érvényesek legyenek. Ha ezt nem teszi meg, az Azure Resource Manager kiértékeli a kifejezési értékeket, mielőtt kiértékeli az erőforrás üzembe helyezésének feltételét, és hibát ad vissza, mert a tárfiók nem található.

  2. Mentse a fájl módosításait.

A Bicep-fájl ellenőrzése

Miután elvégezte az összes fenti módosítást, a Bicep-fájlnak az alábbi példához hasonlóan kell kinéznie:

@description('The Azure region into which the resources should be deployed.')
param location string

@secure()
@description('The administrator login username for the SQL server.')
param sqlServerAdministratorLogin string

@secure()
@description('The administrator login password for the SQL server.')
param sqlServerAdministratorLoginPassword string

@description('The name and tier of the SQL database SKU.')
param sqlDatabaseSku object = {
  name: 'Standard'
  tier: 'Standard'
}

@description('The name of the environment. This must be Development or Production.')
@allowed([
  'Development'
  'Production'
])
param environmentName string = 'Development'

@description('The name of the audit storage account SKU.')
param auditStorageAccountSkuName string = 'Standard_LRS'

var sqlServerName = 'teddy${location}${uniqueString(resourceGroup().id)}'
var sqlDatabaseName = 'TeddyBear'
var auditingEnabled = environmentName == 'Production'
var auditStorageAccountName = take('bearaudit${location}${uniqueString(resourceGroup().id)}', 24)

resource sqlServer 'Microsoft.Sql/servers@2021-11-01-preview' = {
  name: sqlServerName
  location: location
  properties: {
    administratorLogin: sqlServerAdministratorLogin
    administratorLoginPassword: sqlServerAdministratorLoginPassword
  }
}

resource sqlDatabase 'Microsoft.Sql/servers/databases@2021-11-01-preview' = {
  parent: sqlServer
  name: sqlDatabaseName
  location: location
  sku: sqlDatabaseSku
}

resource auditStorageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = if (auditingEnabled) {
  name: auditStorageAccountName
  location: location
  sku: {
    name: auditStorageAccountSkuName
  }
  kind: 'StorageV2'  
}

resource sqlServerAudit 'Microsoft.Sql/servers/auditingSettings@2021-11-01-preview' = if (auditingEnabled) {
  parent: sqlServer
  name: 'default'
  properties: {
    state: 'Enabled'
    storageEndpoint: environmentName == 'Production' ? auditStorageAccount.properties.primaryEndpoints.blob : ''
    storageAccountAccessKey: environmentName == 'Production' ? listKeys(auditStorageAccount.id, auditStorageAccount.apiVersion).keys[0].value : ''
  }
}

Ha nem, másolja ki a példát, vagy módosítsa a sablont a példának megfelelően.

A Bicep-sablon üzembe helyezése az Azure-ban

Ha a sablont az Azure-ban szeretné üzembe helyezni, be kell jelentkeznie az Azure-fiókjába a Visual Studio Code termináljában. Győződjön meg arról, hogy telepítette az Azure CLI-t, és ne felejtsen el ugyanazzal a fiókkal bejelentkezni, mint a tesztkörnyezet aktiválásához.

  1. Válassza a Terminál menü Új terminál pontját. A terminálablak általában a képernyő alsó felében nyílik meg.

  2. Ha a terminálablak jobb oldalán látható rendszerhéj bash, a megfelelő rendszerhéj nyitva van, és a következő szakaszra ugorhat.

    Screenshot of the Visual Studio Code terminal window, with the bash option shown.

  3. Ha nem bash-rendszerhéjjelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza a Git Bash lehetőséget.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Git Bash Default selected.

  4. A terminálhéjak listájában válassza a bash lehetőséget.

    Screenshot of the Visual Studio Code terminal window, with the bash terminal selected.

  5. A terminálban lépjen arra a könyvtárra, ahová a sablont mentette. Ha például a sablont a sablonok mappájába mentette, használhatja ezt a parancsot:

    cd templates
    

A Bicep telepítése

Futtassa a következő parancsot a Bicep legújabb verziójának biztosításához:

az bicep install && az bicep upgrade

Bejelentkezés az Azure-ba

  1. A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:

    az login
    
  2. A megnyíló böngészőben jelentkezzen be az Azure-fiókjába.

    A Visual Studio Code terminál megjeleníti a fiókhoz társított előfizetések listáját.

  3. Állítsa be az alapértelmezett előfizetést az ebben a munkamenetben futtatott összes Azure CLI-parancshoz.

    az account set --subscription "Concierge Subscription"
    

    Feljegyzés

    Ha a közelmúltban több tesztkörnyezetet is használt, előfordulhat, hogy a terminál több Concierge-előfizetés-példányt is megjelenít. Ebben az esetben a következő két lépéssel állítsa be az egyiket alapértelmezett előfizetésként. Ha az előző parancs sikeres volt, és csak egy Concierge-előfizetés szerepel a listában, hagyja ki a következő két lépést.

  4. Kérje le a Concierge-előfizetések azonosítóit.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. Az előfizetés azonosítójának segítségével állítsa be az alapértelmezett előfizetést. Cserélje a {your subscription ID} értékét a legutóbbi Concierge-előfizetés azonosítójára.

    az account set --subscription {your subscription ID}
    

Az alapértelmezett erőforráscsoport beállítása

Az Azure CLI használatakor beállíthatja az alapértelmezett erőforráscsoportot, és kihagyhatja a paramétert a gyakorlat többi Azure CLI-parancsából. Állítsa be az alapértelmezett értéket a tesztkörnyezetben létrehozott erőforráscsoportra.

az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"

A sablon üzembe helyezése az Azure-ban az Azure CLI használatával

A Visual Studio Code terminálon helyezze üzembe a Bicep-sablont az Azure-ban az alábbi kód futtatásával. Figyelje meg, hogy a paramétert westus3kifejezetten erre állítja location be.

az deployment group create --template-file main.bicep --parameters location=westus3

A sablon Azure-ban való üzembe helyezéséhez jelentkezzen be az Azure-fiókjába a Visual Studio Code terminálból. Győződjön meg arról, hogy telepítette az Azure PowerShellt, és jelentkezzen be ugyanarra a fiókra, amely aktiválta a tesztkörnyezetet.

  1. Válassza a Terminál menü Új terminál pontját. A terminálablak általában a képernyő alsó felében nyílik meg.

  2. Ha a terminálablak jobb oldalán látható rendszerhéj PowerShell vagy pwsh, a megfelelő rendszerhéj nyitva van, és a következő szakaszra ugorhat.

    Screenshot of the Visual Studio Code terminal window, with the pwsh option displayed in the shell dropdown list.

  3. Ha nem PowerShell vagy pwsh rendszerhéj jelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza a PowerShellt.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown list shown and PowerShell selected.

  4. A terminálhéjak listájában válassza a PowerShellt vagy a pwsh-t.

    Screenshot of the Visual Studio Code terminal window, with the PowerShell terminal selected.

  5. A terminálban lépjen arra a könyvtárra, ahová a sablont mentette. Ha például a sablont a sablonok mappájába mentette, használhatja ezt a parancsot:

    Set-Location -Path templates
    

A Bicep parancssori felület telepítése

A Bicep Azure PowerShellből való használatához telepítse a Bicep CLI-t.

Bejelentkezés az Azure-ba az Azure PowerShell használatával

  1. A Visual Studio Code terminálon futtassa a következő parancsot:

    Connect-AzAccount
    

    Megnyílik egy böngésző, amellyel bejelentkezhet az Azure-fiókjába.

  2. Miután bejelentkezett az Azure-ba, a terminál megjeleníti a fiókhoz társított előfizetések listáját.

    Ha aktiválta a tesztkörnyezetet, megjelenik egy Concierge-előfizetés nevű előfizetés. Használja a gyakorlat hátralévő részében.

  3. Állítsa be az alapértelmezett előfizetést az ebben a munkamenetben futtatott összes Azure PowerShell-parancshoz.

    $context = Get-AzSubscription -SubscriptionName 'Concierge Subscription'
    Set-AzContext $context
    

    Feljegyzés

    Ha a közelmúltban több tesztkörnyezetet is használt, előfordulhat, hogy a terminál több Concierge-előfizetés-példányt is megjelenít. Ebben az esetben a következő két lépéssel állítsa be az egyiket alapértelmezett előfizetésként. Ha az előző parancs sikeres volt, és csak egy Concierge-előfizetés szerepel a listában, hagyja ki a következő két lépést.

  4. Kérje le az előfizetés azonosítóját. Az alábbi parancs futtatásával listázhatja az előfizetéseit és azonosítóit. Keresse meg Concierge Subscription, majd másolja ki az azonosítót a második oszlopból. Úgy néz ki, mint cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  5. Módosítsa az aktív előfizetését Concierge-előfizetésre. Mindenképpen cserélje le {Az előfizetés azonosítója} elemet a másoltra.

    $context = Get-AzSubscription -SubscriptionId {Your subscription ID}
    Set-AzContext $context
    

Az alapértelmezett erőforráscsoport beállítása

Beállíthatja az alapértelmezett erőforráscsoportot, és kihagyhatja a paramétert a gyakorlat többi Azure PowerShell-parancsából. Állítsa be ezt az alapértelmezett beállítást a tesztkörnyezetben önnek létrehozott erőforráscsoportra.

Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>

A sablon üzembe helyezése az Azure-ban az Azure PowerShell használatával

A Visual Studio Code terminálon helyezze üzembe a sablont az Azure-ban az alábbi Azure PowerShell-parancs futtatásával. Ez a folyamat eltarthat néhány percig, majd sikeres üzembe helyezéssel fog rendelkezni.

New-AzResourceGroupDeployment -TemplateFile main.bicep -location westus3

Az üzembe helyezés végrehajtásakor a rendszer kéri, hogy adja meg az értékek és sqlServerAdministratorLoginPassword paraméterek értékétsqlServerAdministratorLogin.

Tipp.

A biztonságos paraméterek megadásakor a választott értékeknek bizonyos szabályokat kell követnie:

  • sqlServerAdministratorLogin nem lehet könnyen kitalálható bejelentkezési név, például admin vagy root. Csak alfanumerikus karaktereket tartalmazhat, és betűvel kell kezdődnie.
  • sqlServerAdministratorLoginPassword Legalább nyolc karakter hosszúnak kell lennie, és kisbetűket, nagybetűket, számokat és szimbólumokat kell tartalmaznia. A jelszó összetettségéről további információt az SQL Azure jelszószabályzatában talál.

Ha a paraméterértékek nem felelnek meg a követelményeknek, az Azure SQL nem fogja üzembe helyezni a logikai kiszolgálót.

Ügyeljen arra is, hogy jegyezze fel a megadott bejelentkezést és jelszót. Hamarosan újra használni fogja őket.

Mivel nem adott meg értéket a environmentName paraméterhez, a rendszer az alapértelmezett értéket Development használja.

Várjon, amíg az üzembe helyezés befejeződik. Ha az üzembe helyezés meghiúsul egy üzenettel, amely szerint egy hely nem fogadja el az új Windows Azure SQL Database-kiszolgálók létrehozását, válasszon egy másik régiót, például eastus vagy eastus2.

Az üzemelő példány ellenőrzése

Az Azure Portal használatával vizsgálja meg az üzembe helyezett erőforrásokat, és vizsgálja meg az egyes üzemelő példányok eredményeit.

  1. Nyissa meg az Azure Portalt, és győződjön meg arról, hogy a tesztkörnyezet-előfizetésben van az alábbi módon:

    a. Válassza ki az avatart a jobb felső sarokban.
    b. Válassza a Címtár váltása lehetőséget. A listában válassza a Microsoft Learn-tesztkörnyezet címtárat.

  2. A bal oldali panelen válassza az Erőforráscsoportok lehetőséget.

  3. Válassza a [tesztkörnyezeti erőforráscsoport neve] nevű erőforráscsoportot.

  4. Az Áttekintés szakaszban láthatja, hogy egy üzembe helyezés sikeres volt. Azt is láthatja, hogy egy logikai kiszolgáló és egy SQL-adatbázis van üzembe helyezve, de a naplózáshoz használt tárfiók nincs üzembe helyezve.

    Feljegyzés

    A névvel kezdődő cloudshell tárfiók nem kapcsolódik az üzemelő példányhoz, és a Learn tesztkörnyezet hozta létre.

    Screenshot of the Azure portal resource group overview pane, with a section displaying a successful deployment.

  5. Az Üzemelő példányok mellett válassza az 1 Sikeres elemet az üzembe helyezés részleteinek megtekintéséhez.

    Screenshot of the Azure portal resource group overview pane, displaying additional details of the successful deployment.

  6. Válassza ki a főként hívott üzembe helyezést, hogy lássa, mely erőforrások lettek üzembe helyezve, majd válassza az Üzembe helyezés részleteit a kibontásához.

    Ebben az esetben egy logikai kiszolgáló és egy SQL-adatbázis lesz üzembe helyezve. Figyelje meg, hogy a tárfiók és a naplózási beállítások nem szerepelnek az erőforrások listáján.

    Screenshot of the Azure portal resource group overview pane for the specific deployment, with a logical server and database resource listed.

  7. Hagyja nyitva a lapot a böngészőben. Később még ellenőriznie kell az üzembe helyezéseket.

Az éles környezet ismételt üzembe helyezése

Az előző üzembe helyezés során a paraméter alapértelmezett értéke environmentName lett használva, ami azt jelentette, hogy a paraméter értéke Development.

Most explicit módon beállítja a paraméter értékét a következőre Production: . A módosítás elvégzésével a naplózási célú tárfiók üzembe lesz helyezve, és a naplózás engedélyezve lesz a logikai kiszolgálón.

A sablon üzembe helyezése az éles környezethez

A Visual Studio Code terminálon telepítse a Bicep-sablont az Azure-ban az alábbi kód futtatásával:

az deployment group create --template-file main.bicep --parameters environmentName=Production location=westus3

A Visual Studio Code terminálon telepítse a sablont az Azure-ban az alábbi Azure PowerShell-parancs futtatásával:

New-AzResourceGroupDeployment -TemplateFile main.bicep -environmentName Production -location westus3

Figyelem

Ügyeljen arra, hogy ugyanazt a bejelentkezési és jelszót használja, amelyet korábban használt, vagy az üzembe helyezés nem fejeződik be sikeresen.

Egy-két perc elteltével az üzembe helyezésnek sikeresen le kell fejeződnie.

Az újbóli üzembe helyezés ellenőrzése

A gyakorlat elvégzéséhez ellenőrizze, hogy az ismételt üzembe helyezés sikeresen befejeződött-e, és hogy engedélyezve lett-e a naplózás.

  1. Térjen vissza az Azure Portalra, és lépjen az erőforráscsoportra. Ha már meg van nyitva az erőforráscsoport, válassza a Frissítés lehetőséget.

    Látnia kell, hogy egy további tárfiók lett üzembe helyezve naplózási célokra.

    Screenshot of the Azure portal resource group overview pane, showing that a storage account is deployed for auditing.

  2. Válassza ki a logikai kiszolgálót (keresse meg az SQL Server típusú erőforrást).

  3. A keresőmezőbe írja be a Naplózás kifejezést. A Biztonság területen válassza a Naplózás lehetőséget.

    Screenshot of the Azure portal interface for the logical server, showing the search field with Auditing entered.

  4. Ellenőrizze, hogy a naplózás engedélyezve van-e ehhez a logikai kiszolgálóhoz.

    Screenshot of the Azure portal interface for the logical server, showing that the auditing configuration is enabled.