Включение резервного копирования в Azure WebApp из Azure Resource Manager - PullRequest
0 голосов
/ 30 сентября 2019

Я использую шаблоны ARM для развертывания нашей инфраструктуры, включающей веб-приложения Azure. В рамках развертывания я хотел бы убедиться, что для них включено резервное копирование, а не делать это вручную после развертывания. Это возможно? Если нет, то что было бы хорошей альтернативой вместо ручного включения резервного копирования?

1 Ответ

0 голосов
/ 01 октября 2019

Я не могу найти никаких документов или примеров о резервном копировании службы приложения Azure в шаблонах ARM, но вы можете использовать Azure PowerShell, чтобы создать службу приложения и автоматически настроить для нее резервную копию.

Попробуйте приведенный ниже PowerShell:

$name = '<name of your solution>'
$location = '<location of your solution>'

$ResourceGroupName = $name 
$sites_appwithbackup_name = $name
$serverfarms_webappwithbackup_name = $name 
$components_appwithbackup_name = $name 
$storageAccounts_webappbk_name = $name


try {
    New-AzResourceGroup -Name $ResourceGroupName -Location $location
    Start-Sleep -Seconds 5
    New-AzResourceGroupDeployment  -ResourceGroupName $ResourceGroupName -TemplateFile "<path of template file>" -sites_appwithbackup_name  $sites_appwithbackup_name -serverfarms_webappwithbackup_name $serverfarms_webappwithbackup_name -components_appwithbackup_name $components_appwithbackup_name -storageAccounts_webappbk_name $storageAccounts_webappbk_name -location $location

    $webapp = Get-AzWebApp -Name $sites_appwithbackup_name -ResourceGroupName $ResourceGroupName
    $storage = Get-AzStorageAccount -Name $storageAccounts_webappbk_name  -ResourceGroupName $ResourceGroupName

    $storageContainerSAS = New-AzStorageContainerSASToken  -Context $storage.Context -Name "backup" -Permission "rwdl" -ExpiryTime (Get-Date -Year 2300)

    $storageContainerURL = $storage.Context.BlobEndPoint + "backup" + $storageContainerSAS

    Edit-AzWebAppBackupConfiguration -FrequencyInterval 30 -FrequencyUnit Day  -RetentionPeriodInDays 30 -WebApp $webapp -StorageAccountUrl $storageContainerURL
}
catch {
    Remove-AzResourceGroup -Name $ResourceGroupName 
}

Это мой шаблон в этом случае:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "sites_appwithbackup_name": {

            "type": "String"
        },
        "serverfarms_webappwithbackup_name": {

            "type": "String"
        },
        "components_appwithbackup_name": {

            "type": "String"
        },
        "storageAccounts_webappbk_name": {

            "type": "String"
        },
        "location": {

            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "microsoft.insights/components",
            "apiVersion": "2015-05-01",
            "name": "[parameters('components_appwithbackup_name')]",
            "location": "[parameters('location')]",
            "kind": "web",
            "properties": {
                "Application_Type": "web",
                "Request_Source": "IbizaWebAppExtensionCreate"
            }
        },
        {
            "type": "Microsoft.Storage/storageAccounts",
            "apiVersion": "2019-04-01",
            "name": "[parameters('storageAccounts_webappbk_name')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "Standard_RAGRS",
                "tier": "Standard"
            },
            "kind": "StorageV2",
            "properties": {
                "networkAcls": {
                    "bypass": "AzureServices",
                    "virtualNetworkRules": [],
                    "ipRules": [],
                    "defaultAction": "Allow"
                },
                "supportsHttpsTrafficOnly": true,
                "encryption": {
                    "services": {
                        "file": {
                            "enabled": true
                        },
                        "blob": {
                            "enabled": true
                        }
                    },
                    "keySource": "Microsoft.Storage"
                },
                "accessTier": "Hot"
            }
        },
        {
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2016-09-01",
            "name": "[parameters('serverfarms_webappwithbackup_name')]",
            "location": "[parameters('location')]",
            "sku": {
                "name": "S1",
                "tier": "Standard",
                "size": "S1",
                "family": "S",
                "capacity": 1
            },
            "kind": "app",
            "properties": {
                "name": "[parameters('serverfarms_webappwithbackup_name')]",
                "perSiteScaling": false,
                "reserved": false,
                "targetWorkerCount": 0,
                "targetWorkerSizeId": 0
            }
        },
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices",
            "apiVersion": "2019-04-01",
            "name": "[concat(parameters('storageAccounts_webappbk_name'), '/default')]",
            "dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_webappbk_name'))]"
            ],
            "properties": {
                "cors": {
                    "corsRules": []
                },
                "deleteRetentionPolicy": {
                    "enabled": false
                }
            }
        },
        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2016-08-01",
            "name": "[parameters('sites_appwithbackup_name')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_webappwithbackup_name'))]"
            ],
            "kind": "app",
            "properties": {
                "enabled": true,
                "hostNameSslStates": [
                    {
                        "name": "[concat(parameters('sites_appwithbackup_name'), '.azurewebsites.net')]",
                        "sslState": "Disabled",
                        "hostType": "Standard"
                    },
                    {
                        "name": "[concat(parameters('sites_appwithbackup_name'), '.scm.azurewebsites.net')]",
                        "sslState": "Disabled",
                        "hostType": "Repository"
                    }
                ],
                "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('serverfarms_webappwithbackup_name'))]",
                "reserved": false,
                "scmSiteAlsoStopped": false,
                "clientAffinityEnabled": true,
                "clientCertEnabled": false,
                "hostNamesDisabled": false,
                "containerSize": 0,
                "dailyMemoryTimeQuota": 0,
                "httpsOnly": false
            }
        },
        {
            "type": "Microsoft.Web/sites/config",
            "apiVersion": "2016-08-01",
            "name": "[concat(parameters('sites_appwithbackup_name'), '/web')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('sites_appwithbackup_name'))]"
            ],
            "properties": {
                "numberOfWorkers": 1,
                "defaultDocuments": [
                    "Default.htm",
                    "Default.html",
                    "Default.asp",
                    "index.htm",
                    "index.html",
                    "iisstart.htm",
                    "default.aspx",
                    "index.php",
                    "hostingstart.html"
                ],
                "netFrameworkVersion": "v4.0",
                "phpVersion": "5.6",
                "pythonVersion": "",
                "nodeVersion": "",
                "linuxFxVersion": "",
                "requestTracingEnabled": false,
                "remoteDebuggingEnabled": false,
                "httpLoggingEnabled": false,
                "logsDirectorySizeLimit": 35,
                "detailedErrorLoggingEnabled": false,
                "publishingUsername": "$appwithbackup",
                "scmType": "None",
                "use32BitWorkerProcess": true,
                "webSocketsEnabled": false,
                "alwaysOn": true,
                "appCommandLine": "",
                "managedPipelineMode": "Integrated",
                "virtualApplications": [
                    {
                        "virtualPath": "/",
                        "physicalPath": "site\\wwwroot",
                        "preloadEnabled": true,
                        "virtualDirectories": null
                    }
                ],
                "winAuthAdminState": 0,
                "winAuthTenantState": 0,
                "customAppPoolIdentityAdminState": false,
                "customAppPoolIdentityTenantState": false,
                "loadBalancing": "LeastRequests",
                "routingRules": [],
                "experiments": {
                    "rampUpRules": []
                },
                "autoHealEnabled": false,
                "vnetName": "",
                "siteAuthEnabled": false,
                "siteAuthSettings": {
                    "enabled": null,
                    "unauthenticatedClientAction": null,
                    "tokenStoreEnabled": null,
                    "allowedExternalRedirectUrls": null,
                    "defaultProvider": null,
                    "clientId": null,
                    "clientSecret": null,
                    "clientSecretCertificateThumbprint": null,
                    "issuer": null,
                    "allowedAudiences": null,
                    "additionalLoginParams": null,
                    "isAadAutoProvisioned": false,
                    "googleClientId": null,
                    "googleClientSecret": null,
                    "googleOAuthScopes": null,
                    "facebookAppId": null,
                    "facebookAppSecret": null,
                    "facebookOAuthScopes": null,
                    "twitterConsumerKey": null,
                    "twitterConsumerSecret": null,
                    "microsoftAccountClientId": null,
                    "microsoftAccountClientSecret": null,
                    "microsoftAccountOAuthScopes": null
                },
                "localMySqlEnabled": false,
                "http20Enabled": false,
                "minTlsVersion": "1.2",
                "ftpsState": "AllAllowed",
                "reservedInstanceCount": 0,
                "fileChangeAuditEnabled": false
            }
        },
        {
            "type": "Microsoft.Web/sites/hostNameBindings",
            "apiVersion": "2016-08-01",
            "name": "[concat(parameters('sites_appwithbackup_name'), '/', parameters('sites_appwithbackup_name'), '.azurewebsites.net')]",
            "location": "[parameters('location')]",
            "dependsOn": [
                "[resourceId('Microsoft.Web/sites', parameters('sites_appwithbackup_name'))]"
            ],
            "properties": {
                "siteName": "appwithbackup",
                "hostNameType": "Verified"
            }
        },
        {
            "type": "Microsoft.Storage/storageAccounts/blobServices/containers",
            "apiVersion": "2019-04-01",
            "name": "[concat(parameters('storageAccounts_webappbk_name'), '/default/backup')]",
            "dependsOn": [
                "[resourceId('Microsoft.Storage/storageAccounts/blobServices', parameters('storageAccounts_webappbk_name'), 'default')]",
                "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccounts_webappbk_name'))]"
            ],
            "properties": {
                "publicAccess": "None"
            }
        }
    ]
}

Результат на моей стороне: enter image description here Как видите, все необходимые ресурсы созданы и резервная копия настроена. Надеюсь, это поможет .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...