Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O plano de controle é a infraestrutura de implantação do SAP Deployment Automation Framework (SDAF). Ele fornece aos agentes de implantação, armazenamento de estado e gerenciamento de credenciais que a estrutura precisa para provisionar e configurar ambientes SAP no Azure.
Sem um plano de controle, você não pode executar os fluxos de trabalho Terraform e Ansible que implantam zonas e sistemas de carga de trabalho SAP. Configurar o plano de controle é a primeira etapa de implantação na estrutura.
Neste artigo, você prepara as credenciais de implantação, configura os componentes do implantador e da biblioteca SAP e executa os scripts que criam os recursos do plano de controle em sua assinatura do Azure.
Pré-requisitos
- Uma assinatura do Azure. Se você não tiver uma assinatura do Azure, crie uma conta gratuita.
- Permissões para criar princípios de serviço ou identidades gerenciadas para a assinatura.
- CLI do Azure instalada em uma estação de trabalho do Linux ou acesso ao Azure DevOps.
Preparar as credenciais de implantação
SDAF usa identidades gerenciadas (recomendadas) ou entidades de serviço para implementações.
Crie credenciais de autenticação para a implantação do plano de controle. Use uma conta que tenha permissões para criar entidades de serviço.
Para criar um service principal:
az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscriptionID>" --name="<environment>-Deployment-Account"Para criar uma identidade gerenciada:
az identity create --name "<environment>-Deployment-Identity" --resource-group $ResourceGroupName --location $Location --query "{id:id, principalId:principalId, clientId:clientId}" az role assignment create --assignee-object-id <principalId> --role "Contributor" --scope /subscriptions/<subscriptionID>Importante
O nome da entidade de serviço deve ser exclusivo.
Registre os valores de saída do comando:
- ID do aplicativo
- senha
- locatário
Opcionalmente, atribua a função administrador de acesso do usuário à entidade de serviço ou à identidade gerenciada:
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>Para definir o escopo da função para um grupo de recursos específico, use o seguinte comando em vez disso:
az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>
Executar a implantação do plano de controle
Todos os artefatos necessários para implantar o plano de controle estão em repositórios do GitHub. Clone os repositórios para se preparar para a implantação do plano de controle:
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
O arquivo
MGMT-WEEU-DEP00-INFRASTRUCTURE.tfvarsde configuração do implantador de exemplo está na~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTUREpasta.O arquivo
MGMT-WEEU-SAP_LIBRARY.tfvarsde configuração da biblioteca SAP de exemplo está na~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARYpasta.
Você pode copiar os arquivos de configuração de exemplo para começar a testar a estrutura.
Um arquivo Terraform mínimo para o DEPLOYER pode ser semelhante a este exemplo:
# 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 = true
# 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 = true
# 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 = false
Observe os locais de arquivo da variável Terraform para edições futuras durante a implantação.
Um arquivo Terraform mínimo para o LIBRARY pode ser semelhante a este exemplo:
# 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 = true
Observe os locais de arquivo da variável Terraform para edições futuras durante a implantação.
Execute o comando a seguir para criar o implantador e a biblioteca SAP. O comando adiciona os detalhes da entidade de serviço ao cofre de chaves de implantação.
Defina as variáveis de ambiente para a identidade gerenciada:
export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export ARM_CLIENT_ID="<managedIdentityAppId>"
export ARM_TENANT_ID="<tenantId>"
Defina as variáveis de ambiente para a entidade de serviço:
export ARM_SUBSCRIPTION_ID="<subscriptionId>"
export ARM_CLIENT_ID="<appId>"
export ARM_CLIENT_SECRET="<password>"
export ARM_TENANT_ID="<tenantId>"
Execute o seguinte comando para implantar o plano de controle:
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 --identity --client-id "${ARM_CLIENT_ID}"
# Uncomment next line for service principal based login
# 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"
#When using managed identity use:
${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}" \
--msi
#When using a service principal use:
${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}"
Configurar manualmente uma máquina virtual
Para se conectar ao implantador:
Entre no portal do Azure.
Vá para o grupo de recursos que contém a VM (máquina virtual) do implantador.
Conecte-se à VM usando o Azure Bastion. O nome de usuário padrão é azureadm.
Selecione Chave Privada SSH no Azure Key Vault.
Selecione a assinatura que contém o plano de controle.
Selecione o cofre de chaves do implantador.
Na lista de segredos, escolha o segredo que termina com -sshkey.
Conectar-se à VM.
Para configurar o implantador, execute o seguinte 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
O script instala o Terraform e o Ansible e configura o implantador.
Proteger o plano de controle
O plano de controle é a parte mais crítica do SDAF. Se você criou seu plano de controle usando uma VM externa ou Cloud Shell, proteja-o implementando pontos de extremidade privados para as contas de armazenamento e cofres de chaves.
Entre na VM do implantador e copie os arquivos de configuração do painel de controle usando o
sync_deployer.shscript:cd ~/Azure_SAP_Automated_Deployment/WORKSPACES ../sap-automation/deploy/scripts/sync_deployer.sh --storageaccountname mgtneweeutfstate### --state_subscription xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxDefina a variável
use_private_endpointparatruenos arquivos de configuraçãoDEPLOYEReLIBRARY. Além disso, definapublic_network_access_enabledparafalsenos arquivos de configuraçãoDEPLOYER.# Defines that the storage accounts and key vaults have private endpoints enabled use_private_endpoint = true # Controls if storage account and key vaults have public network access enabled public_network_access_enabled = falseExecute novamente a implantação do plano de controle para habilitar pontos de extremidade privados para as contas de armazenamento e os cofres de chaves:
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
Preparar o aplicativo Web
Esta etapa é opcional. Se você quiser que uma interface do usuário baseada em navegador ajude a configurar zonas e sistemas de carga de trabalho SAP, execute os comandos a seguir antes de implantar o plano de controle.
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