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": "2019-06-01",
                "tags": {
                    "displayName": "[variables('storageAccountName')]"
                },
                "location": "[resourceGroup().location]",
                "kind": "StorageV2",
                "sku": {
                    "name": "Standard_LRS",
                    "tier": "Standard"
                },
                "properties": {
                    "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@2019-06-01' = {
      name: storageAccountName
      tags: {
        displayName: storageAccountName
      }
      location: resourceGroup().location
      kind: 'StorageV2'
      sku: {
        name: 'Standard_LRS'
        tier: 'Standard'
      }
      properties: {
        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": "2019-06-01",
            "tags": {
                "displayName": "[variables('storageAccountName')]"
            },
            "location": "[resourceGroup().location]",
            "kind": "StorageV2",
            "sku": {
                "name": "Standard_LRS",
                "tier": "Standard"
            },
            "properties": {
                "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@2019-06-01' = {
  name: storageAccountName
  tags: {
    displayName: storageAccountName
  }
  location: resourceGroup().location
  kind: 'StorageV2'
  sku: {
    name: 'Standard_LRS'
    tier: 'Standard'
  }
  properties: {
    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.

    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
    

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.

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

    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
    

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 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

  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.

    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 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 cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

  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