auto.tfvars syntax for Identity Module
These are the syntax and sample format for providing inputs to the modules via *.auto.tfvars files. "key" must be unique to every resource that is created. Comments preceed with ##.
1. Compartments
- Syntax
 
compartments = {
        root = {
            ## key - Is a unique value to reference the resources respectively
            key = {
                # Required
                parent_compartment_id = string
                name                  = string
                # Optional
                description           = string 
                enable_delete         = boolean 
                defined_tags          = map 
                freeform_tags         = map 
               },
            },
        compartment_level1 = {
             ## key - Is a unique value to reference the resources respectively
             key = {
                # Required
                parent_compartment_id = string
                name                  = string
                # Optional
                description           = string 
                enable_delete         = boolean 
                defined_tags          = map 
                freeform_tags         = map 
                },
            },
        compartment_level2 = {
            ## key - Is a unique value to reference the resources respectively
            key = {
                # Required
                parent_compartment_id = string
                name                  = string
                # Optional
                description           = string 
                enable_delete         = boolean 
                defined_tags          = map 
                freeform_tags         = map 
                },
            },
        compartment_level3 = {
            ## key - Is a unique value to reference the resources respectively
            key = {
                # Required
                parent_compartment_id = string
                name                  = string
                # Optional
                description           = string 
                enable_delete         = boolean 
                defined_tags          = map 
                freeform_tags         = map 
                },
            },
        compartment_level4 = {
            ## key - Is a unique value to reference the resources respectively
            key = {
                # Required
                parent_compartment_id = string
                name                  = string
                # Optional
                description           = string 
                enable_delete         = boolean 
                defined_tags          = map 
                freeform_tags         = map 
                },
            },
        compartment_level5 = {
            ## key - Is a unique value to reference the resources respectively
            key = {
                # Required
                parent_compartment_id = string
                name                  = string
                # Optional
                description           = string 
                enable_delete         = boolean 
                defined_tags          = map 
                freeform_tags         = map 
                },
            },
    }
- Example:
  
############################ # Identity # Compartments - tfvars # Allowed Values: # parent_compartment_id can be the ocid or the name of the compartment hierarchy delimited by double hiphens "--" # Example : parent_compartment_id = "ocid1.compartment.oc1..aaaaaaaahwwiefb56epvdlzfic6ah6jy3xf3c" or parent_compartment_id = "Network-root-cpt--Network" where "Network-root-cpt" is the parent of "Network" compartment ############################ compartments = { root = { Network = { # Required parent_compartment_id = root name = "Network" # Optional description = "Compartment for all network related resources: VCNs, subnets, network gateways, security lists, NSGs, load balancers, VNICs." defined_tags = { "Oracle-Tags.CreatedOn"= "2022-08-09T11:15:45.919Z" , "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com" } }, Database = { # Required parent_compartment_id = root name = "Database" # Optional description = "Compartment for all database related resources." defined_tags = { "Oracle-Tags.CreatedOn"= "2022-08-09T11:15:45.919Z" , "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com" } freeform_tags = {} }, AppDev = { # Required parent_compartment_id = root name = "AppDev" # Optional description = "Compartment for all resources related to application development: functions, OKE, API Gateway, streaming, notifications." defined_tags = { "Oracle-Tags.CreatedOn"= "2022-08-09T11:15:45.919Z" , "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com" } }, }, compartment_level1 = { Non-Prod = { # Required parent_compartment_id = AppDev name = "Non-Prod" # Optional description = "Compartment for all the non-prod application resources." enable_delete = true defined_tags = { "Oracle-Tags.CreatedOn"= "2022-08-09T11:15:45.919Z" , "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com" } }, Prod = { # Required parent_compartment_id = AppDev name = "Prod" # Optional description = "Compartment for all the prod application resources." enable_delete = true defined_tags = { "Oracle-Tags.CreatedOn"= "2022-08-09T11:15:45.919Z" , "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com" } }, }, ## Similar values can be entered for the compartment levels below. compartment_level2 = {}, compartment_level3 = {}, compartment_level4 = {}, compartment_level5 = {}, } 
2. Groups/Dynamic Groups
ⓘ The parameter that differentiates dynamic groups from normal groups is matching_rule . Normal Groups will be created when you omit this parameter or pass it as "" or null. All the groups are created in the root compartment.
- Syntax for IDCS
 
groups = {
    ## key - Is a unique value to reference the resources respectively
    key = {
        # Required
        group_name            = string
        group_description     = string
        # Optional
        members               = list(string) 
        matching_rule         = string  #Required only for Dynamic Group
        defined_tags          = map 
        freeform_tags         = map 
        },
    }
- Example for IDCS:
  
############################ # Identity # Groups/Dynamic Groups - tfvars ############################ groups = { # Normal Group Administrators = { # Required group_name = "Administrators" group_description = "Administrators" }, # Normal Group IAMAdmins = { # Required group_name = "IAMAdmins" group_description = "Group responsible for managing IAM resources in the tenancy." # Optional members = ["xyz@oracle.com", "bcd@oracle.com"] defined_tags = { "Oracle-Tags.CreatedOn"= "2022-03-23T07:00:34.666Z" , "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com" } }, # Dynamic Group CD3_Instances = { group_name = "CD3_Instances" group_description = "Instance Group for CD3 Instances" # Optional matching_rule = "Any {Any {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaasfwefuhwkjfew2rrcxx37d5ntq7r53wtaq'},Any {instance.compartment.id = 'ocid1.compartment.oc1..aaz2ylwikr5rg4slidxzec7aijanq'}}" # Can be null or "" for regular groups }, } - Syntax for IAM Domains
 
   identity_domain_groups = {
       ## key - Is a unique value to reference the resources respectively
       key = {
           # Required
           group_name            = string
           group_description     = string
           idcs_endpoint         = string
           compartment_id        = string
           # Optional
           members               = list(string) 
           matching_rule         = string  #Required only for Dynamic Group
           defined_tags          = list(map) 
           freeform_tags         = list(map) 
           },
       }
- Example for IAM Domains:
  
############################ # Identity # Groups/Dynamic Groups - tfvars ############################ groups = { # Normal Group Administrators = { # Required group_name = "Administrators" group_description = "Administrators" idcs_endpoint = "default" compartment_id = "root" }, # Normal Group IAMAdmins = { # Required group_name = "IAMAdmins" group_description = "Group responsible for managing IAM resources in the tenancy." idcs_endpoint = "default" compartment_id = "root" # Optional members = ["xyz@oracle.com", "bcd@oracle.com"] defined_tags = defined_tags = [ { key = "CreatedBy" namespace = "Oracle-Tags" value = "default/abc@oracle.com" }, { key = "CreatedOn" namespace = "Oracle-Tags" value = "2024-08-05T01:22:03.225Z" } ] }, # Dynamic Group CD3_Instances = { group_name = "CD3_Instances" group_description = "Instance Group for CD3 Instances" # Optional matching_rule = "Any {Any {instance.compartment.id = 'ocid1.compartment.oc1..aaaaaaaasfwefuhwkjfew2rrcxx37d5ntq7r53wtaq'},Any {instance.compartment.id = 'ocid1.compartment.oc1..aaz2ylwikr5rg4slidxzec7aijanq'}}" # Can be null or "" for regular groups }, } 
3. Policies
- Syntax
 
  policies = {
     ## key - Is a unique value to reference the resources respectively
     key = {
        # Required
        name               = string
        compartment_id     = string
        policy_description = string
        policy_statements  = list(string)
        # Optional
        policy_version_date   = string
        defined_tags          = map 
        freeform_tags         = map 
        },
     }
- Example:
  
############################ # Identity # Policies - tfvars # Allowed Values: # compartment_id can be the ocid or the name of the compartment hierarchy delimited by double hiphens "--" # Example : compartment_id = "ocid1.compartment.oc1..aaaaaaaahwwiefb56epvdlzfic6ah6jy3xf3c" or compartment_id = "Network-root-cpt--Network" where "Network-root-cpt" is the parent of "Network" compartment ############################ policies = { CD3_Instances_Policy = { # Required name = "CD3_Instances_Policy" compartment_id = "root" policy_description = "Policy for VMs in CD3 Compartment" policy_statements = [ "Allow dynamic-group CD3_Instances to manage object-family in tenancy" ,"Allow dynamic-group CD3_Instances to manage instance-family in tenancy" ,"Allow dynamic-group CD3_Instances to manage database-family in tenancy" ,"Allow dynamic-group CD3_Instances to manage secret-family in tenancy" ,"Allow dynamic-group CD3_Instances to read all-resources in tenancy" ] }, IAMAdmins-Policy = { # Required name = "IAMAdmins-Policy" compartment_id = "root" policy_description = "Policy allowing IAMAdmins group to manage IAM resources in tenancy, except changing Administrators group assignments." policy_statements = [ "Allow group IAMAdmins to manage policies in tenancy" ,"Allow group IAMAdmins to manage compartments in tenancy" ,"Allow group IAMAdmins to manage tag-defaults in tenancy" ,"Allow group IAMAdmins to manage tag-namespaces in tenancy" ,"Allow group IAMAdmins to manage orm-stacks in tenancy" ,"Allow group IAMAdmins to manage orm-jobs in tenancy" ,"Allow group IAMAdmins to manage orm-config-source-providers in tenancy" ,"Allow group IAMAdmins to inspect users in tenancy" ,"Allow group IAMAdmins to inspect groups in tenancy" ,"Allow group IAMAdmins to manage groups in tenancy where all {target.group.name != 'Administrators', target.group.name != 'CredAdmins'}" ,"Allow group IAMAdmins to inspect identity-providers in tenancy" ,"Allow group IAMAdmins to manage identity-providers in tenancy where any {request.operation = 'AddIdpGroupMapping', request.operation = 'DeleteIdpGroupMapping'}" ,"Allow group IAMAdmins to manage dynamic-groups in tenancy" ,"Allow group IAMAdmins to manage authentication-policies in tenancy" ,"Allow group IAMAdmins to manage network-sources in tenancy" ,"Allow group IAMAdmins to manage quota in tenancy" ,"Allow group IAMAdmins to read audit-events in tenancy" ,"Allow group IAMAdmins to use cloud-shell in tenancy" ] # Optional defined_tags = { "Oracle-Tags.CreatedOn"= "2022-03-23T07:19:18.918Z" , "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com" } }, } 
4. Users
- Syntax for IDCS
 
  users = {
     ## key - Is a unique value to reference the resources respectively
      key = {
      # Required
      name                  = string
      description           = string
      email                 = string
      enable_capabilities  = list(string)
      # Optional
      defined_tags          = map
      },
  }
- Example for IDCS:
 
      ############################
      # Identity
      # Users - tfvars
      ############################
      users = {
         testUser = {
          # Required
          name                 = "testUser"
          description          = "this is a test user"
          email                = "testUser@oracle.com"
          enable_capabilities = ["can_use_console_password","can_use_customer_secret_keys"]
          # Optional
              defined_tags = {
                      "Oracle-Tags.CreatedOn"= "2023-05-23T07:19:18.918Z" ,
                      "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com"
                }      
            }            
        }
- Syntax for IAM Domains
 
  identity_domain_users = {
     ## key - Is a unique value to reference the resources respectively
      key = {
      # Required
      family_name           = string
      idcs_endpoint         = string
      user_name             = string
      compartment_id        = string
      description           = string
      email                 = string
      groups                = list(string)
      enable_capabilities   = list(string)
      # Optional
      defined_tags          = map(list)
      },
  }
- Example for IAM Domain:
 
      ############################
      # Identity
      # Users - tfvars
      ############################
      identity_domain_users = {
        DEFAULT_testuser-test-com = {
              family_name = "test"
              idcs_endpoint = "DEFAULT"
              description = "test"
              user_name     = "testuser@test.com"
              compartment_id = "root"
              email           = "testuser@test.com"
              enabled_capabilities = ["api_keys", "auth_tokens", "console_password", "customer_secret_keys", "db_credentials", "oauth2client_credentials", "smtp_credentials"]
              defined_tags = [
                      {
                        key       = "CreatedBy"
                        namespace = "Oracle-Tags"
                        value     = "default/abc@oracle.com"
                      },
                      {
                        key       = "CreatedOn"
                        namespace = "Oracle-Tags"
                        value     = "2024-07-16T15:24:28.572Z"
                      }          ]
          },
      }
5. Network Sources
- Syntax
 
      networkSources = {
         ## key - Is a unique value to reference the resources respectively
         key = {
            # Required
            name                  = string
            description           = string
            public_source_list    = list(string)
            virtual_source_list   = list(map)
          # Optional
          defined_tags          = map
          },
        }
- Example
 
        ############################
        # Identity
        # Network Sources - tfvars
        ############################
        networkSources = {
           networkSourcesExample = {
            # Required
            name                 = "myNetworkSource"
            description          = "this is a network source"
            public_source_list   = ["192.0.2.0/24","192.0.3.0/26"]
            virtual_source_list  =
              [
                {
                  vcn_name               = ["VCN1"],
                  network_compartment_id = ["NetworkCompartment"],
                  ip_ranges              = [ "10.169.0.0/16"]
                },
                {
                  vcn_name                   = ["VCN2"],
                  network_compartment_id = ["NetworkCompartment"],
                  ip_ranges              = ["172.16.2.0/24", "172.16.2.0/26"]
                }
              ]
          # Optional
          defined_tags = {
                  "Oracle-Tags.CreatedOn"= "2023-05-23T07:19:18.918Z" ,
                  "Oracle-Tags.CreatedBy"= "oracleidentitycloudservice/abc@oracle.com"
                    }
          }
       }