Compartilhar via


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:

  1. Baixe e instale o Terraform.
  2. Clone e configure o repositório da estrutura de automação no implantador.
  3. Inicialize o Terraform
  4. 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:

  1. Entre no portal do Azure.

  2. Abra o Azure Cloud Shell.

  3. Verifique se está na assinatura que deseja usar:

    az account list --output=table | grep -i true
    
  4. Se necessário, altere a assinatura ativa para a assinatura que deseja usar.

Baixe o Terraform

Baixe o Terraform no ambiente:

  1. Crie e navegue até um novo diretório, bin.

    mkdir -p ~/bin; cd $_
    
  2. Recupere o binário Terraform adequado. Por exemplo:

    wget  https://releases.hashicorp.com/terraform/0.14.7/terraform_0.14.7_linux_amd64.zip
    
  3. Descompacte o binário Terraform. Por exemplo:

    unzip terraform_0.14.7_linux_amd64.zip
    
  4. Verifique o download do Terraform:

    hash terraform
    
  5. 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.

  1. Clone o repositório do GitHub:

    git clone https://github.com/Azure/sap-automation.git
    
  2. Navegue para a pasta sap-automation.

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. Opcionalmente, verifique uma ramificação diferente da ramificação principal. A ramificação principal do repositório é a ramificação padrão.

    1. Substitua <branch> pelo nome da ramificação ou pelo hash de confirmação que deseja usar.

      git checkout <branch>
      
    2. Verifique se a ramificação está na revisão esperada.

      git rev-parse HEAD
      

Inicializar Terraform

  1. 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 $_
    
  2. 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
    
  3. Inicialize o Terraform.

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_deployer/
    
  4. 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/
    
  5. 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/
    
  6. Observe a saída.

Obter chaves SSH

  1. Usando a saída da implantação do Terraform, observe os valores dos campos a seguir.

    1. Endereço IP público: deployer_public_ip_address.

    2. Nome de usuário do cofre de chaves: deployer_kv_user_name.

    3. Nome do cofre de chaves privadas: deployer_kv_prvt_name.

    4. Nome da chave pública: deployer_public_key_secret_name.

    5. Nome da chave privada: deployer_private_key_secret_name.

  2. Execute o script pós-processamento.

    ./post_deployment.sh
    
  3. Extraia a chave SSH privada:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userE27   \
      --name DEMO-EUS2-DEP00-sshkey     | \
      jq -r .value > sshkey
    
    
  4. Extraia a chave SSH pública:

    az keyvault secret show               \
      --vault-name DEMOEUS2DEP00userF6A   \
      --name DEMO-EUS2-DEP00-sshkey-pub | \
      jq -r .value > sshkey.pub
    
    
  5. 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.

  1. Entrar na CLI do Azure.

    az login
    
  2. 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>"
    
  3. Observe a saída, que contém informações sobre a entidade de serviço. Copie os valores dos seguintes campos:

    1. Identificador do aplicativo: appId.

    2. Senha: password.

    3. Identificador do locatário: tenant.

  4. 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>
    
  5. 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, como DEMO.

    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

  1. 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.

  2. Navegue até onde o repositório da estrutura de automação foi clonado.

    cd  ~/Azure_SAP_Automated_Deployment/sap-automation
    
  3. Opcionalmente, verifique uma ramificação diferente da ramificação principal. A ramificação principal do repositório é a ramificação padrão.

    1. Substitua <branch> pelo nome da ramificação ou pelo hash de confirmação que deseja usar.

      git checkout <branch>
      
    2. Verifique se a ramificação está na revisão esperada.

      git rev-parse HEAD
      
  4. Crie um diretório de trabalho.

    mkdir -p ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY; cd $_
    
  5. 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
    
  6. Inicialize o Terraform.

    terraform init  ../../../sap-automation/deploy/terraform/bootstrap/sap_library/
    
  7. 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
    
    
  8. 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

  1. Siga conectado ao implantador no cliente SSH. Ou entre novamente.

  2. Navegue até o diretório de trabalho criado.

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LOCAL/DEMO-EUS2-DEP00-INFRASTRUCTURE
    
  3. Crie outro arquivo de parâmetro chamado backend. Novamente, siga as convenções de nomenclatura padrão. Em resource_group_name, use o nome do grupo de recursos onde a conta de armazenamento com os arquivos de estado do Terraform (.tfstate) está localizada. Em storage_account_name, substitua <tfstate_storage_account_name> pelo nome da conta de armazenamento da implantação da Biblioteca SAP de arquivos .tfstate. Em key, 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
    
  4. Inicialize o Terraform novamente.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_deployer/
    
  5. Quando receber a solicitação Deseja copiar o estado existente para o novo back-end?, insira yes.

  6. Remova o arquivo de estado local.

    rm terraform.tfstate*
    
  7. 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/
    
  8. 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

  1. Siga conectado ao implantador no cliente SSH. Ou entre novamente.

  2. Navegue até o diretório de trabalho criado.

    cd ~/Azure_SAP_Automated_Deployment/WORKSPACES/LIBRARY/DEMO-EUS2-SAP_LIBRARY
    
  3. Crie outro arquivo de parâmetro chamado backend. Novamente, siga as convenções de nomenclatura padrão. Em resource_group_name, use o nome do grupo de recursos onde a conta de armazenamento com os arquivos de estado do Terraform (.tfstate) está localizada. Em storage_account_name, substitua <tfstate_storage_account_name> pelo nome da conta de armazenamento da implantação da Biblioteca SAP de arquivos .tfstate. Em key, 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
    
  4. Adicione um novo par chave-valor imediatamente após o colchete de abertura ({) do arquivo de parâmetro backend. Em tfstate_resource_id, use o identificador de recurso da conta de armazenamento de arquivos de estado do Terraform. Em deployer_tfstate_key, use o nome da chave do arquivo de estado do implantador. Por exemplo:

    {
        "tfstate_resource_id"                   : "<identifier>",
        "deployer_tfstate_key"                  : "<key>",
        "infrastructure": {
            ...
    }
    
  5. Inicialize o Terraform novamente.

    terraform init  --backend-config backend                                          \
                    ../../../sap-automation/deploy/terraform/run/sap_library/
    
  6. Quando receber a solicitação Deseja copiar o estado existente para o novo back-end?, insira yes.

  7. Remova o arquivo de estado local.

    rm terraform.tfstate*
    
  8. 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/
    
  9. 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.

  1. Siga conectado ao implantador no cliente SSH. Ou entre novamente.

  2. 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 $_
    
  3. Crie um arquivo de parâmetro chamado backend. Em resource_group_name, use o nome do grupo de recursos onde a conta de armazenamento com os arquivos de estado do Terraform (.tfstate) está localizada. Em storage_account_name, substitua <tfstate_storage_account_name> pelo nome da conta de armazenamento da implantação da Biblioteca SAP de arquivos .tfstate. Em key, 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
    
  4. Inicialize o Terraform novamente.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_landscape/
    
  5. 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/
    
  6. 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.

  1. Siga conectado ao implantador no cliente SSH. Ou entre novamente

  2. 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 $_
    
  3. Crie outro arquivo de parâmetro chamado backend. Em resource_group_name, use o nome do grupo de recursos onde a conta de armazenamento com os arquivos de estado do Terraform (.tfstate) está localizada. Em storage_account_name, substitua <tfstate_storage_account_name> pelo nome da conta de armazenamento da implantação da Biblioteca SAP de arquivos .tfstate. Em key, 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
    
  4. 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
    
  5. Inicialize o Terraform novamente.

    terraform init  --backend-config backend                                        \
                    ../../../sap-automation/deploy/terraform/run/sap_system/
    
    
  6. 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/
    
  7. 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 armazenamento sapbits 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

Próximas etapas