Gyakorlat – Üzembehelyezési szkript hozzáadása ARM-sablonhoz
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.
Nyissa meg a Visual Studio Code-ot.
Hozzon létre egy azuredeploy.json nevű új fájlt.
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é.
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" } } ] }
Mentse a sablont.
Nyissa meg a Visual Studio Code-ot.
Hozzon létre egy main.bicep nevű új fájlt.
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é.
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' } }
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.
Szerkessze a
variables
azuredeploy.json szakaszát a következőhöz:"userAssignedIdentityName": "configDeployer",
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]" }
Mentse a sablont.
A main.bicep változódefiníciói alatt adja hozzá a következőt:
var userAssignedIdentityName = 'configDeployer'
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 }
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.
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')]",
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" } }
Mentse a sablont.
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')
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' } }
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.
Szerkessze a
variables
azuredeploy.json szakaszát a következőhöz:"deploymentScriptName": "CopyConfigScript"
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'))]": {} } } }
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" }
Mentse a sablont.
A main.bicep változódefiníciói alatt adja hozzá a következőt:
var deploymentScriptName = 'CopyConfigScript'
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 ] }
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' }
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 .
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.
Ha a terminálablak jobb oldalán látható rendszerhéj bash, a megfelelő rendszerhéj nyitva van, és a következő szakaszra ugorhat.
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.
A terminálhéjak listájában válassza a bash lehetőséget.
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
A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:
az login
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.
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
Á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 .
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.
Ha a terminálablak jobb oldalán látható rendszerhéj bash, a megfelelő rendszerhéj nyitva van, és a következő szakaszra ugorhat.
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.
A terminálhéjak listájában válassza a bash lehetőséget.
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
A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:
az login
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.
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
Á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.
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.
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.
Ha nem PowerShell vagy pwsh rendszerhéj jelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza a PowerShellt.
A terminálhéjak listájában válassza a PowerShellt vagy a pwsh-t.
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
A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:
Connect-AzAccount
A megnyíló böngészőben jelentkezzen be az Azure-fiókjába.
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.
Á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.
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.
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.
Ha nem PowerShell vagy pwsh rendszerhéj jelenik meg, válassza a rendszerhéj legördülő nyilat, majd válassza a PowerShellt.
A terminálhéjak listájában válassza a PowerShellt vagy a pwsh-t.
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
A Visual Studio Code terminálon jelentkezzen be az Azure-ba a következő parancs futtatásával:
Connect-AzAccount
A megnyíló böngészőben jelentkezzen be az Azure-fiókjába.
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.
Á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.
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" } }
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
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}
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