Comece com o SAP Deployment Automation Framework
Comece rapidamente com SAP Deployment Automation Framework.
Pré-requisitos
Para começar a trabalhar com o SAP Deployment Automation Framework, é necessário:
- Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, é possível criar uma conta gratuita.
- Uma conta de usuário SAP com permissões para baixar o software SAP em seu ambiente do Azure. Para obter mais informações sobre o S-User, consulte SAP S-User.
- Uma instalação da CLI do Azure.
- Uma MS (Identidade Atribuída) do usuário ou uma entidade de serviço a ser usada para a implantação do plano de controle.
- Uma Identidade Atribuída (MS) de usuário ou uma entidade de serviço a ser usada para a implantação da zona de carga de trabalho.
- Uma capacidade de criar um projeto do Azure DevOps se você quiser usar o Azure DevOps para implantação.
Alguns dos pré-requisitos já podem estar instalados no ambiente de implantação. O Azure Cloud Shell e o implantador vêm com o Terraform e a CLI do Azure instalados.
Criar uma identidade atribuída pelo usuário
O SAP Automation Deployment Framework também pode usar uma MSI (identidade atribuída pelo usuário) para a implantação. Use uma conta com permissões para criar identidades gerenciadas ao executar o script que cria a identidade.
Crie a identidade gerenciada.
export ARM_SUBSCRIPTION_ID="<subscriptionId>" export control_plane_env_code="LAB" az identity create --name ${control_plane_env_code}-Deployment-Identity --resource-group <ExistingResourceGroup>
Examine a saída. Por exemplo:
{ "clientId": "<appId>", "id": "<armId>", "location": "<location>", "name": "${control_plane_env_code}-Deployment-Identity", "principalId": "<objectId>", "resourceGroup": "<ExistingResourceGroup>", "systemData": null, "tags": {}, "tenantId": "<TenantId>", "type": "Microsoft.ManagedIdentity/userAssignedIdentities" }
Copie os detalhes de saída.
A saída é mapeada para os parâmetros a seguir. Use esses parâmetros em etapas posteriores, com comandos de automação.
Nome de entrada do parâmetro Nome de saída app_id
appId
msi_id
armId
msi_objectid
objectId
Atribua a função de Colaborador à identidade.
export appId="<appId>" az role assignment create --assignee $msi_objectid --role "Contributor" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Opcionalmente, atribua a função Administrador de Acesso do Usuário à identidade.
export appId="<appId>" az role assignment create --assignee $msi_objectid --role "User Access Administrator" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Importante
Se você não atribuir a função Administrador de Acesso do Usuário à identidade gerenciada, não poderá atribuir permissões usando a estrutura de automação.
Criar um registro de aplicativo para o aplicativo Web
A estrutura de implantação de automação do SAP pode aproveitar um Serviço de Aplicativo do Azure para configurar os arquivos de parâmetro tfvars.
Criar o registro de aplicativo.
$ApplicationName="<App Registration Name>" $MSI_objectId="<msi_objectid>" Write-Host "Creating an App Registration for" $ApplicationName -ForegroundColor Green if (Test-Path $manifestPath) { Write-Host "Removing manifest.json" ; Remove-Item $manifestPath } Add-Content -Path manifest.json -Value '[{"resourceAppId":"00000003-0000-0000-c000-000000000000","resourceAccess":[{"id":"e1fe6dd8-ba31-4d61-89e7-88639da4683d","type":"Scope"}]}]' $APP_REGISTRATION_ID = $(az ad app create --display-name $ApplicationName --enable-id-token-issuance true --sign-in-audience AzureADMyOrg --required-resource-access $manifestPath --query "appId" --output tsv) Write-Host "App Registration created with App ID: $APP_REGISTRATION_ID" Write-Host "Waiting for the App Registration to be created" -ForegroundColor Green Start-Sleep -s 20 $ExistingData = $(az ad app list --all --filter "startswith(displayName, '$ApplicationName')" --query "[?displayName=='$ApplicationName']| [0]" --only-show-errors) | ConvertFrom-Json $APP_REGISTRATION_OBJECTID = $ExistingData.id if (Test-Path $manifestPath) { Write-Host "Removing manifest.json" ; Remove-Item $manifestPath } Write-Host "Configuring authentication for the App Registration" -ForegroundColor Green az rest --method POST --uri "https://graph.microsoft.com/beta/applications/$APP_REGISTRATION_OBJECTID/federatedIdentityCredentials\" --body "{'name': 'ManagedIdentityFederation', 'issuer': 'https://login.microsoftonline.com/$ARM_TENANT_ID/v2.0', 'subject': '$MSI_objectId', 'audiences': [ 'api://AzureADTokenExchange' ]}" $API_URL="https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/ProtectAnAPI/appId/$APP_REGISTRATION_ID/isMSAApp~/false" Write-Host "The browser will now open, Please Add a new scope, by clicking the '+ Add a new scope link', accept the default name and click 'Save and Continue'" Write-Host "In the Add a scope page enter the scope name 'user_impersonation'. Choose 'Admins and Users' in the who can consent section, next provide the Admin consent display name 'Access the SDAF web application' and 'Use SDAF' as the Admin consent description, accept the changes by clicking the 'Add scope' button" Start-Process $API_URL Read-Host -Prompt "Once you have created and validated the scope, Press any key to continue"
Criar uma entidade de serviço
A estrutura de implantação da automação do SAP pode usar entidades de serviço para a implantação.
Quando você escolher um nome para sua entidade de serviço, certifique-se de que o nome seja exclusivo em seu locatário do Azure. Use uma conta com permissões de criação de entidades de serviço ao executar o script.
Crie a entidade de serviço com permissões de Colaborador.
export ARM_SUBSCRIPTION_ID="<subscriptionId>" export control_plane_env_code="LAB" az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/$ARM_SUBSCRIPTION_ID" --name="$control_plane_env_code-Deployment-Account"
Examine a saída. Por exemplo:
{ "appId": "<AppId>", "displayName": "<environment>-Deployment-Account ", "name": "<AppId>", "password": "<AppSecret>", "tenant": "<TenantId>" }
Copie os detalhes de saída. Certifique-se de salvar os valores para
appId
,password
, eTenant
.A saída é mapeada para os parâmetros a seguir. Use esses parâmetros em etapas posteriores, com comandos de automação.
Nome de entrada do parâmetro Nome de saída spn_id
appId
spn_secret
password
tenant_id
tenant
Opcionalmente, atribua a função Administrador de acesso do usuário à entidade de serviço.
export appId="<appId>" az role assignment create --assignee $appId --role "User Access Administrator" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Importante
Se você não atribuir a função administrador de acesso do usuário à entidade de serviço, não poderá atribuir permissões usando a estrutura de automação.
Verificações antes do voo
Você pode usar o script a seguir para executar verificações pré-lançamento. O script executa as seguintes verificações e testes:
- Verifica se a entidade de serviço tem as permissões corretas para criar recursos na assinatura.
- Verifica se a entidade de serviço tem permissões de Administrador de acesso do usuário.
- Crie uma Rede Virtual do Azure.
- Cria um cofre de chaves virtual do Azure com um ponto de extremidade privado.
- Cria um compartilhamento NSF de Arquivos do Azure.
- Cria uma Máquina Virtual do Azure com um disco de dados usando o Armazenamento Premium v2.
- Verifica o acesso às URLs necessárias usando a máquina virtual implantada.
$sdaf_path = Get-Location
if ( $PSVersionTable.Platform -eq "Unix") {
if ( -Not (Test-Path "SDAF") ) {
$sdaf_path = New-Item -Path "SDAF" -Type Directory
}
}
else {
$sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
if ( -not (Test-Path $sdaf_path)) {
New-Item -Path $sdaf_path -Type Directory
}
}
Set-Location -Path $sdaf_path
git clone https://github.com/Azure/sap-automation.git
cd sap-automation
cd deploy
cd scripts
if ( $PSVersionTable.Platform -eq "Unix") {
./Test-SDAFReadiness.ps1
}
else {
.\Test-SDAFReadiness.ps1
}
Usar a Estrutura de Automação de Implantação do SAP no Azure DevOps Services
O uso do Azure DevOps simplifica o processo de implantação. O Azure DevOps fornece pipelines que podem ser executados para executar a implantação da infraestrutura e as atividades de configuração e instalação do SAP.
Você pode usar o Azure Repos para armazenar seus arquivos de configuração. O Azure Pipelines fornece pipelines, que podem ser usados para implantar e configurar a infraestrutura e o aplicativo SAP.
Inscreva-se para o Azure DevOps Services
Para usar o Azure DevOps Services, você precisa de uma organização do Azure DevOps. Uma organização é usada para conectar grupos de projetos relacionados. Use sua conta corporativa ou de estudante para conectar automaticamente sua organização ao seu Microsoft Entra ID. Para criar uma conta, abra o Azure DevOps e entre ou crie uma conta.
Criar o ambiente do SAP Deployment Automation Framework com o Azure DevOps
Você pode usar o script a seguir para fazer uma instalação básica do Azure DevOps Services para SAP Deployment Automation Framework.
Abra o ISE do PowerShell, copie o script a seguir e atualize os parâmetros para corresponder ao seu ambiente.
$Env:SDAF_ADO_ORGANIZATION = "https://dev.azure.com/ORGANIZATIONNAME"
$Env:SDAF_ADO_PROJECT = "SAP Deployment Automation Framework"
$Env:SDAF_CONTROL_PLANE_CODE = "MGMT"
$Env:SDAF_WORKLOAD_ZONE_CODE = "DEV"
$Env:SDAF_ControlPlaneSubscriptionID = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$Env:SDAF_WorkloadZoneSubscriptionID = "yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy"
$Env:ARM_TENANT_ID="zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz"
$UniqueIdentifier = Read-Host "Please provide an identifier that makes the service principal names unique, for instance a project code"
$confirmation = Read-Host "Do you want to create a new Application registration (needed for the Web Application) y/n?"
if ($confirmation -eq 'y') {
$Env:SDAF_APP_NAME = $UniqueIdentifier + " SDAF Control Plane"
}
else {
$Env:SDAF_APP_NAME = Read-Host "Please provide the Application registration name"
}
$confirmation = Read-Host "Do you want to create a new Service Principal for the Control plane y/n?"
if ($confirmation -eq 'y') {
$Env:SDAF_MGMT_SPN_NAME = $UniqueIdentifier + " SDAF " + $Env:SDAF_CONTROL_PLANE_CODE + " SPN"
}
else {
$Env:SDAF_MGMT_SPN_NAME = Read-Host "Please provide the Control Plane Service Principal Name"
}
$confirmation = Read-Host "Do you want to create a new Service Principal for the Workload zone y/n?"
if ($confirmation -eq 'y') {
$Env:SDAF_WorkloadZone_SPN_NAME = $UniqueIdentifier + " SDAF " + $Env:SDAF_WORKLOAD_ZONE_CODE + " SPN"
}
else {
$Env:SDAF_WorkloadZone_SPN_NAME = Read-Host "Please provide the Workload Zone Service Principal Name"
}
if ( $PSVersionTable.Platform -eq "Unix") {
if ( Test-Path "SDAF") {
}
else {
$sdaf_path = New-Item -Path "SDAF" -Type Directory
}
}
else {
$sdaf_path = Join-Path -Path $Env:HOMEDRIVE -ChildPath "SDAF"
if ( Test-Path $sdaf_path) {
}
else {
New-Item -Path $sdaf_path -Type Directory
}
}
Set-Location -Path $sdaf_path
if ( Test-Path "New-SDAFDevopsProject.ps1") {
remove-item .\New-SDAFDevopsProject.ps1
}
Invoke-WebRequest -Uri https://raw.githubusercontent.com/Azure/sap-automation/main/deploy/scripts/New-SDAFDevopsProject.ps1 -OutFile .\New-SDAFDevopsProject.ps1 ; .\New-SDAFDevopsProject.ps1
Execute o script e siga as instruções. O script abre janelas do navegador para autenticação e para executar tarefas no projeto do Azure DevOps.
Você pode optar por executar o código diretamente do GitHub ou importar uma cópia do código para o projeto do Azure DevOps.
Para confirmar se o projeto foi criado, acesse o portal do Azure DevOps e selecione o projeto. Verifique se o repositório foi preenchido e se os pipelines foram criados.
Importante
Execute as etapas a seguir em sua estação de trabalho local. Verifique também se você tem a CLI do Azure mais recente instalada, executando o comando az upgrade
.
Para obter mais informações sobre como configurar o Azure DevOps para o SAP Deployment Automation Framework, consulte Configure o Azure DevOps para SAP Deployment Automation Framework.
Criar o ambiente do SAP Deployment Automation Framework sem o Azure DevOps
Você pode executar o SAP Deployment Automation Framework em uma máquina virtual no Azure. As etapas a seguir descrevem como criar o ambiente.
Importante
Verifique se a máquina virtual está usando uma identidade atribuída pelo sistema ou atribuída pelo usuário com permissões na assinatura para criar recursos.
Verifique se a máquina virtual tem os seguintes pré-requisitos instalados:
- Git
- jq
- unzip
- virtualenv (se estiver em execução no Ubuntu)
Você pode instalar os pré-requisitos em uma máquina virtual do Ubuntu usando o seguinte comando:
sudo apt-get install -y git jq unzip virtualenv
Em seguida, você pode instalar os componentes do implantador usando os seguintes comandos:
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
Exemplos
A pasta ~/Azure_SAP_Automated_Deployment/samples
contém um conjunto de arquivos de configuração de exemplo para começar a testar a estrutura de automação da implantação. Você pode copiá-los usando os seguintes comandos:
cd ~/Azure_SAP_Automated_Deployment
cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment