Configurer les modules Terraform

Les ressources de gestion de réseau nécessaires pour héberger les applications SaaS à locataire unique sur Oracle Cloud sont définies dans les modules Terraform. Téléchargez les modules et définissez les variables requises.

Télécharger le code Terraform

Le code Terraform de cette solution est disponible sur GitHub.

  1. Dans le volet de navigation de gauche, cliquez sur Télécharger le code.
  2. Cliquez sur Référentiel Git.
  3. Clonez ou téléchargez le référentiel sur votre ordinateur local.

A propos du code Terraform

Le code Terraform de cette solution est organisé en plusieurs modules contenant chacun les ressources d'un composant spécifique de la topologie cible.

Le code Terraform contient les répertoires et fichiers suivants, au niveau supérieur :
  • chef : ce répertoire contient les recettes Chef d'installation et de configuration des passerelles de routage.
  • examples : ce répertoire contient le code Terraform requis pour implémenter cette solution. Le code figurant dans ce répertoire utilise les modules définis dans le répertoire modules.
  • LICENSE.txt : ce fichier contient les conditions générales de la licence pour l'exemple de code.
  • modules : ce répertoire contient les modules Terraform qui fournissent les blocs de création de la solution.
  • README.md : ce fichier fournit une brève description du code et des instructions de base permettant d'utiliser ce code.
  • test : ce répertoire contient des scripts de test que vous pouvez utiliser pour vérifier le déploiement.
Le répertoire examples/full-deployment contient le code qui appelle les modules Terraform requis pour cette solution. Il contient les sous-répertoires et fichiers suivants :
examples/full-deployment
├── common
│   ├── compartments
│   └── configuration
├── Makefile
├── management
│   ├── access
│   ├── network
│   ├── server_attachment
│   └── servers
├── peering
│   ├── network
│   └── routing
├── README.md
├── tenant
│   ├── network
│   └── servers
├── terraform.tfvars.sample
└── terragrunt.hcl
Répertoire ou fichier de configuration Ressources définies dans la configuration
common/configuration Aucun.

Le code de cet annuaire utilise le module Terraform dans examples/network_calculator pour calculer le nombre de réseaux cloud virtuels de locataire et de réseaux cloud virtuels d'appairage requis, la taille CIDR de chaque VCN et le mappage entre les réseaux cloud virtuels de locataire et les réseaux cloud virtuels d'appairage. Les résultats du calcul sont utilisés lorsque les réseaux cloud virtuels et d'autres ressources réseau sont créés.

common/compartments
  • Compartiment de gestion.
  • Catégories pour les réseaux cloud virtuels d'appairage.
  • Compartiment pour chaque locataire.
management/access Instance de calcul Oracle Linux attachée à un sous-réseau public dans une instance VCN ISV. Cette instance est le serveur de base de la topologie.
management/network
  • ISV VCN, également appelé VCN de gestion.
  • Passerelle NAT et Internet pour ISV VCN.
  • Les sous-réseaux suivants :
    • Sous-réseau de gestion privé pour le serveur de gestion.
    • Sous-réseau d'accès public pour le serveur de base.
    • Sous-réseau appairage privé pour les passerelles de routage
  • Table de routage par défaut de VCN avec une règle pour acheminer le trafic lié à l'Internet public via la passerelle Internet.
  • Table de routage du sous-réseau appairage, avec une règle pour acheminer le trafic lié à l'Internet public via la passerelle NAT.
  • Liste de sécurité pour le sous-réseau d'accès, avec les règles suivantes :
    • Autoriser le trafic ICMP entrant à partir de n'importe quelle source.
    • Autoriser le trafic TCP sortant lié pour toute destination.
  • Liste de sécurité du sous-réseau appairage, avec les règles suivantes :
    • Autoriser le trafic TCP sortant lié pour toute destination.
    • Autoriser le trafic ICMP entrant à partir de n'importe quelle source.
    • Autorisez le trafic TCP entrant de n'importe quelle source vers le port 5666.
  • Liste de sécurité pour le sous-réseau de gestion, avec les règles suivantes :
    • Autoriser le trafic ICMP entrant à partir du sous-réseau d'accès.
    • Autorisez le trafic HTTP entrant entre le sous-réseau d'accès et le port 80.
    • Autoriser le trafic TCP sortant lié pour toute destination.
management/server_attachment
  • Une table de routage associée au sous-réseau de gestion, avec les règles suivantes :
    • Acheminer le trafic lié à l'Internet public via la passerelle NAT.
    • Routage du trafic lié pour chacun des réseaux cloud virtuels de locataire vers l'instance de passerelle de routage appropriée.
  • Une table de routage associée au sous-réseau d'accès, avec les règles suivantes :
    • Routage du trafic lié au réseau Internet public via la passerelle Internet.
    • Routage du trafic lié pour chacun des réseaux cloud virtuels de locataire vers l'instance de passerelle de routage appropriée.
management/servers Instance de calcul Oracle Linux associée au sous-réseau de gestion dans la plate-forme ISV VCN.

Vous pouvez utiliser le serveur de gestion pour installer et exécuter une application de surveillance d'infrastructure, telle que Nagios Core.

peering/network
  • Groupe dynamique composé d'instances de calcul qui hébergent les passerelles de routage.
  • Stratégie qui permet au groupe dynamique défini dans cette configuration d'utiliser les VNIC et les adresses privées dans le compartiment.
  • Deux réseaux cloud virtuels appairés, avec un sous-réseau dans chaque instance VCN.
  • Une passerelle d'appairage local (LPG) pour chaque instance VCN.
  • Liste de sécurité de chaque sous-réseau, avec des règles pour autoriser l'ensemble du trafic ICMP entrant et de tout le trafic TCP sortant.
  • Une table de routage pour chaque sous-réseau, avec des règles pour acheminer le trafic lié à chaque locataire VCN via l'instruction LPG de l'appairage VCN approprié.
peering/routing
  • Deux passerelles de routage :
    • Une passerelle est une paire d'instances de calcul, chacune dans un domaine de pannes différent, sur laquelle Pacemaker est installé afin d'activer la haute disponibilité. Chaque instance de calcul dispose de deux VNIC secondaires, chacune étant associée à une adresse IP flottante à la première VNIC secondaire. Cette passerelle est conçue pour illustrer le basculement HA pour la passerelle de routage.
    • L'autre passerelle est une instance de calcul unique.
  • Groupe de sécurité réseau avec les règles suivantes :
    • Autorisez à tous les trafics TCP du groupe les ports 3121, 2224 et 21064.
    • Autorisez l'ensemble du trafic UDP au sein du groupe à port 4505.
tenant/network Les ressources suivantes pour chaque locataire :
  • Un VCN de locataire.
  • Passerelle NAT et Internet du locataire VCN.
  • Deux sous-réseaux, un public et l'autre privés.
  • LPG pour VCN.
  • Une table de routage pour le sous-réseau public, avec les règles suivantes :
    • Routage du trafic lié au réseau Internet public via la passerelle Internet.
    • Acheminer le trafic lié au sous-réseau appairage via la partition LPG.
    • Acheminez le trafic lié au sous-réseau de gestion via la partition LPG.
  • Une table de routage pour le sous-réseau privé, avec les règles suivantes :
    • Acheminer le trafic lié à l'Internet public via la passerelle NAT.
    • Acheminer le trafic lié au sous-réseau appairage via la partition LPG.
    • Acheminez le trafic lié au sous-réseau de gestion via la partition LPG.
  • Liste de sécurité pour le sous-réseau public, avec les règles suivantes :
    • Autoriser le trafic ICMP entrant à partir de n'importe quelle destination.
    • Autoriser le trafic TCP sortant vers n'importe quelle destination.
  • Liste de sécurité pour le sous-réseau privé, avec les règles suivantes :
    • Autoriser le trafic ICMP entrant à partir de n'importe quelle destination.
    • Autoriser le trafic TCP sortant vers n'importe quelle destination.
    • Autorisez le trafic TCP entrant sur le port 5666.
tenant/servers Instance de calcul Oracle Linux dans chacun des compartiments de locataire.

Vous pouvez utiliser cette instance pour installer et exécuter un agent de surveillance d'infrastructure. Par exemple, si vous installez Nagios Core sur le serveur de gestion de l'ISV VCN, vous pouvez installer l'agent Nagios dans l'instance de calcul de chaque compartiment de locataire. L'agent peut surveiller les serveurs dans le compartiment et envoyer les mesures au serveur de surveillance Nagios.

terraform.tfvars.sample Modèle pour le fichier de variables Terraform.
terragrunt.hcl Configuration de Terragrunt.

Définir les variables Terraform

Indiquez les paramètres obligatoires pour que Terraform se connecte à la location Oracle Cloud Infrastructure, aux clés SSH pour les instances de calcul et le mot de passe pour le cluster de routage.

  1. Copiez examples/full-deployment/terraform.tfvars.sample dans examples/full-deployment/terraform.tfvars.
  2. Ouvrez examples/full-deployment/terraform.tfvars dans un éditeur de texte brut et définissez les valeurs des variables qu'il contient comme suit :
    Variable Description
    tenancy_ocid OCID de votre location.

    L'OCID de votre location est disponible dans la console Web Oracle Cloud Infrastructure. Sélectionnez Administration dans le menu Services, puis cliquez sur Détails de location.

    user_ocid OCID de l'utilisateur que Terraform doit utiliser pour l'authentification auprès d'Oracle Cloud Infrastructure.

    Pour trouver l'OCID de l'utilisateur, sélectionnez Identité dans le menu Services, puis Utilisateurs. Localisez votre nom utilisateur dans la liste et copiez son OCID.

    fingerprint Empreinte de la clé de signature d'API que vous avez téléchargée.
    private_key_path Nom et chemin complet du fichier contenant la clé de signature de l'API privée.
    zone ID de la région dans laquelle vous souhaitez créer les ressources.

    Par exemple, l'ID de la région Est des Etats-Unis (Ashburn) est us-ashburn-1.

    Reportez-vous à Régions et domaines de disponibilité.

    compartment_ocid OCID du compartiment dans lequel créer les ressources.

    Le compartiment indiqué sera le compartiment parent de la topologie.

    Pour trouver l'OCID d'un compartiment, sélectionnez Identité dans le menu Services, puis Catégories. Localisez le compartiment dont vous avez besoin dans la liste et copiez son OCID.

    bastion_ssh_public_key_file Chemin d'accès complet et nom du fichier contenant la clé publique SSH du serveur de base.
    bastion_ssh_private_key_file Chemin complet et nom du fichier contenant la clé privée SSH pour le serveur de base.
    remote_ssh_public_key_file Chemin complet et nom du fichier contenant la clé publique SSH pour les instances de calcul privées de la topologie.
    remote_ssh_private_key_file Chemin complet et nom du fichier contenant la clé privée SSH pour les instances de calcul privées de la topologie.

    Enregistrez et fermez le fichier terraform.tfvars.

    Voici un exemple de fichier terraform.tfvars terminé :

    tenancy_ocid = "ocid1.tenancy.oc1..aaaaaaaa2 (truncated)"
    user_ocid = "ocid1.user.oc1..aaaaaaaag (truncated)"
    fingerprint = "56:f6:8e:bf: (truncated)"
    private_key_path = "/home/joe/.oci/oci_api_key.pem"
    region = "us-ashburn-1"
    
    compartment_ocid = "ocid1.compartment.oc1..aaaaaaaam (truncated)"
    
    bastion_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_bastion.pub"
    bastion_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_bastion"
    remote_ssh_public_key_file = "/home/joe/.ssh/ida_rsa_remote.pub"
    remote_ssh_private_key_file = "/home/joe/.ssh/ida_rsa_remote"
  3. Définissez une clé secrète partagée pour le cluster de routage dans une variable d'environnement.
    export TF_VAR_hacluster_password="somePassword"

    Le mot de passe doit contenir au moins huit caractères. Il doit contenir au moins une lettre majuscule, une minuscule, un chiffre et un caractère spécial (non alphanumérique).