Applying Configurations
Use the OCI Terraform provider to apply configurations.
After the Oracle Cloud Infrastructure (OCI) Terraform provider is installed and configured, and you have created Terraform configurations that include the provider and a resource or data source, you can run Terraform against your OCI infrastructure.
Initializing Terraform
Run the following command from a directory that contains your Terraform configuration files to initialize Terraform:
terraform init
Example output:
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!
If the command results in an error, verify that the OCI Terraform provider is configured properly.
Reviewing Changes
Without making any changes to your existing OCI resources, Terraform can return a list of changes that will be made based on your configurations if you choose to apply them. This list is called an execution plan. To view the execution plan, run the following command:
terraform plan
Example output:
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.
Review the plan and check whether the changes shown in the plan match your expectations.
Destructive Changes
Some OCI resources have properties that cannot be updated by Terraform without destroying the existing resource and re-creating it with the new property value. When you run terraform plan
and attempt to modify a non-updatable property, Terraform indicates what resource will be replaced and what property or properties cannot be updated.
For example, the following execution plan prefixes a resource that will be deleted and re-created with -/+
and appends the # forces replacement
comment to the property that cannot be updated:
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.
A forced deletion and re-creation of a resource might also result in the replacement of a parent resource. Always run
terraform plan
before you run terraform apply
to see what resources will be affected.The full reference of the OCI Terraform provider's supported resources and data sources contains usage, argument, and attribute details. The full reference is available at docs.oracle.com and Terraform Registry.
The reference indicates which properties are updatable.
Applying Changes
Once you're confident that your configurations will result in your expected changes, you can apply your Terraform configurations by running the following command:
terraform apply
When prompted for confirmation, enter yes
, for your resource to be created. After you run the apply
comand, the output is displayed in the terminal. Example output:
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>
If you make changes to resources you manage with Terraform outside of Terraform, those changes will be overwritten the next time you use Terraform to apply configurations. Add the
ignore_changes
parameter to resources in your configuration file that you do not want to overwrite.