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
Post a Comment