Configurer l'environnement d'exécution Terraform

L'environnement d'exécution Terraform inclut la mise en page des dossiers et des fichiers de configuration Terraform requis pour créer la topologie réseau multiniveau.

A propos de l'environnement d'exécution Terraform

La disposition de l'environnement d'exécution Terraform est conçue pour une modularité et une croissance future.

Les répertoires et les fichiers contenant votre configuration Terraform constituent l'environnement d'exécution. Chaque sous-répertoire représente un module Terraform. En outre, les sous-répertoires constituent une bibliothèque réutilisable de ressources.

La structure de répertoires suivante représente l'environnement d'exécution que vous créez dans cette solution.

Description de l'image local_directory_structure.png
Description de l'illustration local_directory_structure.png

L'intégralité de la configuration se trouve dans un répertoire racine portant le nom de votre choix. Ce répertoire doit être vide lorsque vous commencez.

Une fois la configuration créée, le répertoire racine contient les répertoires et fichiers suivants :

  • Le répertoire compartments contient les paramètres de configuration des catégories.
  • Le répertoire iam contient les paramètres de configuration des stratégies et des groupes.
  • Le répertoire vcn contient les paramètres de configuration du réseau cloud virtuel et des passerelles.
  • Les fichiers suivants se trouvent dans le répertoire racine :
    • datasources.tf détermine le nombre de domaines de disponibilité dans la région et obtient leur nom.
    • provider.tf définit les paramètres des fournisseurs Terraform à utiliser.
    • root.tf définit les modules que Terraform doit exécuter.
    • terraform.tvars définit les valeurs des variables que vous transmettez à Terraform.
    • variables.tf déclare les variables que les modules de la configuration utilisent.

Créer le module racine

Dans le module racine, définissez les paramètres nécessaires pour Terraform afin de vous connecter à Oracle Cloud Infrastructure. Vous définissez également les données et les variables utilisées par les modules dans la configuration.

  1. Sur l'ordinateur sur lequel vous avez installé Terraform, créez un répertoire, appelé répertoire racine, dans la suite de cette solution.
  2. Créez les sous-répertoires suivants dans le répertoire racine :
    • compartments
    • iam
    • vcn
  3. Créez un fichier texte nommé variables.tf dans le répertoire racine, puis collez le code suivant dans le fichier.
    Ce code déclare les variables que les modules de la configuration Terraform utilisent. A l'étape suivante, indiquez les valeurs de ces variables.
    variable "tenancy_ocid" {}
    variable "user_ocid" {}
    variable "fingerprint" {}
    variable "private_key_path" {}
    variable "private_key_password" {}
    variable "app_tag" {}
    variable "environment" {}
    variable "home_region" {}
    variable "region" {}
    variable "vcn_cidr" {
      default = "10.0.0.0/16"
    }
    
  4. Créez un fichier texte nommé terraform.tfvars dans le répertoire racine, puis collez le code suivant dans le fichier.
    Dans ce code, vous définissez les valeurs des variables déclarées à l'étape précédente.
    # Parameters to authenticate with Oracle Cloud Infrastructure
    tenancy_ocid="EXAMPLE: ocid1.tenancy.oc1..aaaaaaaaf76usem7gyfrakr35anvky4tyowvdvbik7kbrcizlyjsgfxpdg2a"
    user_ocid="EXAMPLE: ocid1.user.oc1..aaaaaaaa5tds42w2zzbsdflkjwerkjghswdjfbvbts7imlb5yru2p10a"
    fingerprint="EXAMPLE: 9b:6a:ab:ab:32:0b:7f:d5:5b:6w:c0:fe:54:72:f1:pl"
    private_key_path="YOUR_HOME_DIRECTORY/.oci/oci_api_key.pem"
    
    # Leave empty if your private key does not have a password
    private_key_password=""
    
    # See https://docs.oracle.com/pls/topic/lookup?ctx=cloud&id=oci_general_regions
    home_region="EXAMPLE: us-ashburn-1"
    region="EXAMPLE: us-phoenix-1"
    
    # A short identifier for the application, used as a prefix for naming the compartments and other resources
    app_tag="myapp"
    
    # The environment that you're creating resources for: test, dev, prod, or staging
    environment="dev"
    
    # Base CIDR for the VCN
    vcn_cidr="10.0.0.0/16"
  5. Mettez à jour les valeurs des variables dans terraform.tfvars, comme décrit dans le tableau suivant :
    Variable Description
    tenancy_ocid ID Oracle Cloud (OCID) de la location.

    Pour rechercher l'OCID de votre location, sélectionnez Administration dans le menu Services, puis cliquez sur Détails de location.

    user_ocid ID Oracle Cloud (OCID) de l'utilisateur que vous souhaitez que Terraform utilise pour l'authentification auprès d'Oracle Cloud Infrastructure.

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

    empreinte Empreinte pour la clé de signature d'API que vous avez téléchargée.
    private_key_path Chemin du fichier contenant votre clé privée.
    private_key_password Phrase secrète de la clé privée. Si la clé n'a pas de phrase secrète, laissez cette variable vide.
    home_region Région d'accueil de la location. Les catégories, les stratégies et les groupes sont créés dans la région d'accueil.

    Pour obtenir la région d'accueil, sélectionnez Administration dans le menu Services, cliquez sur Détails de location et copiez la valeur dans le champ Région d'accueil.

    zone Région dans laquelle vous souhaitez créer le réseau, calculer et autres ressources. Cette région peut être la région d'accueil ou toute autre région Oracle Cloud Infrastructure.
    app_tag Préfixe à utiliser dans les noms de vos ressources pour indiquer l'application à laquelle chaque ressource est destinée. Il est recommandé d'utiliser tous les caractères en minuscules.
    environnement Préfixe à utiliser dans les noms de vos ressources, pour indiquer l'environnement auquel chaque ressource est destinée : développement, test, préparation ou production. Il est recommandé d'utiliser tous les caractères en minuscules.
    vcn_cidr Plage d'adresses du réseau cloud virtuel, au format CIDR. Planifiez attentivement cette plage. Vous ne pouvez pas le modifier ultérieurement.
  6. Créez un fichier texte nommé datasources.tf dans le répertoire racine, puis collez le code suivant dans le fichier.
    Le code contenu dans datasources.tf détermine le nombre de domaines de disponibilité dans la région et leurs noms. Ce code utilise la région que vous indiquez dans la variable region.
    data "oci_identity_availability_domains" "ad" {
      compartment_id = "${var.tenancy_ocid}"
    }
    
    data "template_file" "ad_names" {
      count    = "${length(data.oci_identity_availability_domains.ad.availability_domains)}"
      template = "${lookup(data.oci_identity_availability_domains.ad.availability_domains[count.index], "name")}"
    }
  7. Créez un fichier texte nommé provider.tf dans le répertoire racine, puis collez le code suivant dans le fichier.
    Le code du fichier provider.tf définit les paramètres du fournisseur que Terraform doit utiliser. Un fournisseur convertit les commandes Terraform en appels d'API propres à un fournisseur de service cloud.
    provider "oci" {
      alias                = "home"
      region               = "${var.home_region}"
      tenancy_ocid         = "${var.tenancy_ocid}"
      user_ocid            = "${var.user_ocid}"
      fingerprint          = "${var.fingerprint}"
      private_key_path     = "${var.private_key_path}"
      private_key_password = "${var.private_key_password}"
    }
    
    provider "oci" {
      region               = "${var.region}"
      tenancy_ocid         = "${var.tenancy_ocid}"
      user_ocid            = "${var.user_ocid}"
      fingerprint          = "${var.fingerprint}"
      private_key_path     = "${var.private_key_path}"
      private_key_password = "${var.private_key_password}"
    }
    Cet exemple définit deux fournisseurs. Ces deux fournisseurs concernent Oracle Cloud Infrastructure. Le premier fournisseur est destiné à la région d'accueil, dans laquelle vous créez les ressources Oracle Cloud Infrastructure Identity and Access Management. Le second fournisseur est destiné à la région dans laquelle vous voulez créer le réseau, calculer et autres ressources.
  8. Créez un fichier texte nommé root.tf dans le répertoire racine, puis collez le code suivant dans le fichier.
    Ce code indique les modules que Terraform doit exécuter. Le fournisseur est indiqué explicitement pour les modules compartments et iam, car les catégories, les groupes et les stratégies doivent être créés dans la région d'accueil.
    module "compartments" {
      source       = "./compartments"
      tenancy_ocid = "${var.tenancy_ocid}"
      app_tag      = "${var.app_tag}"
      environment  = "${var.environment}"
    
      providers = {
        oci = "oci.home"
      }
    }
    
    module "a_vcn" {
      source           = "./vcn"
      tenancy_ocid     = "${var.tenancy_ocid}"
      compartment_ocid = "${module.compartments.networks_id}"
      app_tag          = "${var.app_tag}"
      environment      = "${var.environment}"
      vcn_cidr         = "${var.vcn_cidr}"
    }
    
    module "iam" {
      source       = "./iam"
      tenancy_ocid = "${var.tenancy_ocid}"
      app_tag      = "${var.app_tag}"
      environment  = "${var.environment}"
    
      providers = {
        oci = "oci.home"
      }
    }
    Les variables app_tag et environment appliquent un schéma d'affectation de noms. Il n'est pas nécessaire d'utiliser un modèle d'appellation, mais il constitue la meilleure pratique.