Script Terraform di esempio per il provisioning delle risorse

Utilizzare gli script Terraform per eseguire il provisioning delle risorse in Fleet Application Management.

Nel seguente pacchetto di esempio:

  • instance_compartment_id: specifica il compartimento, in cui inizia l'istanza di computazione.
  • subnet_id: specifica una subnet nella VCN. Vedere Gestione di VCN e subnet.
  • display_name: specifica un nome visualizzato dell'istanza.
  • availability_domain: specifica un dominio in cui posizionare l'istanza di computazione. Per ottenere i nomi specifici dei domini di disponibilità della tenancy, eseguire l'operazione ListAvailabilityDomains o trovare i nomi di dominio di disponibilità durante la creazione di un'istanza mediante la console.

variables.tf

Questo file crea diverse variabili utilizzate per eseguire il provisioning delle risorse. Definisce le variabili utilizzate nella configurazione Terraform.

variable "compartment_id" {
  type        = string
  description = "OCID of compartment for Compute Instance"
}

variable "subnet_id" {
  type        = string
  description = "OCID of the subnet for Compute Instance"
}

variable "display_name" {
  type        = string
  description = "Display Name Of Compute Instance"
  default = "Test Instance"
}

variable "availability_domain" {
  type = string
  description = "Region based Availability Domain to place the Compute Instance"
}

variable "image_id" {
  type        = string
  description = "Image Id"
}

main.tf

Questo file contiene il codice Terraform per eseguire il provisioning delle risorse in OCI.

provider "oci" {}

resource "oci_core_instance" "generated_oci_core_instance" {

	agent_config {
		is_management_disabled = "false"
		is_monitoring_disabled = "false"
		plugins_config {
			desired_state = "DISABLED"
			name = "WebLogic Management Service"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Vulnerability Scanning"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Oracle Java Management Service"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "OS Management Service Agent"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "OS Management Hub Agent"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Management Agent"
		}
		plugins_config {
			desired_state = "ENABLED"
			name = "Custom Logs Monitoring"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Compute RDMA GPU Monitoring"
		}
		plugins_config {
			desired_state = "ENABLED"
			name = "Compute Instance Run Command"
		}
		plugins_config {
			desired_state = "ENABLED"
			name = "Compute Instance Monitoring"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Compute HPC RDMA Auto-Configuration"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Compute HPC RDMA Authentication"
		}
		plugins_config {
			desired_state = "ENABLED"
			name = "Cloud Guard Workload Protection"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Block Volume Management"
		}
		plugins_config {
			desired_state = "DISABLED"
			name = "Bastion"
		}
	}
	availability_config {
		is_live_migration_preferred = "true"
		recovery_action = "RESTORE_INSTANCE"
	}
	availability_domain = "${var.availability_domain}"
	compartment_id = "${var.instance_compartment_id}" 
	create_vnic_details {
		assign_ipv6ip = "false"
		assign_private_dns_record = "true"
		assign_public_ip = "true"
		subnet_id = "${var.subnet_id}" 
	}
	display_name = "${var.display_name}" 
	instance_options {
		are_legacy_imds_endpoints_disabled = "false"
	}

	// Oracle Linux 8 image source
	source_details {
		source_id = "ocid1.image.oc1..<unique_id>" 
		source_type = "image"
	}

	shape = "VM.Standard.A1.Flex"
	shape_config {
		memory_in_gbs = "6"
		ocpus = "1"
	}
}
# Get the latest Oracle Linux image
data "oci_core_images" "InstanceImageOCID" {
  compartment_id           = "${var.compartment_id}"
  operating_system         = "Oracle Linux"
  operating_system_version = "8"
  shape                    = "VM.Standard.A1.Flex"

  filter {
    name   = "display_name"
    values = ["^.*Oracle[^G]*$"]
    regex  = true
  }
}

conf.json

Questo file fornisce i valori per le variabili definite in variables.tf. Puoi personalizzare questo file con le credenziali OCI effettive, l'OCID del compartimento, il dominio di disponibilità, la forma dell'istanza o qualsiasi tag in formato libero che desideri applicare alle risorse.

{
    "compartment_id": "ocid1.compartment.oc1..{my_compartment}",
    "subnet_id": "ocid1.subnet.oc1.iad.{my_subnet}",
    "display_name": "Test Instance",
    "availability_domain":"cCnw:US-ASHBURN-AD-1",	
    "image_id": "ami-0c55b159cbfafe1f0"
}