Het besturingsvlak implementeren
De implementatie van het besturingsvlak voor SAP Deployment Automation Framework bestaat uit:
- Deployer
- SAP-bibliotheek
De implementatiereferenties voorbereiden
SAP Deployment Automation Framework maakt gebruik van service-principals voor implementaties. Als u een service-principal wilt maken voor de implementatie van het besturingsvlak, gebruikt u een account met machtigingen voor het maken van service-principals:
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscriptionID>" --name="<environment>-Deployment-Account"
Belangrijk
De naam van de service-principal moet uniek zijn.
Noteer de uitvoerwaarden van de opdracht:
- appId
- password
- AD-tenant
Wijs eventueel de volgende machtigingen toe aan de service-principal:
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>
Als u de rol Gebruikerstoegang alleen wilt opgeven Beheer istrator voor de resourcegroep, gebruikt u de volgende opdracht:
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>
Het besturingsvlak implementeren
Alle artefacten die nodig zijn om het besturingsvlak te implementeren, bevinden zich in GitHub-opslagplaatsen.
Bereid u voor op de implementatie van het besturingsvlak door de opslagplaatsen te klonen met behulp van de volgende opdrachten:
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
Het configuratiebestand MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars
voor de voorbeeld-implementatie bevindt zich in de ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE
map.
Het voorbeeldconfiguratiebestand MGMT-WEEU-SAP_LIBRARY.tfvars
van de SAP-bibliotheek bevindt zich in de ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY
map.
U kunt de voorbeeldconfiguratiebestanden kopiëren om het implementatieautomatiseringsframework te testen.
Een minimaal Terraform-bestand voor het DEPLOYER
bestand kan er als volgt uitzien:
# 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
Let op de locaties van het Terraform-variabelebestand voor toekomstige bewerkingen tijdens de implementatie.
Een minimaal Terraform-bestand voor het LIBRARY
bestand kan er als volgt uitzien:
# 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
Let op de locaties van het Terraform-variabelebestand voor toekomstige bewerkingen tijdens de implementatie.
Voer de volgende opdracht uit om de deployer en de SAP-bibliotheek te maken. Met de opdracht worden de details van de service-principal toegevoegd aan de implementatiesleutelkluis.
Stel de omgevingsvariabelen voor de service-principal in:
export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export ARM_CLIENT_ID="<appId>"
export ARM_CLIENT_SECRET="<password>"
export ARM_TENANT_ID="<tenantId>"
Voer de volgende opdracht uit om het besturingsvlak te implementeren:
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}"
Een virtuele machine handmatig configureren als een SDAF-implementatie met behulp van Azure Bastion
Verbinding maken met de deployer:
Meld u aan bij de Azure-portal.
Ga naar de resourcegroep die de virtuele machine (VM) van de deployer bevat.
Verbinding maken naar de virtuele machine met behulp van Azure Bastion.
De standaardgebruikersnaam is azureadm.
Selecteer persoonlijke SSH-sleutel in Azure Key Vault.
Selecteer het abonnement dat het besturingsvlak bevat.
Selecteer de sleutelkluis van de deployer.
Kies in de lijst met geheimen het geheim dat eindigt op -sshkey.
Maak verbinding met de VM.
Voer het volgende script uit om de implementatie te configureren:
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
Met het script worden Terraform en Ansible geïnstalleerd en wordt de implementatie geconfigureerd.
Een virtuele machine handmatig configureren als SDAF-implementatie
Verbinding maken naar de deployer-VM vanaf een computer die het virtuele Azure-netwerk kan bereiken.
Verbinding maken met de deployer:
Meld u aan bij de Azure-portal.
Selecteer of zoek naar sleutelkluizen.
Zoek op de pagina Sleutelkluis de sleutelkluis voor de implementatie. De naam begint met
MGMT[REGION]DEP00user
. Filter indien nodig op de resourcegroep of locatie.Selecteer Geheimen in de sectie Instellingen in het linkerdeelvenster.
Zoek en selecteer het geheim dat sshkey bevat. Het kan er als
MGMT-[REGION]-DEP00-sshkey
volgt uitzien.Selecteer op de pagina van het geheim de huidige versie. Kopieer vervolgens de geheime waarde.
Open een editor voor tekst zonder opmaak. Kopieer de geheime waarde.
Sla het bestand op waarin u SSH-sleutels bewaart. Een voorbeeld is
C:\Users\<your-username>\.ssh
.Sla het bestand op. Als u wordt gevraagd om Opslaan als te typen, selecteert u Alle bestanden als SSH geen optie is. Gebruik bijvoorbeeld
deployer.ssh
.Verbinding maken via een SSH-client naar de deployer-VM, zoals Visual Studio Code. Gebruik het privé-IP-adres van de implementatie en de SSH-sleutel die u hebt gedownload. Zie Verbinding maken met behulp van Visual Studio Code voor instructies over het maken van verbinding met de deployer met behulp van Visual Studio Code. Als u PuTTY gebruikt, converteert u eerst het SSH-sleutelbestand met behulp van PuTTYGen.
Notitie
De standaardgebruikersnaam is azureadm.
Configureer de implementatie met behulp van het volgende script:
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
Met het script worden Terraform en Ansible geïnstalleerd en wordt de implementatie geconfigureerd.
Het besturingsvlak beveiligen
Het besturingsvlak is het belangrijkste onderdeel van het SAP-automatiseringsframework. Het is belangrijk om het besturingsvlak te beveiligen. Met de volgende stappen kunt u het besturingsvlak beveiligen. Als u uw besturingsvlak hebt gemaakt met behulp van een externe virtuele machine of met behulp van de Cloud Shell, moet u het besturingsvlak beveiligen door privé-eindpunten te implementeren voor de opslagaccounts en sleutelkluizen.
U kunt het sync_deployer.sh
script gebruiken om de configuratiebestanden van het besturingsvlak te kopiëren naar de vm van de deployer. Meld u aan bij de implementatie-VM en voer de volgende opdrachten uit:
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES
../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname mgtneweeutfstate### --state_subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Zorg ervoor dat de use_private_endpoint
variabele is ingesteld true
op in de DEPLOYER
en LIBRARY
configuratiebestanden. Zorg er ook voor dat deze public_network_access_enabled
is ingesteld false
in de DEPLOYER
configuratiebestanden.
# 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
Voer de implementatie van het besturingsvlak opnieuw uit om privé-eindpunten in te schakelen voor de opslagaccounts en sleutelkluizen.
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
De web-app voorbereiden
Deze stap is optioneel. Als u een op een browser gebaseerde UX wilt gebruiken om de configuratie van SAP-workloadzones en -systemen te helpen, voert u de volgende opdrachten uit voordat u het besturingsvlak implementeert.
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