Application des configurations

Une fois le fournisseur Oracle Cloud Infrastructure (OCI) Terraform installé et configuré, et que vous avez créé des configurations Terraform incluant le fournisseur et une ressource ou une source de données, vous pouvez exécuter Terraform sur votre infrastructure OCI.

Conseil

Pour obtenir des instructions étape par étape et des exemples, reportez-vous aux tutoriels.

Initialisation de Terraform

Exécutez la commande suivante à partir du répertoire contenant vos fichiers de configuration Terraform pour initialiser Terraform :

terraform init

Exemple de sortie :

Initializing the backend...

Initializing provider plugins...
- Finding latest version of hashicorp/oci...
- Installing hashicorp/oci v3.96.0...
- Installed hashicorp/oci v3.96.0 (signed by HashiCorp)

The following providers do not have any version constraints in configuration,
so the latest version was installed.
...
* hashicorp/oci: version = "~> 3.96.0"

Terraform has been successfully initialized!

Si la commande génère une erreur, vérifiez que le fournisseur OCI Terraform est configuré correctement.

Vérification des modifications

Sans apporter de modifications aux ressources OCI existantes, Terraform peut renvoyer la liste des modifications qui seront effectuées en fonction de vos configurations si vous choisissez de les appliquer. Cette liste est appelée plan d'exécution. Pour visualiser le plan d'exécution, exécutez la commande suivante :

terraform plan

Exemple de sortie :

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # oci_identity_compartment.tf-compartment will be created
  + resource "oci_identity_compartment" "tf-compartment" {
      + compartment_id = "exampleuniqueID"
      + defined_tags   = (known after apply)
      + description    = "Compartment for Terraform resources."
      + freeform_tags  = (known after apply)
      + id             = (known after apply)
      + inactive_state = (known after apply)
      + is_accessible  = (known after apply)
      + name           = <your-compartment-name>
      + state          = (known after apply)
      + time_created   = (known after apply)
    }

Plan: 1 to add, 0 to change, 0 to destroy.

Consultez le plan et vérifiez si les modifications qui y sont indiquées correspondent à vos attentes.

Modifications destructives

Certaines ressources OCI possèdent des propriétés qui ne peuvent pas être mises à jour par Terraform sans détruire la ressource existante et la recréer avec la nouvelle valeur de propriété. Lorsque vous exécutez terraform plan et que vous tentez de modifier une propriété qui ne peut pas être mise à jour, Terraform indique la ressource qui sera remplacée et les propriétés qui ne peuvent pas être mises à jour.

Par exemple, le plan d'exécution suivant préfixe une ressource qui sera supprimée et recréée avec -/+, et ajoute le commentaire # forces replacement à la propriété qui ne peut pas être mise à jour :

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
-/+ destroy and then create replacement
 
Terraform will perform the following actions:
 
  # oci_core_vcn.vcn must be replaced
-/+ resource "oci_core_vcn" "vcn" {
      ~ cidr_block               = "10.0.0.0/16" -> "11.0.0.0/16" # forces replacement
      ~ cidr_blocks              = [
          - "10.0.0.0/16",
        ] -> (known after apply)
        compartment_id           = "ocid1.compartment.oc1..exampleuniqueID"
      ~ default_dhcp_options_id  = "ocid1.dhcpoptions.oc1.phx.exampleuniqueID" -> (known after apply)
      ~ default_route_table_id   = "ocid1.routetable.oc1.phx.exampleuniqueID" -> (known after apply)
      ~ default_security_list_id = "ocid1.securitylist.oc1.phx.exampleuniqueID" -> (known after apply)
      ~ defined_tags             = {} -> (known after apply)
        display_name             = "vcn"
        dns_label                = "vcn"
      ~ freeform_tags            = {} -> (known after apply)
      ~ id                       = "ocid1.vcn.oc1.phx.exampleuniqueID" -> (known after apply)
      + ipv6cidr_block           = (known after apply)
      + ipv6public_cidr_block    = (known after apply)
      + is_ipv6enabled           = (known after apply)
      ~ state                    = "AVAILABLE" -> (known after apply)
      ~ time_created             = "2021-01-25 20:54:53.255 +0000 UTC" -> (known after apply)
      ~ vcn_domain_name          = "vcn.oraclevcn.com" -> (known after apply)
    }
 
Plan: 1 to add, 0 to change, 1 to destroy.
Attention

La suppression et la recréation forcées d'une ressource peuvent également entraîner le remplacement de la ressource parent. Exécutez toujours terraform plan avant d'exécuter terraform apply pour déterminer les ressources concernées.

La référence complète des ressources et sources de données prises en charge par le fournisseur OCI Terraform contient les détails relatifs à la syntaxe, aux arguments et aux attributs. La référence complète est disponible à l'adresse docs.oracle.com et dans le registre Terraform.

La référence indique les propriétés pouvant être mises à jour.

Application des modifications

Une fois que vous êtes certain que vos configurations vont entraîner les modifications attendues, vous pouvez appliquer vos configurations Terraform en exécutant la commande suivante :

terraform apply

Lorsque vous êtes invité à confirmer l'opération, saisissez yes pour que la ressource soit créée. Une fois que vous avez exécuté la commande apply, la sortie est affichée dans le terminal. Exemple de sortie :

oci_identity_compartment.tf-compartment: Creating...
oci_identity_compartment.tf-compartment: Creation complete after 9s [id=exampleuniqueID]

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

Outputs:

compartment-OCID = ocid1.compartment.exampleuniqueID
compartment-name = <your-compartment-name>
Attention

Si vous apportez des modifications aux ressources que vous gérez avec Terraform en dehors de Terraform, ces modifications sont écrasées à la prochaine utilisation de Terraform pour appliquer les configurations. Ajoutez le paramètre ignore_changes aux ressources de votre fichier de configuration que vous ne souhaitez pas écraser.