empower® in Ihrer Corporate Cloud ausrollen

Hosting Option: Corporate Cloud

Benötigte Berechtigungen: IT-Admin

Wenn Sie empower® in Ihrer Corporate Cloud hosten, müssen Sie alle erforderlichen Ressourcen in Ihrer Azure-Umgebung einrichten.

Um diesen Prozess für Sie zu vereinfachen, enthält dieser Artikel detaillierte Anweisungen sowie eine ARM (Azure Resource Manager)-Vorlage, die Sie verwenden können.

ARM-Vorlagen sind eine Art Infrastruktur als Code – ein Konzept, bei dem Sie die Infrastruktur definieren, die bereitgestellt werden soll. Sie verwenden eine deklarative Syntax, d. h. Sie definieren die Ressourcen, die Azure bereitstellen soll, ohne anzugeben, wie die Ressourcen erstellt werden.

Die ARM-Vorlage, die in diesem Artikel angeboten wird, wurde speziell zur Einrichtung aller erforderlichen Ressourcen in Ihrer Azure-Umgebung erstellt, erfüllt alle Anforderungen von empower® und bietet die Grundlage für ein hoch-funktionales und hochperformantes empower® Backend.

Im Folgenden finden Sie eine Schritt-für-Schritt-Anleitung zur genauen Konfiguration im ARM-Deployment-Bereich und auf Seiten des SQL-Servers.

Anmerkung

Für weitere Informationen zur Einrichtung und der Bereitstellung von ARM-Vorlagen siehe Erstellen und Bereitstellen von Vorlagenspezifikationen.

Anmerkung

Wenn Sie weitere Hilfe benötigen, wenden Sie sich an den empower® Support.

Die ARM-Vorlage verwenden

Wenn Sie die bereitgestellte ARM-Vorlage verwenden, werden die folgenden Ressourcen erstellt:

  • SQL-Server

  • SQL-Datenbank

    • .bacpac-Datei erforderlich

  • VM (Virtual Machine)

  • NIC (Network Interface)

  • VNet (Virtual Network)

  • NSG (Network Security Group)

  • IP-Adresse

  • Erweiterung:

    • Anti-Malware

    • Benutzerdefinierte Ausführung von Skripten (um PowerShell-Skripte auszuführen)

      • Das PowerShell-Skript ist unter folgendem Link verfügbar:

        https://madeinoffice.blob.core.windows.net/azure-arm/Account_Policies.ps1  

Schritt-für-Schritt-Anleitung zur Bereitstellung der ARM-Vorlage

Um die ARM-Vorlage bereitzustellen, gehen Sie wie folgt vor:

  1. Laden Sie die ARM-Vorlage über folgenden Link herunter:

    ARM-Vorlage herunterladen

    Alternativ können Sie die Vorlage unter ARM-Vorlage kopieren kopieren.

  2. Entpacken Sie den .zip-Ordner.

    Der entpackte Ordner enthält die Datei Customer_ARM_Template_v2_4.json.

  3. Öffnen Sie das Azure-Portal.

  1. Suchen Sie in der Suchleiste nach Template specs.

  2. Wählen Sie die Option Template specs aus.

  3. Klicken Sie auf den Button Import Template (Abbildung 1, „Bereich Template specs).

Abbildung 1. Bereich Template specs

Bereich Template specs

  1. Klicken Sie auf das Ordner-Symbol (Abbildung 2, „Vorlage importieren“).

  2. Wählen Sie die Vorlage aus, die Sie hochladen möchten.

Abbildung 2. Vorlage importieren

Vorlage importieren

  1. Befüllen Sie im folgenden Abschnitt die erforderlichen Felder (Abbildung 3, „Felder für Import befüllen“, Abbildung 4, „Versionsinformationen einfügen“).

Abbildung 3. Felder für Import befüllen

Felder für Import befüllen

Abbildung 4. Versionsinformationen einfügen

Versionsinformationen einfügen

  1. Klicken Sie dann auf den Button Next: Edit Template.

    Nehmen Sie hier keine Änderungen vor (Abbildung 5, „Bereich Edit Template).

Abbildung 5. Bereich Edit Template

Bereich Edit Template

  1. Klicken Sie auf den Button Next: Tags.

  2. Wenn erforderlich, fügen Sie Tags hinzu (Abbildung 6, „Tags hinzufügen“).

Abbildung 6. Tags hinzufügen

Tags hinzufügen

  1. Klicken Sie auf den Button Next: Review + Create.

  2. Klicken Sie hier auf den Button Create (Abbildung 7, „Vorlage erstellen“).

Abbildung 7. Vorlage erstellen

Vorlage erstellen

  1. Navigieren Sie zurück zum Bereich Template specs.

  2. Wählen Sie die erstellte Vorlage aus und klicken Sie auf den Button Deploy (Abbildung 8, „Vorlage bereitstellen“).

Abbildung 8. Vorlage bereitstellen

Vorlage bereitstellen

  1. Füllen Sie in dem folgenden Bildschirm die erforderlichen Felder aus (Abbildung 9, „Felder für Bereitstellung befüllen“).

    Für weitere Informationen zu den Feldwerten siehe Erforderliche Felder für Bereitstellung befüllen.

  2. Klicken Sie dann auf den Button Reiview + Create.

    Während der Bereitstellung können Sie den Fortschritt überprüfen, indem Sie auf Deployment in progress… klicken.

Abbildung 9. Felder für Bereitstellung befüllen

Felder für Bereitstellung befüllen

  1. Wenn die Bereitstellung beendet ist, prüfen Sie den Bereich Outputs (Abbildung 10, „Bereich Outputs).

    Hier finden Sie den generierten Host-Namen und das Passwort für den empower_serviceuser.

  2. Speichern Sie diese Werte für die Backend-Installation ab.

Abbildung 10. Bereich Outputs

Bereich Outputs

  1. Bevor Sie das empower® Backend auf der VM installieren, führen Sie folgende Konfiguration auf dem SQL-Server aus:

    1. Verbinden Sie sich mit dem Azure-SQL-Server mit einem Tool, das für SQL-Anfragen verwendet werden kann, z. B. SQL Server Management Studio.

    2. Erstellen Sie einen SQL-Login.

      Der Login muss auf der Master-Datenbank erstellt werden. Der folgende Auszug zeigt ein Beispiel:

      CREATE LOGIN [empower_CustomerName]WITH PASSWORD =
      'Enter_Safe_Password_Here'GO
    3. Erstellen Sie dann einen Benutzer für den zuvor erstellten Login.

      Der Benutzer muss auf der empower® Datenbank erstellt werden. Der folgende Auszug zeigt ein Beispiel:

      CREATE USER[empower_CustomerName]FOR LOGIN [empower_CustomerName]WITH DEFAULT_SCHEMA = dbo
      GO
    4. Geben Sie dem SQL-Benutzer, den Sie eben erstellt haben, die Rollen empowerRole und hangfireRole.

      Der folgende Auszug zeigt ein Beispiel:

      EXECsp_addrolemember N'empowerRole',
      N'empower_CustomerName'GO
      EXEC
      sp_addrolemember N'hangfireRole',
      N'empower_CustomerName'GO
  1. Installieren Sie nun als nächstes das empower® Backend auf Ihrer VM.

Wichtig

Die empower® Datenbank wird entweder nach Fertigstellung eines Customizings von Ihrem Onboarding Team bereitgestellt oder sie wird in einem rohen Format bereitgestellt, damit das Customizing direkt in Ihrer Umgebung vorgenommen werden kann.

Für die zweite Möglichkeit benötigt Ihr Onboarding & Professional Services Specialist einen Gastzugang in Ihrer Microsoft Entra ID.

Für weitere Informationen zu Gastbenutzern in Ihrer Microsoft Entra ID siehe Gastbenutzer in Microsoft Entra ID.

Anmerkung

Um empower® mit Microsoft Entra ID einzurichten, muss vor der Installation des empower® Backends eine App-Registrierung in Microsoft Entra ID vorgenommen werden.

Für weitere Informationen zur App-Registrierung für empower® in Microsoft Entra ID siehe Skript für die App-Registrierung in Microsoft Entra ID.

Für weitere Informationen zur Installation des empower® Backends siehe Das empower® Backend installieren (Version >= 9.7).

Anmerkung

Die Benutzeroberfläche im Azure-Portal kann sich jederzeit ändern. Wenn Sie sich bei einem Aspekt unsicher sind, konsultieren Sie die Microsoft-Dokumentation.

Die obenstehenden Anweisungen beziehen sich auf die englische Benutzeroberfläche im Azure-Portal.

Erforderliche Felder für Bereitstellung befüllen

Die folgende Tabelle bietet eine Übersicht über die Felder, die Sie während der Bereitstellung ausfüllen müssen, und welche Werte für diese Felder benötigt werden:

Feld

Beschreibung

Erforderlich?

Subscription

Wählen Das aktive Abo-Modell aus.

Ja

Resource Group

Erstellen Sie eine neue Ressourcen-Gruppe oder wählen Sie eine bestehende aus.

Ja

Region

Diese Feld wird automatisch ausgefüllt, je nach ausgewählter Ressourcen-Gruppe.

Ja

Location

Dieses Feld wird automatisch ausgefüllt.

Ändern Sie diesen Wert nicht!

Ja

Company Name

Geben Sie Ihren Unternehmensnamen ein.

Der Wert darf keine Leerzeichen enthalten und maximal 10 Zeichen haben.

Ja

VM Admin Username

Geben Sie den Benutzernamen für das Administrator-Konto auf der VM ein.

Ja

VM Admin Password

Geben Sie das Passwort für das Administrator-Konto auf der VM ein.

Ja

VM Size

Geben Sie die VM-Größe ein.

Für weitere Informationen von Microsoft siehe Sizes for virtual machines in Azure.

Ja

Windows OS Version

Geben Sie die Windows-Betriebssystemversion ein, die Sie verwenden möchten.

Der Standardwert für dieses Feld ist Windows Data Center 2022.

Ja

Create SQL Resources

Entscheiden Sie, ob alle erforderlichen SQL-Ressourcen während der Bereitstellungen erstellt werden sollen.

Ja

SQL Server Name

Geben Sie den Namen für den SQL-Server ein.

Wenn Create SQL Resources auf true gesetzt ist:

Ja

SQL DB Name

Geben Sie den Namen für die SQL-Datenbank ein.

Wenn Create SQL Resources auf true gesetzt ist:

Ja

SQL Admin User

Geben Sie den Login-Namen für den SQL-Server-Adminbenutzer ein.

Wenn Create SQL Resources auf true gesetzt ist:

Ja

SQL Admin Password

Geben Sie das Passwort für den SQL-Server-Adminbenutzer ein.

Wenn Create SQL Resources auf true gesetzt ist:

Ja

Storage Account Key

Geben Sie den Zugriffsschlüssel für die hochgeladene .bacpac-Datei aus Ihrem Blob-Speicher ein.

Um das Token zu generieren, navigieren Sie zum entsprechenden Container im Azure-Portal und generieren Sie ein SAS-Token.

ARM_DeployTemplate_Generate_Access_Token.png

Wenn Create SQL Resources auf true gesetzt ist:

Ja

Bacpac URL

Geben Sie die URL ein, mit der auf die .bacpac-Datei zugegriffen werden kann.

Die URL kann aus der jeweiligen Blob Overview kopiert werden.

ARM_DeployTemplate_Copy_bacpac_URL.png

Wenn Create SQL Resources auf true gesetzt ist:

Ja

ARM-Vorlage kopieren

Wie oben erwähnt, können Sie die Vorlage über folgenden Link herunterladen:

ARM-Vorlage herunterladen

Alternativ können Sie den Inhalt der Datei aus dem folgenden Abschnitt kopieren:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.24.24.22086",
      "templateHash": "295844188305582502"
    }
  },
  "parameters": {
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the key vault should be created."
      }
    },
    "companyName": {
      "type": "string",
      "maxLength": 52,
      "metadata": {
        "description": "Please provide your company name without spaces."
      }
    },
    "vmAdminUsername": {
      "type": "string",
      "defaultValue": "empower_admin",
      "metadata": {
        "description": "Please provide the adminUsername without spaces."
      }
    },
    "vmAdminPassword": {
      "type": "securestring",
      "minLength": 24,
      "metadata": {
        "description": "Password for the Virtual Machine."
      }
    },
    "vmSize": {
      "type": "string",
      "defaultValue": "Standard_B2ms",
      "allowedValues": ["Standard_DS1_v2", "Standard_B2s", "Standard_B2ms"],
      "metadata": {
        "description": "The VM size"
      }
    },
    "windowsOSVersion": {
      "type": "string",
      "defaultValue": "2022-Datacenter-smalldisk",
      "allowedValues": [
        "2022-Datacenter-smalldisk",
        "2019-Datacenter-smalldisk"
      ],
      "metadata": {
        "description": "The Windows version for the VM."
      }
    },
    "createSQLResources": {
      "type": "bool",
      "metadata": {
        "description": "Should the SQL-Resources created.? Please check then all Parameters below."
      }
    },
    "sqlServerName": {
      "type": "string",
      "defaultValue": "empowerSQL",
      "metadata": {
        "description": "The name of the SQL Server"
      }
    },
    "sqlDBName": {
      "type": "string",
      "defaultValue": "empower",
      "metadata": {
        "description": "The name of the SQL Database"
      }
    },
    "sqlAdminUser": {
      "type": "string",
      "defaultValue": "Admin_User_for_the_SQLServer",
      "metadata": {
        "description": "The administrator username of the SQL server."
      }
    },
    "sqlAdminPassword": {
      "type": "securestring",
      "defaultValue": "",
      "maxLength": 24,
      "metadata": {
        "description": "The administrator password of the SQL server."
      }
    },
    "storageAccountKey": {
      "type": "securestring",
      "defaultValue": "",
      "metadata": {
        "description": "Specifies the key of the storage account where the BACPAC file is stored."
      }
    },
    "bacpacUrl": {
      "type": "string",
      "defaultValue": "URL_to_BlobContainer_ where_bacpac_file_is_located",
      "metadata": {
        "description": "Specifies the URL of the BACPAC file."
      }
    }
  },
  "variables": {
    "adminUsername": "[parameters('vmAdminUsername')]",
    "dnsLabelPrefix": "[format('empower-{0}', toLower(parameters('companyName')))]",
    "nicName": "empower-NIC",
    "addressPrefix": "10.1.0.0/24",
    "subnetName": "empower-Subnet",
    "subnetPrefix": "10.1.0.0/24",
    "publicIPAddressName": "empower-IP",
    "vmName": "empower",
    "virtualNetworkName": "empower-VNET",
    "subnetRef": "[resourceId('Microsoft.Network/virtualNetworks/subnets', variables('virtualNetworkName'), variables('subnetName'))]",
    "nsgName": "empower-nsg",
    "service_user_pw": "[format('P{0}y.', uniqueString(resourceGroup().id, 'a40d309d-3aad-4828-ab53-17e8e8b88439'))]",
    "scriptLocation": "[format('https://madeinoffice.blob.{0}/azure-arm/', environment().suffixes.storage)]"
  },
  "resources": [
    {
      "type": "Microsoft.Resources/deployments",
      "apiVersion": "2021-04-01",
      "name": "pid-a4869ce2-9844-521e-be75-67e904da97b3",
      "properties": {
        "mode": "Incremental",
        "template": {
          "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
          "contentVersion": "1.0.0.0",
          "resources": []
        }
      }
    },
    {
      "type": "Microsoft.Network/publicIPAddresses",
      "apiVersion": "2022-07-01",
      "name": "[variables('publicIPAddressName')]",
      "location": "[parameters('location')]",
      "properties": {
        "publicIPAllocationMethod": "Dynamic",
        "dnsSettings": {
          "domainNameLabel": "[variables('dnsLabelPrefix')]"
        }
      }
    },
    {
      "type": "Microsoft.Network/networkSecurityGroups",
      "apiVersion": "2022-07-01",
      "name": "[variables('nsgName')]",
      "location": "[parameters('location')]",
      "properties": {
        "securityRules": [
          {
            "name": "empower-services",
            "properties": {
              "description": "Allow inbound traffic for the empower 8 backend",
              "protocol": "*",
              "sourcePortRange": "*",
              "destinationPortRange": "443",
              "sourceAddressPrefix": "*",
              "destinationAddressPrefix": "*",
              "access": "Allow",
              "priority": 109,
              "direction": "Inbound"
            }
          }
        ]
      }
    },
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2022-07-01",
      "name": "[variables('virtualNetworkName')]",
      "location": "[parameters('location')]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": ["[variables('addressPrefix')]"]
        },
        "subnets": [
          {
            "name": "[variables('subnetName')]",
            "properties": {
              "addressPrefix": "[variables('subnetPrefix')]",
              "networkSecurityGroup": {
                "id": "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]"
              }
            }
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkSecurityGroups', variables('nsgName'))]"
      ]
    },
    {
      "type": "Microsoft.Network/networkInterfaces",
      "apiVersion": "2022-07-01",
      "name": "[variables('nicName')]",
      "location": "[parameters('location')]",
      "properties": {
        "ipConfigurations": [
          {
            "name": "ipconfig1",
            "properties": {
              "privateIPAllocationMethod": "Dynamic",
              "publicIPAddress": {
                "id": "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]"
              },
              "subnet": {
                "id": "[variables('subnetRef')]"
              }
            }
          }
        ]
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName'))]",
        "[resourceId('Microsoft.Network/virtualNetworks', variables('virtualNetworkName'))]"
      ]
    },
    {
      "type": "Microsoft.Compute/virtualMachines",
      "apiVersion": "2021-11-01",
      "name": "[variables('vmName')]",
      "location": "[parameters('location')]",
      "properties": {
        "hardwareProfile": {
          "vmSize": "[parameters('vmSize')]"
        },
        "osProfile": {
          "computerName": "[variables('vmName')]",
          "adminUsername": "[variables('adminUsername')]",
          "adminPassword": "[parameters('vmAdminPassword')]"
        },
        "storageProfile": {
          "imageReference": {
            "publisher": "MicrosoftWindowsServer",
            "offer": "WindowsServer",
            "sku": "[parameters('windowsOSVersion')]",
            "version": "latest"
          },
          "osDisk": {
            "createOption": "FromImage",
            "diskSizeGB": 256
          }
        },
        "networkProfile": {
          "networkInterfaces": [
            {
              "id": "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]"
            }
          ]
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Network/networkInterfaces', variables('nicName'))]"
      ]
    },
    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2021-11-01",
      "name": "[format('{0}/{1}', variables('vmName'), 'empowerAntiMalware')]",
      "location": "[parameters('location')]",
      "properties": {
        "publisher": "Microsoft.Azure.Security",
        "type": "IaaSAntimalware",
        "typeHandlerVersion": "1.5",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "AntimalwareEnabled": true,
          "RealtimeProtectionEnabled": "true",
          "ScheduledScanSettings": {
            "isEnabled": "true",
            "scanType": "Quick",
            "day": "7",
            "time": "120"
          }
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]"
      ]
    },
    {
      "type": "Microsoft.Compute/virtualMachines/extensions",
      "apiVersion": "2021-11-01",
      "name": "[format('{0}/{1}', variables('vmName'), 'empowerAccount_Policies_and_Disk_Management')]",
      "location": "[parameters('location')]",
      "properties": {
        "publisher": "Microsoft.Compute",
        "type": "CustomScriptExtension",
        "typeHandlerVersion": "1.7",
        "autoUpgradeMinorVersion": true,
        "settings": {
          "fileUris": [
            "[format('{0}Account_Policies_and_Disk_Management.ps1', variables('scriptLocation'))]"
          ],
          "commandToExecute": "[format('powershell.exe -ExecutionPolicy Unrestricted -File Account_Policies_and_Disk_Management.ps1 -pw \"{0}\" ', variables('service_user_pw'))]"
        }
      },
      "dependsOn": [
        "[resourceId('Microsoft.Compute/virtualMachines', variables('vmName'))]"
      ]
    },
    {
      "condition": "[parameters('createSQLResources')]",
      "type": "Microsoft.Sql/servers",
      "apiVersion": "2021-11-01",
      "name": "[parameters('sqlServerName')]",
      "location": "[parameters('location')]",
      "properties": {
        "administratorLogin": "[parameters('sqlAdminUser')]",
        "administratorLoginPassword": "[parameters('sqlAdminPassword')]",
        "version": "12.0"
      }
    },
    {
      "condition": "[parameters('createSQLResources')]",
      "type": "Microsoft.Sql/servers/firewallRules",
      "apiVersion": "2021-11-01",
      "name": "[format('{0}/{1}', parameters('sqlServerName'), 'AllowAllAzureIps')]",
      "properties": {
        "startIpAddress": "0.0.0.0",
        "endIpAddress": "0.0.0.0"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]"
      ]
    },
    {
      "condition": "[parameters('createSQLResources')]",
      "type": "Microsoft.Sql/servers/databases",
      "apiVersion": "2021-11-01",
      "name": "[format('{0}/{1}', string(parameters('sqlServerName')), string(parameters('sqlDBName')))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "S1",
        "tier": "Standard",
        "size": "S1",
        "capacity": 20
      },
      "properties": {},
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers', parameters('sqlServerName'))]"
      ]
    },
    {
      "condition": "[parameters('createSQLResources')]",
      "type": "Microsoft.Sql/servers/databases/extensions",
      "apiVersion": "2021-11-01",
      "name": "[format('{0}/{1}/{2}', split(format('{0}/{1}', string(parameters('sqlServerName')), string(parameters('sqlDBName'))), '/')[0], split(format('{0}/{1}', string(parameters('sqlServerName')), string(parameters('sqlDBName'))), '/')[1], 'Import')]",
      "properties": {
        "storageKeyType": "SharedAccessKey",
        "storageKey": "[format('?{0}', parameters('storageAccountKey'))]",
        "storageUri": "[parameters('bacpacUrl')]",
        "administratorLogin": "[parameters('sqlAdminUser')]",
        "administratorLoginPassword": "[parameters('sqlAdminPassword')]",
        "operationMode": "Import"
      },
      "dependsOn": [
        "[resourceId('Microsoft.Sql/servers/databases', split(format('{0}/{1}', string(parameters('sqlServerName')), string(parameters('sqlDBName'))), '/')[0], split(format('{0}/{1}', string(parameters('sqlServerName')), string(parameters('sqlDBName'))), '/')[1])]"
      ]
    }
  ],
  "outputs": {
    "hostname": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.Network/publicIPAddresses', variables('publicIPAddressName')), '2022-07-01').dnsSettings.fqdn]"
    },
    "service_user_pw": {
      "type": "string",
      "value": "[variables('service_user_pw')]"
    }
  }
}

War dieser Beitrag hilfreich?

/

Kommentare

0 Kommentare

Zu diesem Beitrag können keine Kommentare hinterlassen werden.