Gyakorlat – Üzembehelyezési szkript hozzáadása ARM-sablonhoz

Befejeződött

Fontos

Ennek a gyakorlatnak az elvégzéséhez saját Azure-előfizetés szükséges, amely költségekkel járhat. Ha még nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes fiókot.

A csapat alkalmazás-üzembe helyezési folyamatának részeként létre kell hoznia egy tárfiókot, és meg kell adnia egy fájlt a Blob Storage-ban az alkalmazás olvasásához. Eddig a pontig minden alkalommal manuálisan másolta a fájlt, amikor új környezet lett beállítva. Úgy dönt, hogy egy üzembehelyezési szkripttel automatizálja ezt a lépést a környezet-létrehozási folyamat részeként.

Ebben a gyakorlatban egy meglévő Azure Resource Manager- (ARM-) sablont fog használni, és hozzáad egy új üzembehelyezési szkriptet.

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

  • Hozzon létre egy kezdősablont.
  • Adja hozzá az üzembehelyezési szkriptek előfeltételeit, beleértve a felhasználó által hozzárendelt felügyelt identitást és szerepkör-hozzárendelést.
  • Üzembehelyezési szkript hozzáadása.
  • Telepítse a sablont, és ellenőrizze az eredményt.

Ebben a gyakorlatban az Azure Resource Manager Tools for Visual Studio Code-ot használjuk. Telepítse ezt a bővítményt a Visual Studio Code-ban.

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.

A kezdősablon létrehozása

Kezdje egy meglévő sablonnal, amelyet a csapata használt. A sablon létrehozza a tárfiókot, beállítja a blobszolgáltatásokat, https-t igényel, és létrehozza a blobtárolót a konfigurációs fájlokhoz.

  1. Nyissa meg a Visual Studio Code-ot.

  2. Hozzon létre egy azuredeploy.json nevű új fájlt.

  3. Mentse az üres fájlt, hogy a Visual Studio Code betöltse az ARM-sabloneszkö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. Előfordulhat például, hogy létre szeretne hozni egy szkriptmappát , amelybe menteni szeretné.

  4. Másolja a következő kezdősablont a azuredeploy.json.

    {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.1",
        "apiProfile": "",
        "parameters": {},
        "variables": {
            "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]",
            "storageBlobContainerName": "config"
        },
        "functions": [],
        "resources": [
            {
                "name": "[variables('storageAccountName')]",
                "type": "Microsoft.Storage/storageAccounts",
                "apiVersion": "2023-01-01",
                "tags": {
                    "displayName": "[variables('storageAccountName')]"
                },
                "location": "[resourceGroup().location]",
                "kind": "StorageV2",
                "sku": {
                    "name": "Standard_LRS",
                    "tier": "Standard"
                },
                "properties": {
                    "allowBlobPublicAccess": true,
                    "encryption": {
                        "services": {
                            "blob": {
                                "enabled": true
                            }
                        },
                        "keySource": "Microsoft.Storage"
                    },
                    "supportsHttpsTrafficOnly": true
                }
            },
            {
                "type": "Microsoft.Storage/storageAccounts/blobServices",
                "apiVersion": "2019-04-01",
                "name": "[concat(variables('storageAccountName'), '/default')]",
                "dependsOn": [
                    "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
                ]
            },
            {
                "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
                "apiVersion": "2019-04-01",
                "name": "[concat(variables('storageAccountName'),'/default/',variables('storageBlobContainerName'))]",
                "dependsOn": [
                    "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageAccountName'), 'default')]",
                    "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
                ],
                "properties": {
                    "publicAccess": "Blob"
                }
            }
        ]
    }
    
  5. Mentse a sablont.

  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. Előfordulhat például, hogy létre szeretne hozni egy szkriptmappát , amelybe mentené.

  4. Másolja a következő kezdősablont a main.bicep fájlba.

    var storageAccountName = 'storage${uniqueString(resourceGroup().id)}'
    var storageBlobContainerName = 'config'
    
    resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
      name: storageAccountName
      tags: {
        displayName: storageAccountName
      }
      location: resourceGroup().location
      kind: 'StorageV2'
      sku: {
        name: 'Standard_LRS'
        tier: 'Standard'
      }
      properties: {
        allowBlobPublicAccess: true
        encryption: {
          services: {
            blob: {
              enabled: true
            }
          }
          keySource: 'Microsoft.Storage'
        }
        supportsHttpsTrafficOnly: true
      }
    
      resource blobService 'blobServices' existing = {
        name: 'default'
      }
    }
    
    resource blobContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2019-04-01' = {
      parent: storageAccount::blobService
      name: storageBlobContainerName
      properties: {
        publicAccess: 'Blob'
      }
    }
    
  5. Mentse a sablont.

Felhasználó által hozzárendelt felügyelt identitás hozzáadása

Ezután létre kell hoznia egy felhasználó által hozzárendelt felügyelt identitást. Az infrastruktúra mint kód megközelítés miatt létrehozhatja az identitást a sablonban.

  1. Szerkessze a variables azuredeploy.json szakaszát a következőhöz:

    "userAssignedIdentityName": "configDeployer",
    
  2. Szerkessze a resources azuredeploy.json szakaszát a következőhöz:

    {
        "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
        "apiVersion": "2018-11-30",
        "name": "[variables('userAssignedIdentityName')]",
        "location": "[resourceGroup().location]"
    }
    
  3. Mentse a sablont.

  1. A main.bicep változódefiníciói alatt adja hozzá a következőt:

    var userAssignedIdentityName = 'configDeployer'
    
  2. Az erőforrásdefiníciók alatt adja hozzá a következőt:

    resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = {
      name: userAssignedIdentityName
      location: resourceGroup().location
    }
    
  3. Mentse a sablont.

A felügyelt identitás közreműködői szerepkörének beállítása

Most, hogy definiált egy felügyelt identitást, hozzárendelhet egy szerepkört, amely jogosultságokkal rendelkezik az erőforráscsoporthoz. Hozzá fogja rendelni a közreműködői szerepkört. Egy szerepkört a szerepkördefiníció azonosítója alapján azonosít, amely egy GUID. A közreműködői szerepkör az Azure-ba van beépítve, így a szerepkördefiníció azonosítója dokumentálva van.

A szerepkör-hozzárendeléshez GUID-név is szükséges. A függvény használatával guid létrehozhat egy egyedi GUID-t az erőforráscsoport és a szerepkör neve alapján.

  1. Szerkessze a variables azuredeploy.json szakaszát a következőhöz:

    "roleAssignmentName": "[guid(concat(resourceGroup().id, 'contributor'))]",
    "contributorRoleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
    
  2. Szerkessze a resources azuredeploy.json szakaszát a következőhöz:

    {
        "type": "Microsoft.Authorization/roleAssignments",
        "apiVersion": "2020-04-01-preview",
        "name": "[variables('roleAssignmentName')]",
        "dependsOn": [ "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName'))]" ],
        "properties": {
            "roleDefinitionId": "[variables('contributorRoleDefinitionId')]",
            "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName')), '2015-08-31-preview').principalId]",
            "scope": "[resourceGroup().id]",
            "principalType": "ServicePrincipal"
        }
    }
    
  3. Mentse a sablont.

  1. A main.bicep változódefiníciói alatt adja hozzá a következőt:

    var roleAssignmentName = guid(resourceGroup().id, 'contributor')
    var contributorRoleDefinitionId = resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
    
  2. Az erőforrásdefiníciók alatt adja hozzá a következőt:

    resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
      name: roleAssignmentName
      properties: {
        roleDefinitionId: contributorRoleDefinitionId
        principalId: userAssignedIdentity.properties.principalId
        principalType: 'ServicePrincipal'
      }
    }
    
  3. Mentse a sablont.

Az üzembehelyezési szkript létrehozása

Most már rendelkezik az üzembe helyezési szkript összes előfeltételével. Az üzembehelyezési szkripthez szükséges gyakori értékekkel kell kezdenie. Két függőség létezik, a szerepkör-hozzárendelés és a blobtároló. A szkript futtatásához mindkettőnek léteznie kell.

  1. Szerkessze a variables azuredeploy.json szakaszát a következőhöz:

    "deploymentScriptName": "CopyConfigScript"
    
  2. Szerkessze a resources azuredeploy.json szakaszát a következőhöz:

    {
        "type": "Microsoft.Resources/deploymentScripts",
        "apiVersion": "2020-10-01",
        "name": "[variables('deploymentScriptName')]",
        "location": "[resourceGroup().location]",
        "kind": "AzurePowerShell",
        "dependsOn": [
            "[resourceId('Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]",
            "[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', variables('storageAccountName'), 'default', variables('storageBlobContainerName'))]"
        ],
        "identity": {
            "type": "UserAssigned",
            "userAssignedIdentities": {
                "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('userAssignedIdentityName'))]": {}
            }
        }
    }
    
  3. Adjon hozzá egy szakaszt properties az erőforráshoz a szkript és a többi szükséges érték meghatározásához.

    "properties": {
        "azPowerShellVersion": "3.0",
        "scriptContent": "
            Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/mslearn-arm-deploymentscripts-sample/appsettings.json' -OutFile 'appsettings.json'
            $storageAccount = Get-AzStorageAccount -ResourceGroupName 'learndeploymentscript_exercise_1' | Where-Object { $_.StorageAccountName -like 'storage*' }
            $blob = Set-AzStorageBlobContent -File 'appsettings.json' -Container 'config' -Blob 'appsettings.json' -Context $StorageAccount.Context
            $DeploymentScriptOutputs = @{}
            $DeploymentScriptOutputs['Uri'] = $blob.ICloudBlob.Uri
            $DeploymentScriptOutputs['StorageUri'] = $blob.ICloudBlob.StorageUri
        ",
        "retentionInterval": "P1D"
    }
    
  4. Mentse a sablont.

  1. A main.bicep változódefiníciói alatt adja hozzá a következőt:

    var deploymentScriptName = 'CopyConfigScript'
    
  2. Az erőforrásdefiníciók alatt adja hozzá a következőt:

    resource deploymentScript 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
      name: deploymentScriptName
      location: resourceGroup().location
      kind: 'AzurePowerShell'
      identity: {
        type: 'UserAssigned'
        userAssignedIdentities: {
          '${userAssignedIdentity.id}': {}
        }
      }
      dependsOn: [
        roleAssignment
        blobContainer
      ]
    }
    
  3. Adjon hozzá egy szakaszt properties az erőforráshoz a szkript és a többi szükséges érték meghatározásához.

    properties: {
      azPowerShellVersion: '3.0'
      scriptContent: '''
        Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/mslearn-arm-deploymentscripts-sample/appsettings.json' -OutFile 'appsettings.json'
        $storageAccount = Get-AzStorageAccount -ResourceGroupName 'learndeploymentscript_exercise_1' | Where-Object { $_.StorageAccountName -like 'storage*' }
        $blob = Set-AzStorageBlobContent -File 'appsettings.json' -Container 'config' -Blob 'appsettings.json' -Context $storageAccount.Context
        $DeploymentScriptOutputs = @{}
        $DeploymentScriptOutputs['Uri'] = $blob.ICloudBlob.Uri
        $DeploymentScriptOutputs['StorageUri'] = $blob.ICloudBlob.StorageUri
      '''
      retentionInterval: 'P1D'
    }
    
  4. Mentse a sablont.

Sablonkimenet hozzáadása

Most, hogy már rendelkezik egy üzembehelyezési szkripttel, amely feltölt egy fájlt az Azure Blob Storage-ba, előfordulhat, hogy erre a fájlhelyre kell hivatkoznia a későbbi automatizálás során. (Lehet, hogy egy tesztet fog futtatni annak ellenőrzéséhez, hogy a fájl a megfelelő helyre kerül-e.)

resources Az ARM-sablon szakasza után adjon hozzá egy kimenetet, amely a fájl URI-jára hivatkozik az üzembe helyezési szkript által jelentett módon.

"outputs": {
    "fileUri": {
        "type": "string",
        "value": "[reference(variables('deploymentScriptName')).outputs.Uri]"
    }
}

A fájl alján, az erőforrásdefiníciók után adjon hozzá egy kimenetet, amely a fájl URI-jára hivatkozik az üzembehelyezési szkript által jelentett módon.

output fileUri string = deploymentScript.properties.outputs.Uri

A sablon ellenőrzése

A sablonnak a következőképpen kell kinéznie:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.1",
    "apiProfile": "",
    "parameters": {},
    "variables": {
        "storageAccountName": "[concat('storage', uniqueString(resourceGroup().id))]",
        "storageBlobContainerName": "config",
        "userAssignedIdentityName": "configDeployer",
        "roleAssignmentName": "[guid(concat(resourceGroup().id, 'contributor'))]",
        "contributorRoleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
        "deploymentScriptName": "CopyConfigScript"
    },
    "functions": [],
    "resources": [
        {
            "name": "[variables('storageAccountName')]",
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2023-01-01",
            "tags": {
                "displayName": "[variables('storageAccountName')]"
            },
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
                "name": "Standard_LRS",
                "tier": "Standard"
            },
            "properties": {
                "allowBlobPublicAccess": true,
                "encryption": {
                    "services": {
                        "blob": {
                            "enabled": true
                        }
                    },
                    "keySource": "Microsoft.Storage"
                },
                "supportsHttpsTrafficOnly": true
            }
        },
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices",
            "apiVersion": "2019-04-01",
            "name": "[concat(variables('storageAccountName'), '/default')]",
            "dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
            ]
        },
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
            "apiVersion": "2019-04-01",
            "name": "[concat(variables('storageAccountName'),'/default/',variables('storageBlobContainerName'))]",
            "dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts/blobServices', variables('storageAccountName'), 'default')]",
                "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]"
            ],
            "properties": {
                "publicAccess": "Blob"
            }
        },
        {
            "type": "Microsoft.ManagedIdentity/userAssignedIdentities",
            "apiVersion": "2018-11-30",
            "name": "[variables('userAssignedIdentityName')]",
            "location": "[resourceGroup().location]"
        },
        {
            "type": "Microsoft.Authorization/roleAssignments",
            "apiVersion": "2020-04-01-preview",
            "name": "[variables('roleAssignmentName')]",
            "dependsOn": [ "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName'))]" ],
            "properties": {
                "roleDefinitionId": "[variables('contributorRoleDefinitionId')]",
                "principalId": "[reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('userAssignedIdentityName')), '2015-08-31-preview').principalId]",
                "scope": "[resourceGroup().id]",
                "principalType": "ServicePrincipal"
            }
        },
        {
            "type": "Microsoft.Resources/deploymentScripts",
            "apiVersion": "2020-10-01",
            "name": "[variables('deploymentScriptName')]",
            "location": "[resourceGroup().location]",
            "kind": "AzurePowerShell",
            "dependsOn": [
                "[resourceId('Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]",
                "[resourceId('Microsoft.Storage/storageAccounts/blobServices/containers', variables('storageAccountName'), 'default', variables('storageBlobContainerName'))]"
            ],
            "identity": {
                "type": "UserAssigned",
                "userAssignedIdentities": {
                    "[resourceId('Microsoft.ManagedIdentity/userAssignedIdentities',variables('userAssignedIdentityName'))]": {}
                }
            },
            "properties": {
                "azPowerShellVersion": "3.0",
                "scriptContent": "
                    Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/mslearn-arm-deploymentscripts-sample/appsettings.json' -OutFile 'appsettings.json'
                    $storageAccount = Get-AzStorageAccount -ResourceGroupName 'learndeploymentscript_exercise_1' | Where-Object { $_.StorageAccountName -like 'storage*' }
                    $blob = Set-AzStorageBlobContent -File 'appsettings.json' -Container 'config' -Blob 'appsettings.json' -Context $StorageAccount.Context
                    $DeploymentScriptOutputs = @{}
                    $DeploymentScriptOutputs['Uri'] = $blob.ICloudBlob.Uri
                    $DeploymentScriptOutputs['StorageUri'] = $blob.ICloudBlob.StorageUri
                ",
                "retentionInterval": "P1D"
            }
        }
    ],
    "outputs": {
        "fileUri": {
            "type": "string",
            "value": "[reference(variables('deploymentScriptName')).outputs.Uri]"
        }
    }
}
var storageAccountName = 'storage${uniqueString(resourceGroup().id)}'
var storageBlobContainerName = 'config'
var userAssignedIdentityName = 'configDeployer'
var roleAssignmentName = guid(resourceGroup().id, 'contributor')
var contributorRoleDefinitionId = resourceId('Microsoft.Authorization/roleDefinitions', 'b24988ac-6180-42a0-ab88-20f7382dd24c')
var deploymentScriptName = 'CopyConfigScript'

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
  name: storageAccountName
  tags: {
    displayName: storageAccountName
  }
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  properties: {
    allowBlobPublicAccess: true
    encryption: {
      services: {
        blob: {
          enabled: true
        }
      }
      keySource: 'Microsoft.Storage'
    }
    supportsHttpsTrafficOnly: true
  }

  resource blobService 'blobServices' existing = {
    name: 'default'
  }
}

resource blobContainer 'Microsoft.Storage/storageAccounts/blobServices/containers@2019-04-01' = {
  parent: storageAccount::blobService
  name: storageBlobContainerName
  properties: {
    publicAccess: 'Blob'
  }
}

resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2018-11-30' = {
  name: userAssignedIdentityName
  location: resourceGroup().location
}

resource roleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = {
  name: roleAssignmentName
  properties: {
    roleDefinitionId: contributorRoleDefinitionId
    principalId: userAssignedIdentity.properties.principalId
    principalType: 'ServicePrincipal'
  }
}

resource deploymentScript 'Microsoft.Resources/deploymentScripts@2020-10-01' = {
  name: deploymentScriptName
  location: resourceGroup().location
  kind: 'AzurePowerShell'
  identity: {
    type: 'UserAssigned'
    userAssignedIdentities: {
      '${userAssignedIdentity.id}': {}
    }
  }
  properties: {
    azPowerShellVersion: '3.0'
    scriptContent: '''
      Invoke-RestMethod -Uri 'https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/mslearn-arm-deploymentscripts-sample/appsettings.json' -OutFile 'appsettings.json'
      $storageAccount = Get-AzStorageAccount -ResourceGroupName 'learndeploymentscript_exercise_1' | Where-Object { $_.StorageAccountName -like 'storage*' }
      $blob = Set-AzStorageBlobContent -File 'appsettings.json' -Container 'config' -Blob 'appsettings.json' -Context $storageAccount.Context
      $DeploymentScriptOutputs = @{}
      $DeploymentScriptOutputs['Uri'] = $blob.ICloudBlob.Uri
      $DeploymentScriptOutputs['StorageUri'] = $blob.ICloudBlob.StorageUri
    '''
    retentionInterval: 'P1D'
  }
  dependsOn: [
    roleAssignment
    blobContainer
  ]
}

output fileUri string = deploymentScript.properties.outputs.Uri

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

A sablon üzembe helyezése

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-eszközöket .

  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.

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen a bash lehetőség látható.

  3. Ha nem bash rendszerhéj jelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza az Azure Cloud Shell (Bash) lehetőséget.

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen megjelenik a terminálhéj legördülő listája, és a Git Bash Alapértelmezett elem van kiválasztva.

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

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen a bash terminál van kiválasztva.

  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
    

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

  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. A listában keresse meg a gyakorlathoz használni kívánt előfizetést.

    Ha kihagyta a listát a bejelentkezésből, az alábbi kódrészlet használatával ismét listázhatja az előfizetéseket.

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

    az account set --subscription "Your Subscription Name or ID"
    

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-eszközöket .

  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.

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen a bash lehetőség látható.

  3. Ha nem bash rendszerhéj jelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza az Azure Cloud Shell (Bash) lehetőséget.

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen megjelenik a terminálhéj legördülő listája, és a Git Bash Alapértelmezett elem van kiválasztva.

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

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen a bash terminál van kiválasztva.

  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 az Azure CLI használatával

  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. A listában keresse meg a gyakorlathoz használni kívánt előfizetést.

    Ha kihagyta a listát a bejelentkezésből, az alábbi kódrészlet használatával ismét listázhatja az előfizetéseket.

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

    az account set --subscription "Your Subscription Name or ID"
    

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.

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen megjelenik a pwsh lehetőség a rendszerhéj legördülő listájában.

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

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen megjelenik a terminálhéj legördülő listája és a PowerShell.

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

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen a PowerShell-terminál van kiválasztva.

  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
    

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

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

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

  3. A gyakorlathoz használni kívánt előfizetés azonosítójának lekéréséhez futtassa a következő parancsot:

    Get-AzSubscription
    

    Az előfizetések azonosítói a második oszlopban találhatók. Másolja ki a második oszlopot. Úgy néz ki, mint aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e.

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

    Set-AzContext -SubscriptionId {Your subscription ID}
    

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.

  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.

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen megjelenik a pwsh lehetőség a rendszerhéj legördülő listájában.

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

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen megjelenik a terminálhéj legördülő listája és a PowerShell.

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

    Képernyőkép a Visual Studio Code terminálablakáról, amelyen a PowerShell-terminál van kiválasztva.

  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 jelentkezzen be az Azure-ba a következő parancs futtatásával:

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

  3. A gyakorlathoz használni kívánt előfizetés azonosítójának lekéréséhez futtassa a következő parancsot:

    Get-AzSubscription
    

    Az előfizetések azonosítói a második oszlopban találhatók. Másolja ki a második oszlopot. Úgy néz ki, mint aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e4e.

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

    Set-AzContext -SubscriptionId {Your subscription ID}
    

Ezután létre kell hoznia egy erőforráscsoportot, amely tartalmazza a gyakorlat részeként létrehozandó erőforrásokat. Egy új erőforráscsoport használatával sokkal egyszerűbbé teheti a tisztítást a gyakorlat után.

A Visual Studio Code termináljában futtassa ezt a parancsot a gyakorlat erőforráscsoportjának létrehozásához:

Erőforráscsoport létrehozása a gyakorlathoz

resourceGroupName="learndeploymentscript_exercise_1"
az group create --location eastus --name $resourceGroupName
$resourceGroupName = 'learndeploymentscript_exercise_1'
New-AzResourceGroup -Location eastus -Name $resourceGroupName

Feljegyzés

Ha más nevet használ az erőforráscsoporthoz, győződjön meg arról, hogy frissíti a szkriptet. A modul későbbi részében megtudhatja, hogyan kerülheti el az erőforráscsoportnevek nehezen kódolását a szkriptekben.

A sablon üzembe helyezése az Azure-ban

A következő kód üzembe helyezi az ARM-sablont az Azure-ban. Sikeres üzembe helyezést fog látni.

Helyezze üzembe a sablont. Ehhez használjon Azure CLI-parancsokat a Visual Studio Code terminálján.

templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
deploymentName="deploymentscript-"$today

az deployment group create \
    --resource-group $resourceGroupName \
    --name $deploymentName \
    --template-file $templateFile

A következő kód üzembe helyezi az ARM-sablont az Azure-ban. Sikeres üzembe helyezést fog látni.

Helyezze üzembe a sablont. Ehhez használjon Azure CLI-parancsokat a Visual Studio Code terminálján.

templateFile="main.bicep"
today=$(date +"%d-%b-%Y")
deploymentName="deploymentscript-"$today

az deployment group create \
    --resource-group $resourceGroupName \
    --name $deploymentName \
    --template-file $templateFile

A következő kód üzembe helyezi a sablont az Azure-ban. Sikeres üzembe helyezést fog látni.

Helyezze üzembe a sablont Azure PowerShell-parancsok használatával a terminálban.

$templateFile = 'azuredeploy.json'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "deploymentscript-$today"
New-AzResourceGroupDeployment `
  -ResourceGroupName $resourceGroupName `
  -Name $deploymentName `
  -TemplateFile $templateFile

A következő kód üzembe helyezi a sablont az Azure-ban. Sikeres üzembe helyezést fog látni.

Helyezze üzembe a sablont Azure PowerShell-parancsok használatával a terminálban.

$templateFile = 'main.bicep'
$today = Get-Date -Format 'MM-dd-yyyy'
$deploymentName = "deploymentscript-$today"
New-AzResourceGroupDeployment `
  -ResourceGroupName $resourceGroupName `
  -Name $deploymentName `
  -TemplateFile $templateFile

A sablon eredményének áttekintése

Az üzembe helyezés befejezése után egy URL-címet kap, amely arra a fájlra mutat, amelyet az üzembehelyezési szkript a Blob Storage-ba másolt.

  1. Kérje le a fájlt a sablontelepítés URL-kimenetével annak ellenőrzéséhez, hogy az üzembehelyezési szkript megfelelően működött-e.

    uri=$(az deployment group show --resource-group $resourceGroupName --name $deploymentName --query 'properties.outputs.fileUri.value' --output tsv)
    curl $uri
    

    A parancs a következő kódot adja vissza.

    {
      "environment": "production",
      "hostname": "tailwindtraders.com",
      "Logging": {
        "LogLevel": {
          "Default": "Debug"
        }
      },
      "ApplicationInsights": {
        "InstrumentationKey": ""
      },
      "AllowedHosts": "*",
      "CosmosDb": {
        "Host": "",
        "Key": "",
        "Database": "Products"
      }
    }
    
  2. A naplókat (és az üzembe helyezés egyéb részleteit) az Azure Portalon vagy a következő paranccsal is áttekintheti.

    az deployment-scripts show-log --resource-group $resourceGroupName --name CopyConfigScript
    
  1. Kérje le a fájlt a sablontelepítés URL-kimenetével annak ellenőrzéséhez, hogy az üzembehelyezési szkript megfelelően működött-e.

    $fileUri = (Get-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -Name $deploymentName).Outputs.fileUri.Value
    Invoke-RestMethod $fileUri
    

    A parancs a következő kódot adja vissza.

    environment         : production
    hostname            : tailwindtraders.com
    Logging             : @{LogLevel=}
    ApplicationInsights : @{InstrumentationKey=}
    AllowedHosts        : *
    CosmosDb            : @{Host=; Key=; Database=Products}
    
  2. A naplókat (és az üzembe helyezés egyéb részleteit) az Azure Portalon vagy a következő parancssorban is áttekintheti.

    Get-AzDeploymentScriptLog -ResourceGroupName $resourceGroupName -Name CopyConfigScript
    

Az erőforráscsoport törlése

Most, hogy sikeresen üzembe helyezett egy ARM-sablont egy üzembehelyezési szkripttel, eltávolíthatja a létrehozott összes erőforrást és szerepkör-hozzárendelést tartalmazó erőforráscsoportot.

az group delete --name $resourceGroupName
Remove-AzResourceGroup -Name $resourceGroupName