Provisionner, configurer et supprimer des ressources

Utilisez Terraform pour déployer, modifier et enlever efficacement vos ressources dans le cloud.

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.

Créer les ressources

Après avoir défini les variables dans le fichier terraform.tfvars, utilisez la CLI Terraform pour déployer les ressources définies dans la configuration Terraform.

Avant de commencer, vérifiez que votre ordinateur local dispose d'un accès à Internet. Si votre ordinateur local est derrière un pare-feu, utilisez un proxy approprié pour autoriser Terraform à accéder à Internet.
  1. Sur l'ordinateur sur lequel vous avez installé Terraform, accédez au répertoire contenant le fichier terraform.tfvars.
  2. Initialisez Terraform en exécutant la commande suivante :
    terraform init
    La commande télécharge le plug-in de fournisseur oci et configure le répertoire à utiliser par Terraform.
  3. Vérifiez que la syntaxe de la configuration ne contient aucune erreur :
    terraform validate
  4. S'il existe une erreur de syntaxe, corrigez-la et répétez l'étape précédente.
    Pour déboguer les problèmes, vous pouvez configurer la journalisation :
    • Définissez le niveau de journalisation à l'aide de la variable d'environnement TF_LOG. Les niveaux de journalisation pris en charge sont TRACE, DEBUG, INFO, WARN ou ERROR. Le niveau TRACE est le plus détaillé.
    • Définissez le chemin du fichier journal à l'aide de la variable d'environnement TF_LOG_PATH.
  5. Vérifiez les ressources définies dans la configuration.
    terraform plan
    La sortie affiche les détails de toutes les actions effectuées lorsque vous appliquez cette configuration, ainsi qu'un récapitulatif comme indiqué dans l'exemple suivant.
    Plan: 8 to add, 0 to change, 0 to destroy.

    Remarque :

    Le numéro 8 dans le message est un exemple. Le nombre réel dépend des paramètres définis dans votre configuration Terraform.
  6. Pour apporter des modifications, modifiez la configuration, validez-la et consultez le plan révisé.
  7. Créez les ressources suivantes :
    terraform apply
  8. A l'invite Do you want to perform these actions?, entrez yes
    Lorsqu 'Terraform crée une ressource, il affiche le statut de l'opération.

    Lorsque toutes les ressources sont créées, le message Apply complete s'affiche, ainsi que le nombre de ressources ajoutées, modifiées et détruites, comme indiqué dans l'exemple suivant.

Apply complete! Resources: 33 added, 0 changed, 0 destroyed.

Outputs:

admin_private_ip = 10.0.1.10
bastion_public_ip = 203.0.113.101
kubeconfig = export KUBECONFIG=generated/kubeconfig
ocirtoken = <sensitive>
ssh_to_admin = ssh -i /home/joe/.ssh/id_rsa -J opc@203.0.113.101 opc@10.0.1.10
ssh_to_bastion = ssh -i /home/joe/.ssh/id_rsa opc@203.0.113.101
  • La sortie kubeconfig affiche la commande que vous pouvez utiliser pour définir la variable d'environnement KUBECONFIG sur votre hôte local. Exécutez cette commande si vous souhaitez utiliser la CLI kubectl depuis votre hôte local pour gérer le cluster Kubernetes. La commande définit KUBECONFIG dans le fichier generated/kubeconfig, créé par Terraform lors de l'application de la configuration.
  • La sortie ssh_to_admin affiche la commande ssh que vous pouvez utiliser pour vous connecter à l'hôte d'administration.
  • La sortie ssh_to_bastion affiche la commande ssh qui permet de se connecter à l'hôte de base.

Remarque :

Vous pouvez afficher cette sortie Terraform à tout moment en exécutant la commande terraform output
Votre topologie Kubernetes dans Oracle Cloud est prête. Vous pouvez maintenant déployer des applications en conteneur.

Autoriser l'hôte d'administration à gérer les ressources

Pour permettre à l'hôte d'administration de gérer les ressources dans le compartiment, vous pouvez le désigner en tant que principal d'instance. Utilisez cette fonction si vous envisagez d'exécuter des commandes CLI ou d'effectuer des appels d'API à partir de l'hôte admin pour gérer les ressources dans la topologie.

Une instance de calcul désignée en tant qu'instance principal obtient sa propre identité unique. Il peut s'authentifier à l'aide de certificats qui sont créés et affectés automatiquement à l'instance. La rotation des certificats s'effectue régulièrement. Il n'est pas nécessaire de distribuer les informations d'identification à l'hôte d'administration ou de les faire pivoter.

Remarque :

Tout utilisateur pouvant se connecter à une instance de calcul à l'aide de SSH hérite des privilèges instance-principal octroyés à l'instance. Pensez à vous indiquer si l'hôte d'administration est un principal d'instance. Vous pouvez désactiver cette fonction ou à tout moment sans incidence sur l'hôte d'administration.
  • Pour désigner l'hôte d'administration en tant que principal d'instance, définissez les éléments suivants dans terraform.tfvars, puis exécutez terraform apply.

    admin_instance_principal = true

    L'hôte admin est membre d'un groupe dynamique et une instruction de stratégie est créée pour permettre au groupe dynamique de gérer toutes les ressources du compartiment.

  • Pour retirer les privilèges d'instance principal de l'hôte admin, définissez les éléments suivants dans terraform.tfvars, puis exécutez terraform apply.

    admin_instance_principal = false

Activer ou désactiver les notifications pour l'hôte de base

Vous pouvez utiliser Oracle Cloud Infrastructure Notification Service pour recevoir les messages d'état de l'hôte de base lorsque des mises à jour sont appliquées ou lorsqu'Oracle Ksplice détecte une tentative d'exploitation connue.

Remarque :

Le code Terraform dans cette solution configure les notifications uniquement lorsque vous utilisez l'image Oracle Autonomous Linux par défaut.
  • Pour activer les notifications pour l'hôte de base, définissez les variables suivantes dans terraform.tfvars:

    bastion_notification_enabled = true
    bastion_notification_endpoint = "email_address"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "topic_name"

    Voici un exemple de terraform.tfvars avec les variables liées à la notification définies.

    bastion_notification_enabled = true
    bastion_notification_endpoint = "joe@example.com"
    bastion_notification_protocol = "EMAIL"
    bastion_notification_topic = "bastion"
  • Si l'hôte de base a déjà été créé et que vous souhaitez activer les notifications maintenant, définissez ces variables et réexécutez terraform apply.
    • Les stratégies obligatoires sont définies de façon à permettre à l'hôte de base de publier des notifications.
    • Un sujet de notification est créé et l'adresse électronique que vous avez indiquée est abonnée au sujet.
    • L'hôte de base est configuré pour envoyer des notifications.

    Une fois les ressources créées, vous recevez un courriel vous invitant à confirmer l'abonnement.

  • Pour désactiver les notifications, définissez les éléments suivants dans terraform.tfvars et exécutez terraform apply.

    bastion_notification_enabled = false
    admin_notification_enabled = false

Retirer toutes les ressources

  1. Sur l'ordinateur sur lequel vous avez installé Terraform, accédez au répertoire contenant le fichier terraform.tfvars.
  2. Entrez la commande suivante :
    terraform destroy
    Terraform affiche les détails des ressources qui seront détruites, comme indiqué dans cet exemple :
    Plan: 0 to add, 0 to change, 12 to destroy.
  3. A l'invite Do you really want to destroy all resources?, entrez yes
    Terraform enlève chaque ressource, elle indique le statut de l'opération.
    Une fois toutes les ressources supprimées, le message Destroy complete s'affiche, avec le nombre de ressources détruites, comme indiqué dans l'exemple suivant :
    Destroy complete! Resources: 12 destroyed.