Como automatizar implantações da SAP no Google Cloud com o Terraform

É possível automatizar a implantação da infraestrutura do Google Cloud usando o Terraform, uma ferramenta de código aberto que permite automatizar a criação e o gerenciamento de recursos do Google Cloud. Para mais informações sobre o Terraform, consulte Terraform com o Google Cloud.

Para determinadas soluções SAP e bancos de dados de suporte, como SAP HANA, o Google Cloud fornece arquivos de configuração predefinidos do Terraform que podem ser usados para implantar a infraestrutura do Google Cloud que atende aos requisitos de suporte e às práticas recomendadas da SAP.

Soluções SAP compatíveis

O Google Cloud fornece arquivos de configuração do Terraform para as seguintes soluções SAP:

O que os arquivos de configuração implantam

Todos os arquivos de configuração do Terraform fornecidos pelo Google Cloud para implantações do SAP configuram ou implantam os seguintes elementos:

  • Uma ou mais máquinas virtuais (VMs) do Compute Engine
  • Uma imagem do SO que você especificar
  • Um ou mais discos permanentes ou Hyperdisks
  • Opcionalmente, uma conta de serviço do Gerenciamento de identidade e acesso (IAM) especificada para uso pelas VMs
  • As APIs do Google Cloud exigidas pela implantação do SAP
  • Opcional: as tags de rede para cada instância de VM
  • Opcional: um endereço IP público para cada instância de VM
  • A versão mais recente do agente do Google Cloud para SAP

No SAP HANA, os arquivos de configuração do Terraform também implantam:

  • Volumes de armazenamento para /hana/data, /hana/log, /hana/shared, /usr/sap e /hanabackup
  • Opcionalmente, o próprio sistema SAP HANA
  • Para sistemas de escalonamento horizontal do SAP HANA com failover automático de host, 1 host mestre, até 15 hosts de worker e até 3 hosts de reserva
  • Um cluster de alta disponibilidade do Linux
  • Opcionalmente, para sistemas de escalonamento vertical do SAP HANA, endereços IP estáticos para as instâncias primária e secundária
  • Opcionalmente, para sistemas de escalonamento horizontal do SAP HANA, endereços IP estáticos para os nós mestre, de trabalho e em espera

Os arquivos de configuração do Terraform também são implantados para SAP NetWeaver:

  • Volumes de armazenamento para /sapmnt, /usr/sap e um volume de troca
  • Como opção, um cluster de alta disponibilidade do Linux no SLES

Para clusters de alta disponibilidade (HA, na sigla em inglês), os arquivos de configuração do Terraform também implantam funções e recursos extras, como balanceador de carga interno, grupo de instâncias e regras de encaminhamento. Para mais informações, consulte o guia de implantação para seu cenário de alta disponibilidade.

Configurações do Terraform para cada implantação SAP

Cada configuração predefinida do Terraform para SAP contém um arquivo de configuração declarativa DEPLOYMENT_TYPE.tf.

Para informações sobre os nomes dos arquivos de configuração ou como fazer o download deles, consulte o guia de implantação do seu cenário.

Como concluir o arquivo de configuração do Terraform

Os arquivos de configuração do Terraform fornecidos para implantações do SAP estão em conformidade com os padrões definidos pelo Terraform.

Os arquivos de configuração fornecidos para SAP incluem a definição do módulo principal seguido de comentários que declaram argumentos. O exemplo a seguir é um trecho do arquivo sap_hana.tf para implantar um sistema de escalonamento horizontal do SAP HANA sem nós em espera:

#...
module "sap_hana" {
  source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"
  #
  # By default, this source file uses the latest release of the terraform module
  # for SAP on Google Cloud. To fix your deployments to a specific release
  # of the module, comment out the source property above and uncomment the source property below.
  #
  # source = "https://storage.googleapis.com/cloudsapdeploy/terraform/YYYYMMDDHHMM/terraform/sap_hana/sap_hana_module.zip"
  # ...
  project_id = "example-project-123456"
  zone = "us-central1-f"
  machine_type = "n2-highmem-32"
  subnetwork = "example-subnet-us-central1"
  linux_image = "sles-15-sp2-sap"
  linux_image_project = "suse-sap-cloud"
  # ...
  instance_name = "hana-scaleout"
  # ...
  sap_hana_deployment_bucket = "mybucketname"
  sap_hana_sid = "AB2"
  sap_hana_instance_number = 12
  sap_hana_sidadm_password = "TempPa55word"
  sap_hana_system_password = "TempPa55word"
  sap_hana_scaleout_nodes = 3
  sap_hana_sidadm_uid = 11
  vm_static_ip = "10.0.0.1"
  worker_static_ips = ["10.0.0.2", "10.0.0.3", "10.0.0.4"]
  enable_fast_restart = true
  # ...
}

Para usar os argumentos opcionais, remova o caractere de comentário # e especifique um valor para o argumento. A maioria dos argumentos opcionais tem um valor padrão. Quando você não especifica um argumento opcional, a configuração do Terraform usa o valor padrão desse argumento, se houver.

Para mais informações sobre arquivos de configuração, consulte a documentação da linguagem Terraform.

Controle de versões do módulo

Os arquivos de configuração do Terraform DEPLOYMENT_TYPE.tf que você transfere por download do Google Cloud para implantações do SAP contêm duas instâncias do argumento source: uma que está ativa e outra incluída como um comentário. É possível controlar qual versão do módulo sua configuração usa removendo o caractere de comentário principal, #, a partir desource argumento necessário e adicionando ao que você não precisa.

Por padrão, quando você faz o download de um novo arquivo de configuração do Terraform do Google Cloud para implantações do SAP, o argumento ativo source especifica latest como a versão do módulo, o que significa que, se o Terraform atualizar os arquivos no diretório de trabalho quando você inserir o comando terraform init, sua configuração usará a versão mais recente disponível do módulo do Terraform que o Google Cloud fornece para implantações do SAP.

A segunda instância do argumento source, que, por padrão, é desativada por um caractere # à esquerda, inclui o carimbo de data/hora que identifica a versão do módulo fornecida pelo Google Cloud. No exemplo a seguir, 202309280828 é o carimbo de data/hora que identifica a versão do módulo do Terraform.

#...
module "sap_hana" {
  source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"
  #...
  # source = "https://storage.googleapis.com/cloudsapdeploy/terraform/202309280828/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...

Se você precisar que todas as implantações usem a mesma versão do módulo, no DEPLOYMENT_TYPE.tf, remova o caractere # inicial do argumento source que inclui a versão. timestamp e o adicione ao argumento source que especifica latest como a versão, conforme mostrado no exemplo a seguir:

#...
module "sap_hana" {
  # source = "https://storage.googleapis.com/cloudsapdeploy/terraform/latest/terraform/sap_hana/sap_hana_module.zip"
  #...
  source = "https://storage.googleapis.com/cloudsapdeploy/terraform/202309280828/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...

Quando um carimbo de data/hora é especificado, todas as implantações usam a versão do módulo do Terraform que corresponde ao carimbo de data/hora especificado.

Como implantar vários recursos com um arquivo de configuração

É possível implantar vários sistemas com um único arquivo de configuração adicionando blocos module ao arquivo de configuração para cada sistema extra necessário.

Para implantações SAP, copie o bloco module e cole-o abaixo para criar o novo sistema SAP.

Em cada bloco do módulo, especifique valores exclusivos para qualquer argumento específico da instância, como module ou instance_name.

Aplicar configurações

Para aplicar uma configuração do Terraform, use o comando terraform apply.

Se você quiser visualizar os resultados da configuração antes de implantar recursos do Google Cloud, crie o plano de execução do Terraform usando o comando terraform plan.

Para procedimentos detalhados do aplicativo, consulte o guia de implantação do seu cenário.

Quando o Terraform conclui a aplicação da configuração, no Cloud Shell, ele exibe COMPLETED para cada um dos recursos criados e transmite o controle para o script de shell. O script de shell é invocado como script de inicialização nas VMs implantadas.

O script de shell faz outras configurações nos recursos implantados e registra o progresso no Cloud Logging. Uma implantação do SAP somente será concluída após o término do processamento dos scripts de shell.

Scripts pós-implantação

Use um script pós-implantação para executar outras ações, como acionar a instalação do aplicativo SAP NetWeaver, monitorar agentes etc.

Os scripts pós-implantação são o modo recomendado de personalizar as configurações, porque eles recebem o controle somente depois que a infraestrutura do Google Cloud é configurada de acordo com os requisitos de suporte da SAP.

Para exibir mensagens de status referentes aos scripts pós-implantação, você precisa codificá-los para gravar as mensagens nos registros. Para mais informações, consulte a documentação do Cloud Logging.

O status dos scripts de pós-implantação não está incluído nas mensagens que o Deployment Manager grava no Cloud Shell ou em uma sessão do shell da Google Cloud CLI.

Como receber suporte para as configurações do Terraform

Se você precisar de ajuda para resolver um problema com as configurações do Terraform que o Google Cloud oferece para SAP, colete as informações de diagnóstico necessárias e entre em contato com o Cloud Customer Care.

Para saber mais sobre como receber suporte para problemas com o Terraform, consulte Receber suporte para problemas do Terraform.