Automatiser les déploiements SAP sur Google Cloud avec Terraform

Vous pouvez automatiser le déploiement de l'infrastructure Google Cloud en utilisant Terraform, un outil Open Source qui vous permet d'automatiser la création et la gestion de ressources Google Cloud. Pour plus d'informations sur Terraform, consultez la page Terraform avec Google Cloud.

Pour certaines solutions SAP et bases de données associées, telles que SAP HANA, Google Cloud fournit des fichiers de configuration Terraform prédéfinis que vous pouvez utiliser pour déployer une infrastructure Google Cloud respectant les bonnes pratiques et les exigences de compatibilité de SAP.

Solutions SAP compatibles

Google Cloud fournit des fichiers de configuration Terraform pour les solutions SAP suivantes :

Éléments déployés par les fichiers de configuration

Tous les fichiers de configuration Terraform fournis par Google Cloud pour les déploiements SAP configurent ou déploient les éléments suivants :

  • Une ou plusieurs machines virtuelles (VM) Compute Engine
  • Une image d'OS que vous spécifiez
  • Un ou plusieurs volumes Persistent Disk ou Hyperdisk
  • Éventuellement, un compte de service de gestion de l'authentification et des accès (IAM) que vous spécifiez en vue de son utilisation par les VM
  • Les API Google Cloud requises par le déploiement SAP
  • Éventuellement, des tags réseau pour chaque instance de VM
  • Éventuellement, une adresse IP externe pour chaque instance de VM
  • La dernière version de l'agent Google Cloud pour SAP.

Pour SAP HANA, les fichiers de configuration Terraform déploient également les éléments suivants :

  • Des volumes de stockage pour /hana/data, /hana/log, /hana/shared, /usr/sap et /hanabackup
  • Éventuellement, le système SAP HANA lui-même
  • Pour les systèmes SAP HANA à scaling horizontal avec basculement automatique des hôtes, un hôte maître, jusqu'à 15 nœuds de calcul et jusqu'à trois hôtes de secours
  • Un cluster Linux à haute disponibilité
  • Éventuellement, pour les systèmes SAP HANA à évolutivité verticale, les adresses IP statiques pour les instances principale et secondaire
  • Éventuellement, pour les systèmes SAP HANA à scaling horizontal, les adresses IP statiques pour les nœuds maîtres, de nœud de calcul et de secours

Pour SAP NetWeaver, les fichiers de configuration Terraform déploient également les éléments suivants :

  • Des volumes de stockage pour /sapmnt, /usr/sap et un volume d'échange
  • Éventuellement, un cluster Linux à haute disponibilité sur SLES

Pour les clusters à haute disponibilité, les fichiers de configuration Terraform déploient également des fonctions et des fonctionnalités supplémentaires telles que l'équilibreur de charge interne, le groupe d'instances et les règles de transfert. Pour plus d'informations, consultez le guide de déploiement pour votre scénario à haute disponibilité.

Configurations Terraform pour chaque déploiement SAP

Chaque configuration Terraform prédéfinie pour SAP contient un fichier de configuration déclaratif DEPLOYMENT_TYPE.tf.

Pour en savoir plus sur les noms de fichier de configuration ou sur la manière de les télécharger, consultez le guide de déploiement pour votre scénario.

Compléter le fichier de configuration Terraform

Les fichiers de configuration Terraform fournis pour les déploiements SAP sont conformes aux standards définis par Terraform.

Les fichiers de configuration fournis pour SAP incluent la définition principale du module, suivie de commentaires qui déclarent des arguments. L'exemple suivant est un extrait du fichier sap_hana.tf permettant de déployer un système SAP HANA à scaling horizontal sans nœuds de secours :

#...
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
  # ...
}

Pour utiliser les arguments facultatifs, supprimez le caractère de commentaire # et spécifiez une valeur pour l'argument. La plupart des arguments facultatifs ont une valeur par défaut. Lorsque vous ne spécifiez pas d'argument facultatif, la configuration Terraform utilise la valeur par défaut de cet argument, le cas échéant.

Pour en savoir plus sur les fichiers de configuration, consultez la documentation sur le langage Terraform.

Gestion des versions des modules

Les fichiers de configuration Terraform DEPLOYMENT_TYPE.tf que vous téléchargez à partir de Google Cloud pour les déploiements SAP contiennent deux instances de l'argument source : l'une active et l'autre incluse en tant que commentaire. Vous pouvez contrôler la version du module utilisé par votre configuration en supprimant le caractère de commentaire initial # de l'argument source dont vous avez besoin et en l'ajoutant à celui que vous n'utilisez pas.

Par défaut, lorsque vous téléchargez un nouveau fichier de configuration Terraform à partir de Google Cloud pour les déploiements SAP, l'argument source actif spécifie latest comme version de module, ce qui signifie que si Terraform actualise les fichiers de votre répertoire de travail lorsque vous saisissez la commande terraform init, votre configuration utilise la dernière version disponible du module Terraform fourni par Google Cloud pour les déploiements SAP.

La deuxième instance de l'argument source, qui est désactivée par défaut par un caractère de début #, inclut l'horodatage qui identifie la version du module fourni par Google Cloud. Par exemple, dans l'exemple suivant, 1.3.674800406 est l'horodatage qui identifie la version du module 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/1.3.674800406/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...

Si tous vos déploiements doivent utiliser la même version de module, dans le fichier DEPLOYMENT_TYPE.tf, supprimez le caractère de début # de l'argument source qui inclut l'horodatage de la version et ajoutez-le à l'argument source qui spécifie latest comme version, comme illustré dans l'exemple suivant :

#...
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/1.3.674800406/terraform/sap_hana/sap_hana_module.zip"
  #...
  # arguments...
  #...}

Lorsqu'un horodatage est spécifié, tous les déploiements utilisent la version du module Terraform correspondant à l'horodatage spécifié.

Déployer plusieurs systèmes avec un seul fichier de configuration

Vous pouvez déployer plusieurs systèmes à l'aide d'un seul fichier de configuration Terraform. Pour ce faire, ajoutez des blocs module au fichier de configuration pour chaque système supplémentaire que vous devez déployer.

Pour les déploiements SAP, copiez la définition de bloc module fournie par Google Cloud et collez-la dans l'ordre approprié dans votre fichier de configuration.

Dans chaque bloc de module, veillez à spécifier des valeurs uniques pour tous les arguments spécifiques à l'instance, tels que module ou instance_name.

Appliquer des configurations

Vous appliquez une configuration Terraform à l'aide de la commande terraform apply.

Si vous souhaitez prévisualiser les résultats de la configuration avant de déployer réellement des ressources Google Cloud, créez le plan d'exécution Terraform à l'aide de la commande terraform plan.

Pour obtenir des procédures d'application détaillées, consultez le guide de déploiement pour votre scénario.

Une fois que Terraform a terminé d'appliquer votre configuration, dans Cloud Shell, Terraform affiche COMPLETED pour chacune des ressources qu'il crée et passe le contrôle au script shell. Le script shell est appelé en tant que script de démarrage sur les VM déployées.

Le script shell poursuit la configuration des ressources déployées et enregistre sa progression dans Cloud Logging. Un déploiement SAP n'est pas terminé tant que les scripts shell n'ont pas fini leur traitement.

Scripts post-déploiement

Vous pouvez utiliser un script post-déploiement pour effectuer des actions supplémentaires, comme déclencher l'installation de votre application SAP NetWeaver, celle des agents de surveillance, etc.

Les scripts post-déploiement sont recommandés pour personnaliser votre configuration, car ils n'obtiennent le contrôle qu'une fois l'infrastructure Google Cloud configurée conformément aux exigences de compatibilité de SAP.

Pour afficher les messages d'état des scripts post-déploiement, vous devez coder les scripts pour écrire les messages dans les journaux. Pour en savoir plus, consultez la documentation Cloud Logging.

L'état des scripts post-déploiement n'est pas inclus dans les messages que Terraform écrit dans Cloud Shell ou une session de shell de Google Cloud CLI local.

Obtenir de l'aide pour les configurations Terraform

Si vous avez besoin d'aide pour résoudre un problème lié aux configurations Terraform fournies par Google Cloud pour SAP, rassemblez les informations de diagnostic requises et contactez Cloud Customer Care.

Pour obtenir de l'aide sur les problèmes liés à Terraform, consultez la page Obtenir de l'aide pour résoudre les problèmes liés à Terraform.