Dela via


Distribuera kontrollplanet

Distributionen av kontrollplanet för SAP Deployment Automation Framework består av:

  • Distribuerare
  • SAP-bibliotek

Diagram that shows the control plane.

Förbereda autentiseringsuppgifterna för distribution

SAP Deployment Automation Framework använder tjänstens huvudnamn för distributioner. Om du vill skapa ett tjänsthuvudnamn för distributionen av kontrollplanet använder du ett konto som har behörighet att skapa tjänstens huvudnamn:

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscriptionID>" --name="<environment>-Deployment-Account"
  

Viktigt!

Namnet på tjänstens huvudnamn måste vara unikt.

Registrera utdatavärdena från kommandot:

  • appId
  • password
  • tenant

Du kan också tilldela följande behörigheter till tjänstens huvudnamn:

az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>

Om du endast vill ange rollen Administratör för användaråtkomst till resursgruppen använder du följande kommando:


az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>

Distribuera kontrollplanet

Alla artefakter som krävs för att distribuera kontrollplanet finns i GitHub-lagringsplatser.

Förbered distributionen av kontrollplanet genom att klona lagringsplatserna med hjälp av följande kommandon:

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

Exempelkonfigurationsfilen MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvars för distribueraren finns i ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE mappen.

Exempelkonfigurationsfilen MGMT-WEEU-SAP_LIBRARY.tfvars för SAP-biblioteket finns i ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY mappen.

Du kan kopiera exempelkonfigurationsfilerna för att börja testa ramverket för distributionsautomatisering.

En minimal Terraform-fil för DEPLOYER kan se ut så här:

# 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

Observera platserna för Terraform-variabelfilen för framtida redigeringar under distributionen.

En minimal Terraform-fil för LIBRARY kan se ut så här:

# 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

Observera platserna för Terraform-variabelfilen för framtida redigeringar under distributionen.

Kör följande kommando för att skapa distribueraren och SAP-biblioteket. Kommandot lägger till information om tjänstens huvudnamn i distributionsnyckelvalvet.

Ange miljövariablerna för tjänstens huvudnamn:


export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export       ARM_CLIENT_ID="<appId>"
export   ARM_CLIENT_SECRET="<password>"
export       ARM_TENANT_ID="<tenantId>"

Kör följande kommando för att distribuera kontrollplanet:


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}"

Konfigurera en virtuell dator manuellt som en SDAF-distribuerare med hjälp av Azure Bastion

Så här ansluter du till distribueraren:

  1. Logga in på Azure-portalen.

  2. Gå till resursgruppen som innehåller den virtuella distributionsdatorn (VM).

  3. Anslut till den virtuella datorn med hjälp av Azure Bastion.

  4. Standardanvändarnamnet är azureadm.

  5. Välj Privat SSH-nyckel från Azure Key Vault.

  6. Välj den prenumeration som innehåller kontrollplanet.

  7. Välj nyckelvalvet för distribueraren.

  8. I listan med hemligheter väljer du den hemlighet som slutar med -sshkey.

  9. Anslut till den virtuella datorn.

Kör följande skript för att konfigurera distribueraren:


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

Skriptet installerar Terraform och Ansible och konfigurerar distribueraren.

Konfigurera en virtuell dator manuellt som en SDAF-distribuerare

Anslut till den virtuella distributionsdatorn från en dator som kan nå det virtuella Azure-nätverket.

Så här ansluter du till distribueraren:

  1. Logga in på Azure-portalen.

  2. Välj eller sök efter Nyckelvalv.

  3. På sidan Nyckelvalv letar du reda på nyckelvalvet för distribueraren. Namnet börjar med MGMT[REGION]DEP00user. Filtrera efter resursgrupp eller plats om det behövs.

  4. I avsnittet Inställningar i den vänstra rutan väljer du Hemligheter.

  5. Leta upp och välj hemligheten som innehåller sshkey. Det kan se ut som MGMT-[REGION]-DEP00-sshkey.

  6. På hemlighetens sida väljer du den aktuella versionen. Kopiera sedan värdet Hemlighet.

  7. Öppna en oformaterad textredigerare. Kopiera det hemliga värdet.

  8. Spara filen där du behåller SSH-nycklar. Ett exempel är C:\Users\<your-username>\.ssh.

  9. Spara filen. Om du uppmanas att spara som typ väljer du Alla filer om SSH inte är ett alternativ. Använd till exempel deployer.ssh.

  10. Anslut till den virtuella distributionsdatorn via valfri SSH-klient, till exempel Visual Studio Code. Använd den privata IP-adressen för distribueraren och SSH-nyckeln som du laddade ned. Anvisningar om hur du ansluter till distribueraren med hjälp av Visual Studio Code finns i Anslut till distribueraren med hjälp av Visual Studio Code. Om du använder PuTTY konverterar du SSH-nyckelfilen först med PuTTYGen.

Kommentar

Standardanvändarnamnet är azureadm.

Konfigurera distribueraren med hjälp av följande skript:

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

Skriptet installerar Terraform och Ansible och konfigurerar distribueraren.

Skydda kontrollplanet

Kontrollplanet är den mest kritiska delen av SAP-automatiseringsramverket. Det är viktigt att säkra kontrollplanet. Följande steg hjälper dig att skydda kontrollplanet. Om du har skapat kontrollplanet med hjälp av en extern virtuell dator eller med hjälp av cloud shell bör du skydda kontrollplanet genom att implementera privata slutpunkter för lagringskonton och nyckelvalv.

Du kan använda skriptet sync_deployer.sh för att kopiera konfigurationsfilerna för kontrollplanet till den virtuella distributionsdatorn. Logga in på den virtuella distributionsdatorn och kör följande kommandon:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname mgtneweeutfstate### --state_subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Kontrollera att variabeln use_private_endpoint är inställd true på i konfigurationsfilerna DEPLOYER och LIBRARY . Se också till false att public_network_access_enabled är inställt på i konfigurationsfilernaDEPLOYER.


# 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

Kör om distributionen av kontrollplanet för att aktivera privata slutpunkter för lagringskonton och nyckelvalv.



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

Förbereda webbappen

Steget är valfritt. Om du vill att ett webbläsarbaserat UX ska hjälpa till med konfigurationen av SAP-arbetsbelastningszoner och -system kör du följande kommandon innan du distribuerar kontrollplanet.

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

Gå vidare