OCI -- Compute Instance Creation : VCN :Subnet

 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 Creating a Compute Instance over an existing VCN and Subnet

Created a VCN and Subnet over OCI and wrote terraform code to launch the compute instance over the same VCN and subnet

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

ComputeInstance.tf

 

# resource "oci_core_vcn" "test_vcn" {
#     #Required
#     compartment_id = var.compartment_id

# #    #Optional
# #    byoipv6cidr_details {
# #        #Required
# #        byoipv6range_id = oci_core_byoipv6range.test_byoipv6range.id
# #        ipv6cidr_block = var.vcn_byoipv6cidr_details_ipv6cidr_block
# #    }
    # cidr_block = var.vcn_cidr_block
    #cidr_blocks = var.vcn_cidr_blocks
    #defined_tags = {"Operations.CostCenter"= "Testing"}
    #display_name = var.vcn_display_name
    #dns_label = var.vcn_dns_label
    #freeform_tags = {"Department"= "Finance"}
    #ipv6private_cidr_blocks = var.vcn_ipv6private_cidr_blocks
    #is_ipv6enabled = var.vcn_is_ipv6enabled
    #is_oracle_gua_allocation_enabled = var.vcn_is_oracle_gua_allocation_enabled
#}

# This data source provides details about a specific Subnet resource in Oracle Cloud Infrastructure Core service.

# resource "oci_core_subnet" "subnet_id" {
#     #Required
#     cidr_block = var.subnet_cidr_block
#     compartment_id = var.compartment_id
#     vcn_id = var.vcn_id

    #Optional
    #availability_domain = var.subnet_availability_domain
    #defined_tags = {"Operations.CostCenter"= "42"}
    #dhcp_options_id = oci_core_dhcp_options.test_dhcp_options.id
    #display_name = var.subnet_display_name
    #dns_label = var.subnet_dns_label
    #freeform_tags = {"Department"= "Finance"}
    #ipv6cidr_block = var.subnet_ipv6cidr_block
    #ipv6cidr_blocks = var.subnet_ipv6cidr_blocks
    #prohibit_internet_ingress = var.subnet_prohibit_internet_ingress
    #prohibit_public_ip_on_vnic = var.subnet_prohibit_public_ip_on_vnic
    #route_table_id = oci_core_route_table.test_route_table.id
    #security_list_ids = var.subnet_security_list_ids
#}

resource "oci_core_instance" "test_instance_new" {
    #Required
    availability_domain = var.instance_availability_domain
    compartment_id = var.compartment_id
    shape = var.instance_shape
    #Optional
    agent_config {

        #Optional
        # are_all_plugins_disabled = var.instance_agent_config_are_all_plugins_disabled
        # is_management_disabled = var.instance_agent_config_is_management_disabled
        # is_monitoring_disabled = var.instance_agent_config_is_monitoring_disabled
        plugins_config {
            #Required
            desired_state = var.cloud_agent_plugins.bastion
            name = "Bastion"
        }
    }
    #availability_config {

        #Optional
        # is_live_migration_preferred = var.instance_availability_config_is_live_migration_preferred
        # recovery_action = var.instance_availability_config_recovery_action
    #}
    create_vnic_details {

        #Optional
        # assign_private_dns_record = var.instance_create_vnic_details_assign_private_dns_record
        # assign_public_ip = var.instance_create_vnic_details_assign_public_ip
        # defined_tags = {"Operations.CostCenter"= "42"}
        # display_name = var.instance_create_vnic_details_display_name
        # freeform_tags = {"Department"= "Finance"}
        # hostname_label = var.instance_create_vnic_details_hostname_label
        # nsg_ids = var.instance_create_vnic_details_nsg_ids
        # private_ip = var.instance_create_vnic_details_private_ip
        # skip_source_dest_check = var.instance_create_vnic_details_skip_source_dest_check
        # subnet_id = oci_core_subnet.subnet.id
        subnet_id = var.subnet_id
        # vlan_id = oci_core_vlan.test_vlan.id
    }
    # dedicated_vm_host_id = oci_core_dedicated_vm_host.test_dedicated_vm_host.id
    # defined_tags = {"Operations.CostCenter"= "SuperMan"}
     display_name = var.instance_display_name
    # extended_metadata = {
    #     some_string = "stringA"
    #     nested_object = "{\"some_string\": \"stringB\", \"object\": {\"some_string\": \"stringC\"}}"
    #}
    # fault_domain = var.instance_fault_domain
    # freeform_tags = {"Department"= "Dummys_Head"}
    # hostname_label = var.instance_hostname_label
    # instance_options {

    #     #Optional
    #     # are_legacy_imds_endpoints_disabled = var.instance_instance_options_are_legacy_imds_endpoints_disabled
    # }
    # ipxe_script = var.instance_ipxe_script
    # is_pv_encryption_in_transit_enabled = var.instance_is_pv_encryption_in_transit_enabled
    # launch_options {

        #Optional
        # boot_volume_type = var.instance_launch_options_boot_volume_type
        # firmware = var.instance_launch_options_firmware
        # is_consistent_volume_naming_enabled = var.instance_launch_options_is_consistent_volume_naming_enabled
        # is_pv_encryption_in_transit_enabled = var.instance_launch_options_is_pv_encryption_in_transit_enabled
        # network_type = var.instance_launch_options_network_type
        # remote_data_volume_type = var.instance_launch_options_remote_data_volume_type
    # }
    # metadata = var.instance_metadata
    platform_config {
        #Required
         type = var.instance_platform_config_type

        #Optional
        # are_virtual_instructions_enabled = var.instance_platform_config_are_virtual_instructions_enabled
        # is_access_control_service_enabled = var.instance_platform_config_is_access_control_service_enabled
        # is_input_output_memory_management_unit_enabled = var.instance_platform_config_is_input_output_memory_management_unit_enabled
        # is_measured_boot_enabled = var.instance_platform_config_is_measured_boot_enabled
        # is_secure_boot_enabled = var.instance_platform_config_is_secure_boot_enabled
        # is_symmetric_multi_threading_enabled = var.instance_platform_config_is_symmetric_multi_threading_enabled
        # is_trusted_platform_module_enabled = var.instance_platform_config_is_trusted_platform_module_enabled
        # numa_nodes_per_socket = var.instance_platform_config_numa_nodes_per_socket
        # percentage_of_cores_enabled = var.instance_platform_config_percentage_of_cores_enabled
    }
    # preemptible_instance_config {
    #     #Required
    #     preemption_action {
    #         #Required
    #         type = var.instance_preemptible_instance_config_preemption_action_type

    #         #Optional
    #         # preserve_boot_volume = var.instance_preemptible_instance_config_preemption_action_preserve_boot_volume
    #     }
    # }
     shape_config {

        #Optional
         baseline_ocpu_utilization = var.instance_shape_config_baseline_ocpu_utilization
         memory_in_gbs = var.instance_shape_config_memory_in_gbs
         # nvmes = var.instance_shape_config_nvmes
         ocpus = var.instance_shape_config_ocpus
     }
    # source_details {
        #Required
        # source_id = oci_core_image.test_image.id
        # source_type = "image"

    source_details {
    boot_volume_size_in_gbs = var.boot_volume_size_in_gbs
    source_id               = var.source_ocid
    source_type             = var.source_type
    }

        #Optional
        # boot_volume_size_in_gbs = var.instance_source_details_boot_volume_size_in_gbs
        # boot_volume_vpus_per_gb = var.instance_source_details_boot_volume_vpus_per_gb
        # kms_key_id = oci_kms_key.test_key.id
    #}
    #preserve_boot_volume = false
}





 

Variables.tf


variable "tenancy_id" {
   type = string
   default = "ocid1.tenancy.oc1..aaaaaaaax7tm7jtfarexna447cmubjxwou6lug42jss2ddyis63wqo3lrpda"
   description = "OCID of Tenancy"
}

variable "api_fingerprint" {
   type = string
   default = "ca:5a:63:f1:c9:4a:8f:ef:a7:54:a3:f3:9e:30:d5:ca"
   description = "Fingerprints"
}

variable "api_private_key_path" {
   type = string
   default = "/user/sbalakrishnan/.oci/key_name.pem"
   description = "private access key"
 }

 variable "region_name" {
   type = string
   default = "us-sanjose-1"
   description = "region"
}

variable "compartment_id" {
   type = string
   default = "Give the compartment OCID here"
   description = "Information on compartment"
}

variable "user_id" {
   type = string
   default = "Give your user OCID here"
   description = "user information"
}

variable "instance_availability_domain" {
   type = string
   default = "rohq:US-SANJOSE-1-AD-1"
   description = "availability domain"
}

variable "instance_agent_config_plugins_config_desired_state" {
   type = string
   default = "isMonitoringDisabled"
   description = "instance shape"
}

variable "vcn_id" {
   type = string
   default = "give the VCN OCID here"
   description = "subnet id"
}

variable "subnet_id" {
   type = string
   default = "give the sunbet OCID here"
   description = "subnet id"
}

# variable "subnet_cidr_block" {
#    type = string
#    default = "10.0.0.0/24"
#    description = "subnet id"
# }

variable "source_ocid" {
  type        = string
  default = "search oci image over google to find the image for your region"
  description = "The OCID of an image or a boot volume to use, depending on the value of source_type."
  }

variable "cloud_agent_plugins" {
  description = "Whether each Oracle Cloud Agent plugins should be ENABLED or DISABLED."
  type        = map(string)
  default = {
    autonomous_linux       = "ENABLED"
    bastion                = "ENABLED"
    block_volume_mgmt      = "DISABLED"
    custom_logs            = "ENABLED"
    management             = "DISABLED"
    monitoring             = "ENABLED"
    osms                   = "ENABLED"
    run_command            = "ENABLED"
    vulnerability_scanning = "ENABLED"
  }
  #* need to craft a validation condition at some point
}

variable "instance_shape" {
   type = string
   default = "VM.Standard3.Flex"
   description = "instance shape"
}

variable "instance_agent_config_plugins_config_name" {
   type = string
   default = "Bastion"
   description = "instance shape"
}

variable "instance_platform_config_type" {
   type = string
   default = "INTEL_VM"
   description = "instance shape"
}

variable "source_type" {
  type        = string
  default     = "image"
  description = "The source type for the instance."
}

variable "boot_volume_size_in_gbs" {
  description = "The size of the boot volume in GBs."
  type        = number
  default     = 60
}

variable "instance_shape_config_baseline_ocpu_utilization" {
  description = "The size of the boot volume in GBs."
  type        = string
  default     = "BASELINE_1_2"
}

variable "instance_shape_config_memory_in_gbs" {
  description = "The size of the boot volume in GBs."
  type        = number
  default     = "60"
}

variable "instance_shape_config_nvmes" {
  description = "The size of the boot volume in GBs."
  type        = number
  default     = "1"
}

variable "instance_shape_config_ocpus" {
  description = "The size of the boot volume in GBs."
  type        = number
  default     = "3"
}


variable "instance_display_name" {
  type        = string
  default     = "OPA-Testing_Env_1"
  description = "The size of the boot volume in GBs."
}

Comments

Popular posts from this blog

Create OCI Infrastructure : Using Ansible

Oracle -OCI : Foundations