Introdução à implantação manual
Junto com a implantação automatizada, também é possível fazer a implantação manual da Estrutura de Automação de Implantação do SAP no Azure. Use este exemplo de configuração e arquivos de parâmetro de exemplo para começar.
Dica
Este guia aborda apenas como executar uma implantação manual. Se quiser começar rapidamente, consulte o guia de implantação automatizado.
Essas etapas fazem referência e usam a convenção de nomenclatura padrão na estrutura de automação. Os valores de exemplo também são usados na nomeação em todo o código. Por exemplo, o nome do implantador é DEMO-EUS2-DEP00-INFRASTRUCTURE
. Neste exemplo, o ambiente é uma demonstração (DEMO
), a região é Leste dos EUA 2 (EUS2
) e a rede virtual do implantador é DEP00
.
Pré-requisitos
- Uma assinatura do Azure. Caso não tenha uma assinatura do Azure, é possível criar uma conta gratuita.
- Uma conta do Azure com privilégios para criar uma entidade de serviço.
- Um download do software SAP no ambiente do Azure.
Instalação do implantador
Antes de começar, verifique se a assinatura do Azure está correta. Em seguida, configure o implantador:
- Baixe e instale o Terraform.
- Clone e configure o repositório da estrutura de automação no implantador.
- Inicialize o Terraform
- Obtenha as chaves SSH para uso no restante da implantação.
Verifique a assinatura do Azure
Verifique se a assinatura adequada do Azure está sendo usada:
Entre no portal do Azure.
Verifique se está na assinatura que deseja usar:
az account list --output=table | grep -i true
Se necessário, altere a assinatura ativa para a assinatura que deseja usar.
Baixe o Terraform
Baixe o Terraform no ambiente:
Crie e navegue até um novo diretório,
bin
.mkdir -p ~/bin; cd $_
Recupere o binário Terraform adequado. Por exemplo:
wget https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
Descompacte o binário Terraform. Por exemplo:
unzip terraform_0.14.7_linux_amd64.zip
Verifique o download do Terraform:
hash terraform
Crie um diretório para a implantação automatizada do SAP.
mkdir -p ~/Azure_SAP_Automated_Deployment; cd $_
Configure o repositório
Clone e configure o repositório da estrutura de automação.
Clone o repositório do GitHub:
git clone https://github.com/Azure/sap-automation.git
Navegue para a pasta
sap-automation
.cd ~/Azure_SAP_Automated_Deployment/sap-automation
Opcionalmente, verifique uma ramificação diferente da ramificação principal. A ramificação principal do repositório é a ramificação padrão.
Substitua
<branch>
pelo nome da ramificação ou pelo hash de confirmação que deseja usar.git checkout <branch>
Verifique se a ramificação está na revisão esperada.
git rev-parse HEAD
Inicializar Terraform
Crie um diretório de trabalho. O nome do diretório deve observar a convenção de nomenclatura padrão. Por exemplo:
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/DEPLOYER/DEMO-EUS2-DEP00-INFRASTRUCTURE; cd $_
Crie o arquivo de parâmetro JSON.
cat <<EOF > DEMO-EUS2-DEP00-INFRASTRUCTURE.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2", "vnets": { "management": { "name" : "DEP00", "address_space" : "10.0.0.0/25", "subnet_mgmt": { "prefix" : "10.0.0.64/28" }, "subnet_fw": { "prefix" : "10.0.0.0/26" } } } }, "options": { "enable_deployer_public_ip" : true }, "firewall_deployment" : true } EOF
Inicialize o Terraform.
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
Crie um plano de execução Terraform que siga a convenção de nomenclatura padrão.
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
Aplique o plano de execução Terraform para implantar os recursos.
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
Observe a saída.
Obter chaves SSH
Usando a saída da implantação do Terraform, observe os valores dos campos a seguir.
Endereço IP público:
deployer_public_ip_address
.Nome de usuário do cofre de chaves:
deployer_kv_user_name
.Nome do cofre de chaves privadas:
deployer_kv_prvt_name
.Nome da chave pública:
deployer_public_key_secret_name
.Nome da chave privada:
deployer_private_key_secret_name
.
Execute o script pós-processamento.
./post_deployment.sh
Extraia a chave SSH privada:
az keyvault secret show \ --vault-name DEMOEUS2DEP00userE27 \ --name DEMO-EUS2-DEP00-sshkey | \ jq -r .value > sshkey
Extraia a chave SSH pública:
az keyvault secret show \ --vault-name DEMOEUS2DEP00userF6A \ --name DEMO-EUS2-DEP00-sshkey-pub | \ jq -r .value > sshkey.pub
Baixe o par de chaves pública e privada. No menu do Cloud Shell, selecione Fazer upload/download de arquivos>Download.
Configuração da entidade de serviço
O implantador usa uma entidade de serviço para implantar recursos em uma assinatura.
Entrar na CLI do Azure.
az login
Crie uma entidade de serviço. Certifique-se de substituir
<subscription-id>
pelo identificador de assinatura do Azure. Substitua também<sp-name>
por um nome da entidade de serviço.az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription-id>" --name="<sp-name>"
Observe a saída, que contém informações sobre a entidade de serviço. Copie os valores dos seguintes campos:
Identificador do aplicativo:
appId
.Senha:
password
.Identificador do locatário:
tenant
.
Crie uma atribuição de função para a entidade de serviço. Certifique-se de substituir
<appId>
pelo identificador de aplicativo anotado na etapa anterior.az role assignment create --assignee <appId> --role "User Access Administrator" --scope /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>
Adicione chaves da entidade de serviço ao cofre de chaves da seguinte maneira. Certifique-se de substituir os valores de espaço reservado pelas informações anotadas nas etapas anteriores. Substitua
<environment>
pelo nome do ambiente, comoDEMO
.az keyvault secret set --name "<environment>-subscription-id" --vault-name "<deployer_kv_user_name>" --value "<subscription-id>"; az keyvault secret set --name "<environment>-tenant-id" --vault-name "<deployer_kv_user_name>" --value "<tenant>"; az keyvault secret set --name "<environment>-client-id" --vault-name "<deployer_kv_user_name>" --value "<appId>"; az keyvault secret set --name "<environment>-client-secret" --vault-name "<deployer_kv_user_name>" --value "<password>";
Configuração da biblioteca
Entre no implantador usando o cliente SSH e as chaves SSH recuperadas durante a instalação do implantador. Se estiver usando o PuTTY como cliente SSH, converta as chaves SSH para o formato
.ppk
antes de usar.Navegue até onde o repositório da estrutura de automação foi clonado.
cd ~/Azure_SAP_Automated_Deployment/sap-automation
Opcionalmente, verifique uma ramificação diferente da ramificação principal. A ramificação principal do repositório é a ramificação padrão.
Substitua
<branch>
pelo nome da ramificação ou pelo hash de confirmação que deseja usar.git checkout <branch>
Verifique se a ramificação está na revisão esperada.
git rev-parse HEAD
Crie um diretório de trabalho.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
Crie o arquivo de configuração JSON.
cat <<EOF > DEMO-EUS2-SAP_LIBRARY.json { "infrastructure": { "environment" : "DEMO", "region" : "eastus2" }, "deployer": { "environment" : "DEMO", "region" : "eastus2", "vnet" : "DEP00" } } EOF
Inicialize o Terraform.
terraform init ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
Crie um plano de execução Terraform que siga a convenção de nomenclatura padrão.
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library
Aplique o plano de execução Terraform para implantar os recursos.
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
Reinicializar implantação
Reinicialize o implantador e a Biblioteca SAP.
Reinicializar o implantador
Siga conectado ao implantador no cliente SSH. Ou entre novamente.
Navegue até o diretório de trabalho criado.
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
Crie outro arquivo de parâmetro chamado
backend
. Novamente, siga as convenções de nomenclatura padrão. Emresource_group_name
, use o nome do grupo de recursos onde a conta de armazenamento com os arquivos de estado do Terraform (.tfstate
) está localizada. Emstorage_account_name
, substitua<tfstate_storage_account_name>
pelo nome da conta de armazenamento da implantação da Biblioteca SAP de arquivos.tfstate
. Emkey
, combine o nome do grupo de recursos do implantador com a extensão.terraform.tfstate
. Por exemplo:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-DEP00-INFRASTRUCTURE.terraform.tfstate" EOF
Inicialize o Terraform novamente.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
Quando receber a solicitação Deseja copiar o estado existente para o novo back-end?, insira
yes
.Remova o arquivo de estado local.
rm terraform.tfstate*
Crie um plano de execução Terraform. Novamente, siga as convenções de nomenclatura padrão. Por exemplo:
terraform plan \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
Aplicar o plano de execução Terraform. Por exemplo:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-DEP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_deployer/
Reinicializar a biblioteca SAP
Siga conectado ao implantador no cliente SSH. Ou entre novamente.
Navegue até o diretório de trabalho criado.
cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
Crie outro arquivo de parâmetro chamado
backend
. Novamente, siga as convenções de nomenclatura padrão. Emresource_group_name
, use o nome do grupo de recursos onde a conta de armazenamento com os arquivos de estado do Terraform (.tfstate
) está localizada. Emstorage_account_name
, substitua<tfstate_storage_account_name>
pelo nome da conta de armazenamento da implantação da Biblioteca SAP de arquivos.tfstate
. Emkey
, combine o nome do grupo de recursos do implantador com a extensão.terraform.tfstate
. Por exemplo:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP_LIBRARY.terraform.tfstate" EOF
Adicione um novo par chave-valor imediatamente após o colchete de abertura (
{
) do arquivo de parâmetrobackend
. Emtfstate_resource_id
, use o identificador de recurso da conta de armazenamento de arquivos de estado do Terraform. Emdeployer_tfstate_key
, use o nome da chave do arquivo de estado do implantador. Por exemplo:{ "tfstate_resource_id" : "<identifier>", "deployer_tfstate_key" : "<key>", "infrastructure": { ... }
Inicialize o Terraform novamente.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_library/
Quando receber a solicitação Deseja copiar o estado existente para o novo back-end?, insira
yes
.Remova o arquivo de estado local.
rm terraform.tfstate*
Crie um plano de execução Terraform. Novamente, siga as convenções de nomenclatura padrão. Por exemplo:
terraform plan \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
Aplicar o plano de execução Terraform. Por exemplo:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP_LIBRARY.json \ ../../../sap-automation/deploy/terraform/run/sap_library/
Implantar rede virtual de carga de trabalho
Em seguida, implante a rede virtual da carga de trabalho do SAP.
Siga conectado ao implantador no cliente SSH. Ou entre novamente.
Crie um diretório de trabalho. Siga as convenções de nomenclatura padrão.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LANDSCAPE/DEMO-EUS2-SAP00-INFRASTRUCTURE; cd $_
Crie um arquivo de parâmetro chamado
backend
. Emresource_group_name
, use o nome do grupo de recursos onde a conta de armazenamento com os arquivos de estado do Terraform (.tfstate
) está localizada. Emstorage_account_name
, substitua<tfstate_storage_account_name>
pelo nome da conta de armazenamento da implantação da Biblioteca SAP de arquivos.tfstate
. Emkey
, combine o nome do grupo de recursos do implantador com a extensão.terraform.tfstate
. Por exemplo:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP00-INFRASTRUCTURE.terraform.tfstate" EOF
Inicialize o Terraform novamente.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Crie um plano de execução Terraform. Novamente, siga as convenções de nomenclatura padrão. Por exemplo:
terraform plan \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Aplicar o plano de execução Terraform. Por exemplo:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-INFRASTRUCTURE.json \ ../../../sap-automation/deploy/terraform/run/sap_landscape/
Unidade de implantação do SAP
Em seguida, configure a unidade de implantação do SAP.
Siga conectado ao implantador no cliente SSH. Ou entre novamente
Crie um diretório de trabalho. Siga as convenções de nomenclatura padrão.
mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/SYSTEM/DEMO-EUS2-SAP00-X00; cd $_
Crie outro arquivo de parâmetro chamado
backend
. Emresource_group_name
, use o nome do grupo de recursos onde a conta de armazenamento com os arquivos de estado do Terraform (.tfstate
) está localizada. Emstorage_account_name
, substitua<tfstate_storage_account_name>
pelo nome da conta de armazenamento da implantação da Biblioteca SAP de arquivos.tfstate
. Emkey
, combine o nome do grupo de recursos do implantador com a extensão.terraform.tfstate
. Por exemplo:cat <<EOF > backend resource_group_name = "DEMO-EUS2-SAP_LIBRARY" storage_account_name = "<tfstate_storage_account_name>" container_name = "tfstate" key = "DEMO-EUS2-SAP00-X00.terraform.tfstate" EOF
Crie um arquivo de parâmetro JSON com parâmetros de entrada da seguinte maneira. Certifique-se de substituir os valores de exemplo pelos seus valores.
cat <<EOF > DEMO-EUS2-SAP00-X00.json { "tfstate_resource_id" : "<resource-id>", "deployer_tfstate_key" : "DEMO-EUS2-DEP00-INFRASTRUCTURE.terraform.tfstate", "landscape_tfstate_key" : "DEMO-EUS2-SAP00-INFRASTRUCTURE.terraform.tfstate", "infrastructure": { "environment" : "DEMO", "region" : "eastus2", "vnets": { "sap": { "name" : "SAP00", "subnet_db": { "prefix" : "0.0.0.0/28" }, "subnet_web": { "prefix" : "0.0.0.0/28" }, "subnet_app": { "prefix" : "0.0.0.0/27" }, "subnet_admin": { "prefix" : "0.0.0.0/27" } } } }, "databases": [ { "platform" : "HANA", "high_availability" : false, "size" : "S4Demo", "os": { "publisher" : "SUSE", "offer" : "sles-sap-12-sp5", "sku" : "gen2", "version" : "latest" } } ], "application": { "enable_deployment" : true, "sid" : "X00", "scs_instance_number" : "00", "ers_instance_number" : "10", "scs_high_availability" : false, "application_server_count" : 3, "webdispatcher_count" : 1, "authentication": { "type" : "key", "username" : "azureadm" } } } EOF
Inicialize o Terraform novamente.
terraform init --backend-config backend \ ../../../sap-automation/deploy/terraform/run/sap_system/
Crie um plano de execução Terraform. Novamente, siga as convenções de nomenclatura padrão. Por exemplo:
terraform plan \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
Aplicar o plano de execução Terraform. Por exemplo:
terraform apply --auto-approve \ --var-file=DEMO-EUS2-SAP00-X00.json \ ../../../sap-automation/deploy/terraform/run/sap_system/
Configuração do Ansible
Defina a configuração executando guias estratégicos do Ansible. Esses guias estratégicos estão localizados no repositório da estrutura de automação em /sap-automation/deploy/ansible
.
Nome de arquivo | Descrição |
---|---|
playbook_01_os_base_config.yaml |
Configuração do SO (sistema operacional) base |
playbook_02_os_sap_specific_config.yaml |
Configuração do SO específico do SAP |
playbook_03_bom_processing.yaml |
Download de software de processamento da BOM (Nota de materiais) do SAP |
playbook_04a_sap_scs_install.yaml |
Instalação dos SCS (serviços centrais do SAP) |
playbook_05a_hana_db_install.yaml |
Instalação do banco de dados SAP HANA |
playbook_06a_sap_dbload.yaml |
Carregador do banco de dados |
playbook_06b_sap_pas_install.yaml |
Instalação do PAS (servidor de aplicativos primário) do SAP |
playbook_06c_sap_app_install.yaml |
Instalação do servidor de aplicativos do SAP |
playbook_06d_sap_web_install.yaml |
Instalação do dispatcher Web do SAP |
playbook_06_00_00_pacemaker.yaml |
Configuração de cluster do Pacemaker |
playbook_06_00_01_pacemaker_scs.yaml |
Configuração do Pacemaker de SCS |
playbook_06_00_03_pacemaker_hana.yaml |
Configuração do Pacemaker de banco de dados SAP HANA |
Para executar um ou vários guias estratégicos, use o comando ansible-playbook
da seguinte maneira. Certifique-se de alterar todos os valores de espaço reservado pelas suas informações:
- Altere
<your-sapbits-path>
para o caminho da conta de armazenamentosapbits
da Biblioteca SAP. - Altere
<azure-admin>
para o nome de usuário do administrador do Azure. - Altere
<ssh-key
> para a chave privada SSH que deseja usar. - Altere outros valores em
--extra-vars
conforme necessário para as configurações.
Se tiver problemas, certifique-se de que fez download do software SAP para o ambiente do Azure.
export ANSIBLE_HOST_KEY_CHECKING=False
# export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=Yes
# export ANSIBLE_KEEP_REMOTE_FILES=1
ansible-playbook \
--inventory new-hosts.yaml \
--user <azure-admin> \
--private-key <ssh-key> \
--extra-vars="{ \
\"bom_base_name\": \"HANA_2_00_053_v001\", \
\"download_templates\": \"false\", \
\"sapbits_location_base_path\": \"<your-sapbits-path>", \
\"target_media_location\": \"/usr/sap/install\", \
\"sap_sid\": \"X00\", \
\"hdb_sid\": \"HDB\" \
}" \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_00_transition_start_for_sap_install_refactor.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_01_os_base_config.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_02_os_sap_specific_config.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_03_bom_processing.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_04a_sap_scs_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_05a_hana_db_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06a_sap_dbload.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06b_sap_pas_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06c_sap_app_install.yaml \
~/Azure_SAP_Automated_Deployment/sap-automation/deploy/ansible/playbook_06d_sap_web_install.yaml