Megosztás a következőn keresztül:


Cloud Services (kiterjesztett támogatás) üzembe helyezése ARM-sablon használatával

Ez a cikk bemutatja, hogyan használhat Azure Resource Manager-sablont (ARM-sablont) az Azure Cloud Services (kiterjesztett támogatás) üzembe helyezéséhez.

Előfeltételek

Az üzembe helyezés ARM-sablonok használatával történő létrehozásának előfeltételeként hajtsa végre az alábbi lépéseket.

  1. Tekintse át a Cloud Services üzembehelyezési előfeltételeit (kiterjesztett támogatás), és hozza létre a szükséges erőforrásokat.

  2. Hozzon létre egy új erőforráscsoportot az Azure Portal vagy az Azure PowerShell használatával. Ez a lépés nem kötelező, ha meglévő erőforráscsoportot használ.

  3. Hozzon létre egy új tárfiókot az Azure Portal vagy az Azure PowerShell használatával. Ez a lépés nem kötelező, ha meglévő tárfiókot használ.

  4. Töltse fel a csomagfájlt (.cspkg vagy .zip) és konfigurációs (.cscfg) fájlt a tárfiókba az Azure Portal vagy az Azure PowerShell használatával. Mentse a közös hozzáférésű jogosultságkód (SAS) URI-kat mindkét fájlhoz, hogy hozzáadja az ARM-sablonhoz egy későbbi lépésben.

  5. (Nem kötelező) Hozzon létre egy kulcstartót, és töltse fel a tanúsítványokat.

    • Tanúsítványokat csatolhat az üzembe helyezéshez a szolgáltatással és a szolgáltatással való biztonságos kommunikációhoz. Tanúsítványok használata esetén a tanúsítvány ujjlenyomatait meg kell adni a konfigurációs (.cscfg) fájlban, és fel kell tölteni egy kulcstartóba. Kulcstartót az Azure Portal vagy az Azure PowerShell használatával hozhat létre.
    • A társított kulcstartónak ugyanabban a régióban és előfizetésben kell lennie, mint a Cloud Services (kiterjesztett támogatás) üzembe helyezése.
    • A társított kulcstartónak rendelkeznie kell a megfelelő engedélyekkel, hogy a Cloud Services (kiterjesztett támogatási) erőforrások le tudják kérni a tanúsítványokat a kulcstartóból. További információ: Tanúsítványok használata a Cloud Services szolgáltatással (kiterjesztett támogatás).
    • A kulcstartóra az osProfile ARM-sablon egy későbbi lépésben látható szakaszában kell hivatkozni.

Cloud Services üzembe helyezése (kiterjesztett támogatás)

Cloud Services (kiterjesztett támogatás) üzembe helyezése sablon használatával:

Feljegyzés

Az ARM-sablon és paraméterfájl létrehozásának egyszerűbb és gyorsabb módja az Azure Portal használata. A létrehozott ARM-sablont letöltheti a portálról a Cloud Services (kiterjesztett támogatás) létrehozásához az Azure PowerShell használatával.

  1. Hozzon létre egy virtuális hálózatot. A virtuális hálózat nevének meg kell egyeznie a konfigurációs (.cscfg) fájlban található virtuális hálózati hivatkozásokkal. Ha meglévő virtuális hálózatot használ, hagyja ki ezt a szakaszt az ARM-sablonból.

    "resources": [ 
        { 
          "apiVersion": "2019-08-01", 
          "type": "Microsoft.Network/virtualNetworks", 
          "name": "[parameters('vnetName')]", 
          "location": "[parameters('location')]", 
          "properties": { 
            "addressSpace": { 
              "addressPrefixes": [ 
                "10.0.0.0/16" 
              ] 
            }, 
            "subnets": [ 
              { 
                "name": "WebTier", 
                "properties": { 
                  "addressPrefix": "10.0.0.0/24" 
                } 
              } 
            ] 
          } 
        } 
    ] 
    

    Ha új virtuális hálózatot hoz létre, adja hozzá a következő sorokat a dependsOn szakaszhoz, hogy a platform a Cloud Services (kiterjesztett támogatás) példány létrehozása előtt hozza létre a virtuális hálózatot:

    "dependsOn": [ 
            "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]" 
     ] 
    
  2. Hozzon létre egy nyilvános IP-címet, és (opcionálisan) állítsa be a nyilvános IP-cím DNS-címketulajdonságát. Ha statikus IP-címet használ, fenntartott IP-címként kell hivatkoznia rá a konfigurációs (.cscfg) fájlban. Ha meglévő IP-címet használ, hagyja ki ezt a lépést, és adja hozzá közvetlenül az IP-címadatokat az ARM-sablon terheléselosztó konfigurációs beállításaihoz.

    "resources": [ 
        { 
          "apiVersion": "2019-08-01", 
          "type": "Microsoft.Network/publicIPAddresses", 
          "name": "[parameters('publicIPName')]", 
          "location": "[parameters('location')]", 
          "properties": { 
            "publicIPAllocationMethod": "Dynamic", 
            "idleTimeoutInMinutes": 10, 
            "publicIPAddressVersion": "IPv4", 
            "dnsSettings": { 
              "domainNameLabel": "[variables('dnsName')]" 
            } 
          }, 
          "sku": { 
            "name": "Basic" 
          } 
        } 
    ] 
    

    Ha új IP-címet hoz létre, adja hozzá a következő sorokat a dependsOn szakaszhoz, hogy a platform létrehozza az IP-címet a Cloud Services (kiterjesztett támogatás) példány létrehozása előtt:

    "dependsOn": [ 
            "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" 
          ] 
    
  3. Hozzon létre egy Cloud Services-objektumot (kiterjesztett támogatás). Adjon hozzá releváns dependsOn hivatkozásokat, ha virtuális hálózatokat vagy nyilvános IP-címeket helyez üzembe a sablonban.

    {
      "apiVersion": "2021-03-01",
      "type": "Microsoft.Compute/cloudServices",
      "name": "[variables('cloudServiceName')]",
      "location": "[parameters('location')]",
      "tags": {
        "DeploymentLabel": "[parameters('deploymentLabel')]",
        "DeployFromVisualStudio": "true"
      },
      "dependsOn": [
        "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]",
        "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]"
      ],
      "properties": {
        "packageUrl": "[parameters('packageSasUri')]",
        "configurationUrl": "[parameters('configurationSasUri')]",
        "upgradeMode": "[parameters('upgradeMode')]"
      }
    }
    
  4. Hozzon létre egy hálózati profilobjektumot az üzembe helyezéshez, és társítsa a nyilvános IP-címet a terheléselosztó előtéréhez. Az Azure platform automatikusan létrehoz egy terheléselosztót.

    "networkProfile": { 
        "loadBalancerConfigurations": [ 
          { 
            "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/loadBalancers/', variables('lbName'))]", 
            "name": "[variables('lbName')]", 
            "properties": { 
              "frontendIPConfigurations": [ 
                { 
                  "name": "[variables('lbFEName')]", 
                  "properties": { 
                    "publicIPAddress": { 
                      "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]" 
                    } 
                  } 
                } 
              ] 
            } 
          } 
        ] 
      } 
    
  5. Adja hozzá a kulcstartóra vonatkozó referenciát az osProfile ARM-sablon szakaszában. A kulcstartó a Cloud Serviceshez (kiterjesztett támogatás) társított tanúsítványokat tárolja. Adja hozzá a tanúsítványokat a kulcstartóhoz, majd hivatkozzon a tanúsítvány ujjlenyomatára a konfigurációs (.cscfg) fájlban. Emellett állítsa be az Azure-beli virtuális gépek kulcstartó-hozzáférési szabályzatát az Azure Portalon való üzembe helyezéshez , hogy a Cloud Services (kiterjesztett támogatási) erőforrás lekérhesse a kulcstartóban titkos kulcsként tárolt tanúsítványokat. A kulcstartónak ugyanabban a régióban és előfizetésben kell lennie, mint a Cloud Services (kiterjesztett támogatási) erőforrásnak, és egyedi névvel kell rendelkeznie. További információ: Tanúsítványok használata a Cloud Services szolgáltatással (kiterjesztett támogatás).

    "osProfile": { 
          "secrets": [ 
            { 
              "sourceVault": { 
                "id": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.KeyVault/vaults/{keyvault-name}" 
              }, 
              "vaultCertificates": [ 
                { 
                  "certificateUrl": "https://{keyvault-name}.vault.azure.net:443/secrets/ContosoCertificate/{secret-id}" 
                } 
              ] 
            } 
          ] 
        } 
    

    Feljegyzés

    sourceVaultaz ARM-sablonban a kulcstartó erőforrás-azonosítójának értéke. Ezeket az információkat a kulcstartó Tulajdonságok szakaszában található erőforrás-azonosító megkeresésével szerezheti be.

    • Az érték lekéréséhez certificateUrl lépjen a titkos azonosító címkével ellátott kulcstartóban lévő tanúsítványra. 
    • certificateUrl a következő formában https://{keyvault-endpoint}/secrets/{secret-name}/{secret-id}kell lennie: .
  6. Szerepkörprofil létrehozása. Győződjön meg arról, hogy a szerepkörök száma, az egyes szerepkörök példányainak száma, a szerepkörnevek és a szerepkörméretek megegyeznek a konfigurációs (.cscfg) fájlban, a definíciófájlban (.csdef) és az roleProfile ARM-sablon szakaszában.

    "roleProfile": {
      "roles": {
        "value": [
          {
            "name": "WebRole1",
            "sku": {
              "name": "Standard_D1_v2",
              "capacity": "1"
            }
          },
          {
            "name": "WorkerRole1",
            "sku": {
              "name": "Standard_D1_v2",
              "capacity": "1"
            } 
          } 
        ]
      }
    }   
    
  7. (Nem kötelező) Hozzon létre egy bővítményprofilt, amely bővítményeket ad hozzá a Cloud Services (kiterjesztett támogatás) üzembe helyezéséhez. Az alábbi példa hozzáadja a Remote Desktop Protocol (RDP) bővítményt és az Azure Diagnostics bővítményt.

    Feljegyzés

    Az RDP jelszavának 8 és 123 karakter közöttinek kell lennie, és az alábbi jelszó-összetettségi követelmények közül legalább háromnak meg kell felelnie:

    Nagybetűs karaktert tartalmaz.
    Kisbetűs karaktert tartalmaz.
    Numerikus számjegyet tartalmaz.
    Speciális karaktert tartalmaz.
    Vezérlőkarakte nem tartalmazható.

        "extensionProfile": {
          "extensions": [
            {
              "name": "RDPExtension",
              "properties": {
                "autoUpgradeMinorVersion": true,
                "publisher": "Microsoft.Windows.Azure.Extensions",
                "type": "RDP",
                "typeHandlerVersion": "1.2.1",
                "settings": "<PublicConfig>\r\n <UserName>[Insert Username]</UserName>\r\n <Expiration>1/21/2022 12:00:00 AM</Expiration>\r\n</PublicConfig>",
                "protectedSettings": "<PrivateConfig>\r\n <Password>[Insert Password]</Password>\r\n</PrivateConfig>"
              }
            },
            {
              "name": "Microsoft.Insights.VMDiagnosticsSettings_WebRole1",
              "properties": {
                "autoUpgradeMinorVersion": true,
                "publisher": "Microsoft.Azure.Diagnostics",
                "type": "PaaSDiagnostics",
                "typeHandlerVersion": "1.5",
                "settings": "[parameters('wadPublicConfig_WebRole1')]",
                "protectedSettings": "[parameters('wadPrivateConfig_WebRole1')]",
                "rolesAppliedTo": [
                  "WebRole1"
                ]
              }
            }
          ]
        }
    
  8. Tekintse át a teljes sablont:

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        "cloudServiceName": {
          "type": "string",
          "metadata": {
            "description": "Name of the cloud service"
          }
        },
        "location": {
          "type": "string",
          "metadata": {
            "description": "Location of the cloud service"
          }
        },
        "deploymentLabel": {
          "type": "string",
          "metadata": {
            "description": "Label of the deployment"
          }
        },
        "packageSasUri": {
          "type": "securestring",
          "metadata": {
            "description": "SAS URI of the package (.cspkg) file to deploy"
          }
        },
        "configurationSasUri": {
          "type": "securestring",
          "metadata": {
            "description": "SAS URI of the configuration (.cscfg) file"
          }
        },
        "roles": {
          "type": "array",
          "metadata": {
            "description": "Roles created in the cloud service application"
          }
        },
        "wadPublicConfig_WebRole1": {
          "type": "string",
          "metadata": {
             "description": "Public configuration of the Azure Diagnostics extension"
          }
        },
        "wadPrivateConfig_WebRole1": {
          "type": "securestring",
          "metadata": {
            "description": "Private configuration of the Azure Diagnostics extension"
          }
        },
        "vnetName": {
          "type": "string",
          "defaultValue": "[concat(parameters('cloudServiceName'), 'VNet')]",
          "metadata": {
            "description": "Name of vitual network"
          }
        },
        "publicIPName": {
          "type": "string",
          "defaultValue": "contosocsIP",
          "metadata": {
            "description": "Name of public IP address"
          }
        },
        "upgradeMode": {
          "type": "string",
          "defaultValue": "Auto",
          "metadata": {
            "UpgradeMode": "UpgradeMode of the CloudService"
          }
        }
      },
      "variables": {
        "cloudServiceName": "[parameters('cloudServiceName')]",
        "subscriptionID": "[subscription().subscriptionId]",
        "dnsName": "[variables('cloudServiceName')]",
        "lbName": "[concat(variables('cloudServiceName'), 'LB')]",
        "lbFEName": "[concat(variables('cloudServiceName'), 'LBFE')]",
        "resourcePrefix": "[concat('/subscriptions/', variables('subscriptionID'), '/resourceGroups/', resourceGroup().name, '/providers/')]"
      },
      "resources": [
        {
          "apiVersion": "2019-08-01",
          "type": "Microsoft.Network/virtualNetworks",
          "name": "[parameters('vnetName')]",
          "location": "[parameters('location')]",
          "properties": {
            "addressSpace": {
              "addressPrefixes": [
                "10.0.0.0/16"
              ]
            },
            "subnets": [
              {
                "name": "WebTier",
                "properties": {
                  "addressPrefix": "10.0.0.0/24"
                }
              }
            ]
          }
        },
        {
          "apiVersion": "2019-08-01",
          "type": "Microsoft.Network/publicIPAddresses",
          "name": "[parameters('publicIPName')]",
          "location": "[parameters('location')]",
          "properties": {
            "publicIPAllocationMethod": "Dynamic",
            "idleTimeoutInMinutes": 10,
            "publicIPAddressVersion": "IPv4",
            "dnsSettings": {
              "domainNameLabel": "[variables('dnsName')]"
            }
          },
          "sku": {
            "name": "Basic"
          }
        },
        {
          "apiVersion": "2021-03-01",
          "type": "Microsoft.Compute/cloudServices",
          "name": "[variables('cloudServiceName')]",
          "location": "[parameters('location')]",
          "tags": {
            "DeploymentLabel": "[parameters('deploymentLabel')]",
            "DeployFromVisualStudio": "true"
          },
          "dependsOn": [
            "[concat('Microsoft.Network/virtualNetworks/', parameters('vnetName'))]",
            "[concat('Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]"
          ],
          "properties": {
            "packageUrl": "[parameters('packageSasUri')]",
            "configurationUrl": "[parameters('configurationSasUri')]",
            "upgradeMode": "[parameters('upgradeMode')]",
            "roleProfile": {
              "roles": [
                {
                  "name": "WebRole1",
                  "sku": {
                    "name": "Standard_D1_v2",
                    "capacity": "1"
                  }
                },
                {
                  "name": "WorkerRole1",
                  "sku": {
                    "name": "Standard_D1_v2",
                    "capacity": "1"
                  }
                }
              ]
            },
            "networkProfile": {
              "loadBalancerConfigurations": [
                {
                  "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/loadBalancers/', variables('lbName'))]",
                  "name": "[variables('lbName')]",
                  "properties": {
                    "frontendIPConfigurations": [
                      {
                        "name": "[variables('lbFEName')]",
                        "properties": {
                          "publicIPAddress": {
                            "id": "[concat(variables('resourcePrefix'), 'Microsoft.Network/publicIPAddresses/', parameters('publicIPName'))]"
                          }
                        }
                      }
                    ]
                  }
                }
              ]
            },
            "osProfile": {
              "secrets": [
                {
                  "sourceVault": {
                    "id": "/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.KeyVault/vaults/{keyvault-name}"
                  },
                  "vaultCertificates": [
                    {
                      "certificateUrl": "https://{keyvault-name}.vault.azure.net:443/secrets/ContosoCertificate/{secret-id}"
                    }
                  ]
                }
              ]
            },
            "extensionProfile": {
              "extensions": [
                {
                  "name": "RDPExtension",
                  "properties": {
                    "autoUpgradeMinorVersion": true,
                    "publisher": "Microsoft.Windows.Azure.Extensions",
                    "type": "RDP",
                    "typeHandlerVersion": "1.2.1",
                    "settings": "<PublicConfig>\r\n <UserName>[Insert Username]</UserName>\r\n <Expiration>1/21/2022 12:00:00 AM</Expiration>\r\n</PublicConfig>",
                    "protectedSettings": "<PrivateConfig>\r\n <Password>[Insert Password]</Password>\r\n</PrivateConfig>"
                  }
                },
                {
                  "name": "Microsoft.Insights.VMDiagnosticsSettings_WebRole1",
                  "properties": {
                    "autoUpgradeMinorVersion": true,
                    "publisher": "Microsoft.Azure.Diagnostics",
                    "type": "PaaSDiagnostics",
                    "typeHandlerVersion": "1.5",
                    "settings": "[parameters('wadPublicConfig_WebRole1')]",
                    "protectedSettings": "[parameters('wadPrivateConfig_WebRole1')]",
                    "rolesAppliedTo": [
                      "WebRole1"
                  ]
                }
              }
            ]
          }
        }
       }
      ]
    }
    
  9. A Cloud Services (kiterjesztett támogatás) üzembe helyezéséhez telepítse a sablont és a paraméterfájlt (a sablonfájl paramétereinek meghatározásához). Ezeket a mintasablonokat használhatja.

    New-AzResourceGroupDeployment -ResourceGroupName "ContosOrg" -TemplateFile "file path to your template file" -TemplateParameterFile "file path to your parameter file"