Implantar o plano de controle

A implantação do plano de controle para o SAP Deployment Automation Framework consiste em:

  • Implantador
  • Biblioteca SAP

Diagram that shows the control plane.

Preparar as credenciais de implantação

O SAP Deployment Automation Framework usa entidades de serviço para implantações. Para criar uma entidade de serviço para a implantação do plano de controle, use uma conta que tenha permissões para criar entidades de serviço:

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

Importante

O nome da entidade de serviço deve ser exclusivo.

Registre os valores de saída do comando:

  • appId
  • password
  • locatário

Opcionalmente, atribua as seguintes permissões à entidade de serviço:

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

Se você quiser fornecer a função de Administrador de Acesso de Usuário com escopo somente para o grupo de recursos, use o seguinte comando:


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

Implantar o plano de controle

Todos os artefatos necessários para implantar o plano de controle estão localizados em repositórios do GitHub.

Prepare-se para a implantação do plano de controle clonando os repositórios usando os seguintes comandos:

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.tfvars de configuração do implementador de exemplo está localizado na ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/DEPLOYER/MGMT-WEEU-DEP00-INFRASTRUCTURE pasta.

O arquivo MGMT-WEEU-SAP_LIBRARY.tfvars de configuração da ~/Azure_SAP_Automated_Deployment/samples/Terraform/WORKSPACES/LIBRARY/MGMT-WEEU-SAP_LIBRARY biblioteca SAP de exemplo está localizado na pasta.

Você pode copiar os arquivos de configuração de exemplo para começar a testar a estrutura de automação da implantação.

Um arquivo Terraform mínimo para o DEPLOYER pode se parecer com 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 = 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

Observe os locais de arquivo de variáveis da Terraform para edições futuras durante a implantação.

Um arquivo Terraform mínimo para o LIBRARY pode se parecer com 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 = false

Observe os locais de arquivo de variáveis da Terraform para edições futuras durante a implantação.

Execute o comando a seguir para criar o implementador e a biblioteca SAP. O comando adiciona os detalhes da entidade de serviço ao cofre da chave de implantação.

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 comando a seguir para implantar o painel 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 --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}"

Configurar manualmente uma máquina virtual como um implantador SDAF usando o Bastião do Azure

Para se conectar ao implantador:

  1. Entre no portal do Azure.

  2. Vá para o grupo de recursos que contém a máquina virtual (VM) do implantador.

  3. Conecte-se à VM usando o Bastião do Azure.

  4. O nome de usuário padrão é azureadm.

  5. Selecione chave privada SSH no Azure Key Vault.

  6. Selecione a assinatura que contém o painel de controle.

  7. Selecione o cofre de chaves do implantador.

  8. Na lista de segredos, escolha o segredo que termina com -sshkey.

  9. Conectar-se à VM.

Execute o seguinte script para configurar o implementador:


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.

Configurar manualmente uma máquina virtual como um implantador SDAF

Conecte-se à VM do implantador de um computador que possa acessar a rede virtual do Azure.

Para se conectar ao implantador:

  1. Entre no portal do Azure.

  2. Selecione ou pesquise cofres de chaves.

  3. Na página Cofre de chaves, localize o cofre de chaves do implantador. O nome começa com MGMT[REGION]DEP00user. Filtre pelo grupo de recursos ou Local, se necessário.

  4. Na seção Configurações no painel esquerdo, selecione Segredos.

  5. Localize e selecione o segredo que contém sshkey. Pode se parecer com MGMT-[REGION]-DEP00-sshkey.

  6. Na página do segredo, selecione a versão atual. Em seguida, copie o valor Secret.

  7. Abra um editor de texto sem formatação. Copiar o valor do segredo.

  8. Salve o arquivo no local onde você mantém as chaves SSH. Um exemplo é C:\Users\<your-username>\.ssh.

  9. Salve o arquivo. Se você for solicitado a Salvar como tipo, selecione Todos os arquivos se o SSH não for uma opção. Por exemplo, use deployer.ssh.

  10. Conecte-se à VM do implementador por meio de qualquer cliente SSH, como o Visual Studio Code. Use o endereço IP privado do implantador e a chave SSH que você baixou. Para obter instruções sobre como se conectar ao implantador usando Visual Studio Code, confira Conectar-se ao implantador usando Visual Studio Code. Se você estiver usando o PuTTY, converta o arquivo de chave SSH primeiro usando PuTTYGen.

Observação

O nome de usuário padrão é azureadm.

Configure o implantador usando 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.

Protegendo o plano de controle

O plano de controle é a parte mais crítica da estrutura de automação SAP. É importante proteger o plano de controle. As etapas a seguir ajudam você a proteger o plano de controle. Se você tiver criado seu plano de controle usando uma máquina virtual externa ou usando o shell de nuvem, deverá proteger o plano de controle implementando pontos de extremidade privados para as contas de armazenamento e cofres de chaves.

Você pode usar o sync_deployer.sh script para copiar os arquivos de configuração do plano de controle para a VM do implementador. Entre na VM do implantador e execute os seguintes comandos:


cd ~/Azure_SAP_Automated_Deployment/WORKSPACES

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

Certifique-se de que a variável esteja definida como nos arquivos de use_private_endpoint configuração e LIBRARY .DEPLOYERtrue Verifique também se está public_network_access_enabled definido como false nos arquivos de DEPLOYER configuração.


# 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

Execute 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 UX baseada em navegador ajude na configuração de 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

Próxima etapa