Provisionner les ressources

Vous pouvez provisionner les ressources à l'aide de Terraform ou de Terragrunt. Si vous utilisez Terraform, vous devez appliquer les configurations dans chaque répertoire, selon une séquence recommandée. Grâce à Terragrunt, vous pouvez provisionner toutes les ressources à l'aide d'une seule commande.

A propos des fichiers d'état Terraform

Terraform stocke des informations d'état pour suivre les ressources d'infrastructure gérées, mettre en correspondance les ressources déployées avec votre configuration, suivre les métadonnées et améliorer les performances des déploiements d'infrastructure de grande taille.

Par défaut, le fichier terraform.tfstate est stocké sur l'hôte local. Ce comportement par défaut n'est pas optimal dans les environnements informatiques où plusieurs utilisateurs doivent créer et détruire les ressources définies dans une configuration donnée. Pour contrôler le déploiement et la gestion des ressources dans un environnement multi-utilisateur, stocker les fichiers d'état Terraform dans Oracle Cloud Infrastructure Object Storage et partager les fichiers d'état et de verrouillage entre tous les utilisateurs. Reportez-vous à Utilisation de la banque d'objets pour les fichiers d'état Terraform.

Provisionner les ressources à l'aide de Terragrunt

Vous pouvez utiliser Terragrunt pour provisionner toutes les ressources de la topologie à l'aide d'une seule commande. En interne, Terragrunt appelle les commandes Terraform et gère toutes les dépendances entre ressources définies dans la configuration.

  1. Accédez au répertoire examples/full-deployment.
  2. Initialisez les modules Terraform en exécutant la commande suivante :
    make init
    La commande initialise tous les modules Terraform de la configuration en exécutant terraform init dans chaque répertoire.
  3. Provisionnez les ressources en exécutant la commande suivante :
    terragrunt apply-all
    Terragrunt appelle la commande terraform apply pour tous les modules Terraform de la configuration, dans une séquence définie. Toutes les ressources sont déployées.

Provisionner les ressources à l'aide de Terraform

Si vous choisissez de provisionner les ressources à l'aide de Terraform, vous devez appliquer la configuration Terraform dans chaque répertoire de façon individuelle, dans une séquence prescrite.

  1. Copiez le fichier examples/full-deployment/terraform.tfvars dans chacun des sous-répertoires suivants sous examples/full-deployment :
    common/compartments
    common/configuration
    management/access
    management/network
    management/server_attachment
    management/servers
    peering/network
    peering/routing
    tenant/network
    tenant/servers

    Accédez au répertoire examples/full-deployment, puis entrez la commande suivante pour copier terraform.tfvars dans tous les sous-répertoires requis. Pour une meilleure lisibilité, la commande est affichée sur plusieurs lignes avec une barre oblique inverse (\) à la fin de chaque ligne. Copiez toutes les lignes, y compris le caractère barre oblique inverse, et collez les lignes en une seule commande.

    xargs -n 1 cp -v terraform.tfvars<<<"common/compartments/ \
    common/configuration/ management/access/ management/network/ \
    management/server_attachment/ management/servers/ peering/network/ \
    peering/routing/ tenant/network/ tenant/servers/"
  2. Accédez au répertoire examples/full-deployment/common/configuration.
  3. Exécutez les commandes suivantes :
    1. Initialisez la configuration :
      terraform init
    2. Vérifiez les ressources définies dans la configuration :
      terraform plan
    3. Appliquez la configuration :
      terraform apply
    La configuration dans l'annuaire common/configuration calcule 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. Aucune ressource n'est créée lorsque vous appliquez cette configuration. Les résultats du calcul sont utilisés lorsque les réseaux cloud virtuels et les autres ressources réseau sont créés.
  4. Exécutez les commandes terraform init, terraform plan et terraform apply dans les répertoires suivants sous examples/full-deployment, dans l'ordre d'exécution indiqué :
    common/compartments
    peering/network
    management/network
    tenant/network
    management/access
    peering/routing
    management/servers
    management/server_attachment
    tenant/servers

    Une fois que vous avez exécuté terraform apply dans tous les répertoires de configuration de l'ordre établi, la topologie est entièrement déployée.

Modifier la topologie

Pour modifier la topologie, vous devez mettre à jour les définitions de ressource dans les configurations Terraform appropriées, puis appliquer la configuration révisée. L'identification des définitions de ressources à modifier nécessite une compréhension approfondie du code d'exemple, en particulier des modules Terraform référencés dans chaque répertoire et des dépendances entre modules.

Les instructions de modification de la topologie n'entrent pas dans le champ d'application de cette solution.

Retirer toutes les ressources

Vous pouvez facilement supprimer toutes les ressources déployées à l'aide de Terraform ou de Terragrunt.

  1. Accédez au répertoire examples/full-deployment.
  2. Effectuez l'une des opérations suivantes :
    • Si Terragrunt est installé, exécutez la commande suivante :

      terragrunt destroy-all

      Terragrunt appelle la commande terraform destroy pour les ressources de la configuration, dans une séquence définie.

      Si vous tentez d'utiliser terragrunt destroy-all pour nettoyer un déploiement partiel ou en échec, l'erreur suivante peut se produire :

      Error: Unsupported attribute
        on management_rte_attachment.tf line 8, in module "management_rte_attachement":
         8:     data.terraform_remote_state.peering_servers.outputs.routing_instance_1_ip_id,
          |----------------
          | data.terraform_remote_state.peering_servers.outputs is object with 3 attributes
      This object does not have an attribute named "routing_instance_1_ip_id".

      Si cette erreur se produit, supprimez les ressources en exécutant terraform destroy dans chaque répertoire de configuration, comme décrit ci-dessous.

    • Pour supprimer les ressources à l'aide de la CLI Terraform, exécutez terraform destroy dans chaque répertoire de configuration sous examples/full-deployment, dans l'ordre suivant.

      Remarque :

      Attendez la fin de l'exécution de la commande dans chaque répertoire avant de passer au répertoire suivant.
      tenant/servers
      management/server_attachment
      management/servers
      peering/routing
      management/access
      tenant/network
      management/network
      peering/network
      common/compartments
      common/configuration