Déployer le plan de contrôle
Le déploiement du plan de contrôle pour SAP Deployment Automation Framework se compose des éléments suivants :
- Système de déploiement
- Bibliothèque SAP
Préparer les informations d’identification de déploiement
SAP Deployment Automation Framework utilise des principaux de service pour les déploiements. Pour créer un principal de service pour le déploiement du plan de contrôle, utilisez un compte disposant des autorisations nécessaires pour créer des principaux de service :
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscriptionID>" --name="<environment>-Deployment-Account"
Important
Le nom du principal de service doit être unique.
Enregistrez les valeurs de sortie de la commande :
- appId
- mot de passe
- tenant
Si vous le souhaitez, affectez les autorisations suivantes au principal de service :
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>
Si vous souhaitez fournir le rôle d’accès utilisateur Administration istrateur limité au groupe de ressources uniquement, utilisez la commande suivante :
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>
Déployer le plan de contrôle
Tous les artefacts requis pour déployer le plan de contrôle se trouvent dans les référentiels GitHub.
Préparez le déploiement du plan de contrôle en clonant les référentiels à l’aide des commandes suivantes :
mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
git clone https://github.com/Azure/sap-automation.git sap-automation
git clone https://github.com/Azure/sap-automation-samples.git samples
L’exemple de fichier MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars
de configuration de l’outil de déploiement se trouve dans le ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE
dossier.
L’exemple de fichier de MGMT-WEEU-SAP_LIBRARY.tfvars
configuration de la bibliothèque SAP se trouve dans le ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY
dossier.
Vous pouvez copier les exemples de fichiers de configuration pour commencer à tester le framework d’automatisation du déploiement.
Un fichier Terraform minimal peut DEPLOYER
ressembler à cet exemple :
# The environment value is a mandatory field, it is used for partitioning the environments.
environment = "MGMT"
# The location/region value is a mandatory field, it is used to control where the resources are deployed
location = "westeurope"
# management_network_address_space is the address space for management virtual network
management_network_address_space = "10.10.20.0/25"
# management_subnet_address_prefix is the address prefix for the management subnet
management_subnet_address_prefix = "10.10.20.64/28"
# management_firewall_subnet_address_prefix is the address prefix for the firewall subnet
management_firewall_subnet_address_prefix = "10.10.20.0/26"
firewall_deployment = false
# management_bastion_subnet_address_prefix is the address prefix for the bastion subnet
management_bastion_subnet_address_prefix = "10.10.20.128/26"
bastion_deployment = true
# deployer_enable_public_ip controls if the deployer Virtual machines will have Public IPs
deployer_enable_public_ip = false
# deployer_count defines how many deployer VMs will be deployed
deployer_count = 1
# use_service_endpoint defines that the management subnets have service endpoints enabled
use_service_endpoint = true
# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = false
# enable_firewall_for_keyvaults_and_storage defines that the storage accounts and key vaults have firewall enabled
enable_firewall_for_keyvaults_and_storage = false
# public_network_access_enabled controls if storage account and key vaults have public network access enabled
public_network_access_enabled = true
Notez les emplacements des fichiers de variables Terraform pour les futures modifications au cours du déploiement.
Un fichier Terraform minimal peut LIBRARY
ressembler à cet exemple :
# The environment value is a mandatory field, it is used for partitioning the environments, for example, PROD and NP.
environment = "MGMT"
# The location/region value is a mandatory field, it is used to control where the resources are deployed
location = "westeurope"
#Defines the DNS suffix for the resources
dns_label = "azure.contoso.net"
# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = false
Notez les emplacements des fichiers de variables Terraform pour les futures modifications au cours du déploiement.
Exécutez la commande suivante pour créer l’outil de déploiement et la bibliothèque SAP. La commande ajoute les détails du principal de service au coffre de clés de déploiement.
Définissez les variables d’environnement pour le principal de service :
export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export ARM_CLIENT_ID="<appId>"
export ARM_CLIENT_SECRET="<password>"
export ARM_TENANT_ID="<tenantId>"
Exécutez la commande suivante pour déployer le plan de contrôle :
export env_code="MGMT"
export region_code="WEEU"
export vnet_code="DEP00"
export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
az logout
az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES
deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"
${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh \
--deployer_parameter_file "${deployer_parameter_file}" \
--library_parameter_file "${library_parameter_file}" \
--subscription "${ARM_SUBSCRIPTION_ID}" \
--spn_id "${ARM_CLIENT_ID}" \
--spn_secret "${ARM_CLIENT_SECRET}" \
--tenant_id "${ARM_TENANT_ID}"
Configurer manuellement une machine virtuelle en tant que déployeur SDAF à l’aide d’Azure Bastion
Pour se connecter au système de déploiement :
Connectez-vous au portail Azure.
Accédez au groupe de ressources qui contient la machine virtuelle de l’éditeur de déploiement.
Connecter à la machine virtuelle à l’aide d’Azure Bastion.
Le nom d’utilisateur par défaut est azureadmin.
Sélectionnez Clé privée SSH d’Azure Key Vault.
Sélectionnez l’abonnement contenant le plan de contrôle.
Sélectionnez le coffre de clés du système de déploiement.
Dans la liste des secrets, choisissez le secret qui se termine par -sshkey.
Connectez-vous à la machine virtuelle.
Exécutez le script suivant pour configurer l’éditeur de déploiement :
mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
wget https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/configure_deployer.sh -O configure_deployer.sh
chmod +x ./configure_deployer.sh
./configure_deployer.sh
# Source the new variables
. /etc/profile.d/deploy_server.sh
Le script installe Terraform et Ansible, puis configure le système de déploiement.
Configurer manuellement une machine virtuelle en tant que déployeur SDAF
Connecter à la machine virtuelle du déployeur à partir d’un ordinateur pouvant atteindre le réseau virtuel Azure.
Pour se connecter au système de déploiement :
Connectez-vous au portail Azure.
Sélectionnez ou recherchez des coffres de clés.
Dans la page du coffre de clés, recherchez le coffre de clés du déploiement. Le &om commence par
MGMT[REGION]DEP00user
. Filtrez par groupe de ressources ou emplacement, si nécessaire.Dans la section Paramètres du volet gauche, sélectionnez Secrets.
Recherchez et sélectionnez le secret contenant sshkey. Il peut se présenter comme suit :
MGMT-[REGION]-DEP00-sshkey
.Sur la page du secret, sélectionnez la version actuelle. Copiez ensuite la valeur secret.
Ouvrez un éditeur de texte brut. Copiez la valeur secrète.
Enregistrez le fichier dans lequel vous conservez les clés SSH. par exemple
C:\Users\<your-username>\.ssh
.Enregistrez le fichier. Si vous êtes invité à Enregistrer en tant que type, sélectionnez Tous les fichiers si SSH n’est pas une option. Par exemple, utilisez
deployer.ssh
.Connectez-vous à la machine virtuelle du système de déploiement via un client SSH tel que Visual Studio Code. Utilisez l’adresse IP privée du déployeur et la clé SSH que vous avez téléchargée. Pour obtenir des instructions sur la connexion au système de déploiement à l’aide de Visual Studio Code, consultez Se connecter au déploiement à l’aide de Visual Studio Code. Si vous utilisez PuTTY, convertissez d’abord le fichier de clé SSH à l’aide de PuTTYGen.
Remarque
Le nom d’utilisateur par défaut est azureadmin.
Configurez le déployeur à l’aide du script suivant :
mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
wget https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/configure_deployer.sh -O configure_deployer.sh
chmod +x ./configure_deployer.sh
./configure_deployer.sh
# Source the new variables
. /etc/profile.d/deploy_server.sh
Le script installe Terraform et Ansible, puis configure le système de déploiement.
Sécurisation du plan de contrôle
Le plan de contrôle est la partie la plus critique de l’infrastructure d’automatisation SAP. Il est important de sécuriser le plan de contrôle. Les étapes suivantes vous aident à sécuriser le plan de contrôle. Si vous avez créé votre plan de contrôle à l’aide d’une machine virtuelle externe ou à l’aide de Cloud Shell, vous devez sécuriser le plan de contrôle en implémentant des points de terminaison privés pour les comptes de stockage et les coffres de clés.
Vous pouvez utiliser le sync_deployer.sh
script pour copier les fichiers de configuration du plan de contrôle sur la machine virtuelle du déployeur. Connectez-vous à la machine virtuelle du déployeur et exécutez les commandes suivantes :
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES
../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname mgtneweeutfstate### --state_subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Vérifiez que la use_private_endpoint
variable est définie true
dans les fichiers de configuration et LIBRARY
les DEPLOYER
fichiers de configuration. Vérifiez également qu’il public_network_access_enabled
est défini false
dans les DEPLOYER
fichiers de configuration.
# use_private_endpoint defines that the storage accounts and key vaults have private endpoints enabled
use_private_endpoint = true
# public_network_access_enabled controls if storage account and key vaults have public network access enabled
public_network_access_enabled = false
Réexécutez le déploiement du plan de contrôle pour activer les points de terminaison privés pour les comptes de stockage et les coffres de clés.
export env_code="MGMT"
export region_code="WEEU"
export vnet_code="DEP00"
export storageaccountname=<storageaccountname>
export DEPLOYMENT_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
export CONFIG_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/WORKSPACES"
export SAP_AUTOMATION_REPO_PATH="${HOME}/Azure_SAP_Automated_Deployment/sap-automation"
az logout
az login --service-principal -u "${ARM_CLIENT_ID}" -p="${ARM_CLIENT_SECRET}" --tenant "${ARM_TENANT_ID}"
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES
deployer_parameter_file="${CONFIG_REPO_PATH}/DEPLOYER/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE/${env_code}-${region_code}-${vnet_code}-INFRASTRUCTURE.tfvars"
library_parameter_file="${CONFIG_REPO_PATH}/LIBRARY/${env_code}-${region_code}-SAP_LIBRARY/${env_code}-${region_code}-SAP_LIBRARY.tfvars"
${SAP_AUTOMATION_REPO_PATH}/deploy/scripts/deploy_controlplane.sh \
--deployer_parameter_file "${deployer_parameter_file}" \
--library_parameter_file "${library_parameter_file}" \
--subscription "${ARM_SUBSCRIPTION_ID}" \
--spn_id "${ARM_CLIENT_ID}" \
--spn_secret "${ARM_CLIENT_SECRET}" \
--tenant_id "${ARM_TENANT_ID}" \
--storageaccountname "${storageaccountname}" \
--recover
Préparation de l’application web
Cette étape est facultative. Si vous souhaitez une expérience utilisateur basée sur un navigateur pour aider la configuration des zones et systèmes de charge de travail SAP, exécutez les commandes suivantes avant de déployer le plan de contrôle.
echo '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' >> manifest.json
region_code=WEEU
export TF_VAR_app_registration_app_id=$(az ad app create \
--display-name ${region_code}-webapp-registration \
--enable-id-token-issuance true \
--sign-in-audience AzureADMyOrg \
--required-resource-access @manifest.json \
--query "appId" | tr -d '"')
export TF_VAR_webapp_client_secret=$(az ad app credential reset \
--id $TF_VAR_app_registration_app_id --append \
--query "password" | tr -d '"')
export TF_VAR_use_webapp=true
rm manifest.json