Introdução ao SAP Deployment Automation Framework
Comece rapidamente com o SAP Deployment Automation Framework.
Pré-requisitos
Para começar a usar o SAP Deployment Automation Framework, você precisa:
- Uma subscrição do Azure. Se não tiver uma subscrição do Azure, pode 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 S-User, consulte SAP S-User.
- Uma instalação da CLI do Azure.
- Uma Identidade Atribuída (MS) 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 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 podem já estar instalados em seu ambiente de implantação. O Azure Cloud Shell e o implantador vêm com o Terraform e a CLI do Azure instalados.
Criar um principal de serviço
A estrutura de implantação de automação SAP usa entidades de serviço para implantação.
Ao escolher um nome para sua entidade de serviço, verifique se o nome é exclusivo em seu locatário do Azure. Certifique-se de usar 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"
Reveja a saída. Por exemplo:
{ "appId": "<AppId>", "displayName": "<environment>-Deployment-Account ", "name": "<AppId>", "password": "<AppSecret>", "tenant": "<TenantId>" }
Copie os detalhes da saída. Certifique-se de salvar os valores de
appId
,password
eTenant
.A saída é mapeada para os seguintes parâmetros. Você usa esses parâmetros em etapas posteriores, com comandos de automação.
Nome de entrada do parâmetro Nome da saída spn_id
appId
spn_secret
password
tenant_id
tenant
Opcionalmente, atribua a função de Administrador de Acesso de 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 de Administrador de Acesso de Usuário à entidade de serviço, não poderá atribuir permissões usando a estrutura de automação.
Criar uma Identidade atribuída ao usuário
A estrutura de implantação de automação SAP também pode usar uma identidade atribuída ao usuário (MSI) para a implantação. Certifique-se de usar 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>
Reveja 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 da saída.
A saída é mapeada para os seguintes parâmetros. Você usa esses parâmetros em etapas posteriores, com comandos de automação.
Nome de entrada do parâmetro Nome da saída app_id
appId
msi_id
armId
Atribua a função de Colaborador à identidade.
export appId="<appId>" az role assignment create --assignee $appId --role "Contributor" --scope /subscriptions/$ARM_SUBSCRIPTION_ID
Opcionalmente, atribua a função de Administrador de Acesso de Usuário à identidade.
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 de Administrador de Acesso de Usuário à identidade gerenciada, 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 antes do voo. 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.
- Crie um Cofre de Chave Virtual do Azure com ponto de extremidade privado.
- Crie um compartilhamento NSF de Arquivos do Azure.
- Crie uma Máquina Virtual do Azure com disco de dados usando o Armazenamento Premium v2.
- Verifique 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 o SAP Deployment Automation Framework dos Serviços de DevOps do Azure
Usar o Azure DevOps simplifica o processo de implantação. O Azure DevOps fornece pipelines que você pode executar 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 nos Serviços de DevOps do Azure
Para usar os Serviços de DevOps do Azure, você precisa de uma organização de DevOps do Azure. Uma organização é usada para conectar grupos de projetos relacionados. Utilize a sua conta escolar ou profissional para ligar automaticamente a sua organização à sua ID do Microsoft Entra. Para criar uma conta, abra o Azure DevOps e entre ou crie uma nova 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 for 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 execução de tarefas no projeto Azure DevOps.
Você pode optar por executar o código diretamente do GitHub ou pode importar uma cópia do código para seu projeto de DevOps do Azure.
Para confirmar que o projeto foi criado, vá para o portal do Azure DevOps e selecione o projeto. Certifique-se de que o repositório foi preenchido e que os pipelines foram criados.
Importante
Execute os seguintes passos na estação de trabalho local. Certifique-se também de ter a CLI do Azure mais recente instalada executando o az upgrade
comando.
Para obter mais informações sobre como configurar o Azure DevOps for SAP Deployment Automation Framework, consulte Configure Azure DevOps for SAP Deployment Automation Framework.
Criar o ambiente do SAP Deployment Automation Framework sem o Azure DevOps
Você pode executar o SAP Deployment Automation Framework a partir de 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 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
- descompactar
- virtualenv (se estiver rodando no Ubuntu)
Você pode instalar os pré-requisitos em uma máquina virtual Ubuntu usando o seguinte comando:
sudo apt-get install -y git jq unzip virtualenv
Em seguida, você pode instalar os componentes do deployer 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 ~/Azure_SAP_Automated_Deployment/samples
pasta contém um conjunto de arquivos de configuração de exemplo para começar a testar a estrutura de automação de implantação. Você pode copiá-los usando os seguintes comandos:
cd ~/Azure_SAP_Automated_Deployment
cp -Rp samples/Terraform/WORKSPACES ~/Azure_SAP_Automated_Deployment