LAB 45 (Create compartment using modular approach) - arunsinghchauhan38-arch/CLOUDARCHITECTDOC GitHub Wiki
Steps to Create Compartment Using Modular Approach
Step 1. Create Compartment_template folder
“This folder contains reusable Terraform configurations for creating Oracle Cloud Infrastructure (OCI) compartments.”
Step 2. Create provider.tf file
“Create a provider.tf file inside the compartment_template folder and add the OCI provider configuration.
Step 3. Create private key file in compartment_template folder
Step 4. Create variable.tf file inside compartment_template folder
Create a variables.tf file inside the compartment_template folder.
Define all input variables required for creating the compartment in this file. These variables will be referenced in the main.tf file, enabling the Terraform module to be reusable, configurable, and easier to maintain.
variable "parent_compartment_ocid" {
type = string
description = "the ocid of parent compartment where the new compartment will be created"
}
variable "compartment_name" {
type = string
description = "the name assigned to compartment"
}
variable "compartment_description" {
type = string
description = "the description of the comparment"
}
variable "enable_delete" {
type = bool
description = "specified whether the compartment deleted"
}
Step 5. Create main.tf file inside the compartment_template folder
Define the OCI Identity Compartment resource in this file and reference the input variables declared in the variables.tf file using the var.<variable_name> syntax. This approach ensures the module remains reusable, configurable, and easy to maintain.
resource "oci_identity_compartment" "compartment" {
compartment_id = var.parent_compartment_ocid
name = var.compartment_name
description = var.compartment_description
enable_delete = var.enable_delete
}
Step 6. Create New folder - Compartment
Step 7. Create provider.tf file inside compartment folder
Step 8. Create file mantra.tf inside the compartment folder
Configure a module block that references the reusable Terraform module located in the compartment_template folder. Provide all required input values for the module.
The module configuration must include the following parameters:
- The module source path that references the reusable Terraform module.
- The Parent Compartment OCID where the new compartment will be created.
- The compartment name.
- The compartment description.
- The enable delete option, which specifies whether the compartment can be deleted.
Step 9. Initialize the Terraform
terraform init
Step 10. Review the Execution Plan
terraform plan
Step 11. Create mantra compartment
terraform apply
When prompted, type:
yes
Step 12. Verify the mantra Compartment
Now navigate to the oracle console and verifiy in the comparment section, our mantra comparment successfully created with terraform moduler approach.
Step 13. View the Terraform State
terraform state list
Step 14. Destroy the mantra compartment
terraform destroy -target=<resource_address>
terraform destroy -target=module.parent_compartment.oci_identity_compartment.compartment
Step 15. Creating Child Compartment by same terraform approach
Here we use same method to create child compartment.
Module configuration for compute and storage compartment
module "mantra_compute_and_storage_compartment" {
source = "/home/arunsinghc/compartment_template"
## mantra ocid will given as parent compartment ocid
parent_compartment_ocid = "ocid1.compartment.oc1..aaaaaaaa4hideke6wljorp4annfsgcv2flrcueptqppo5ymg7wf6mlqoulja"
compartment_name = "mantra_compute_and_storage"
compartment_description = "this compartment use for mantra application"
enable_delete = true
}
Module configuration for network compartment
module "mantra_network" {
source = "/home/arunsinghc/compartment_template"
## mantra ocid will given as parent compartment ocid
parent_compartment_ocid = "ocid1.compartment.oc1..aaaaaaaa4hideke6wljorp4annfsgcv2flrcueptqppo5ymg7wf6mlqoulja"
compartment_name = "mantra_network"
compartment_description = "this compartment use for mantra application"
enable_delete = true
}
After Configure all details we will process for comparment creation by ussing command
terraform init
terraform plan
terraform apply
When prompted, type:
yes