Terraform-Beispielskripte für das Provisioning von Ressourcen

Mit Terraform-Skripten können Sie Ressourcen in Fleet Application Management bereitstellen.

Im folgenden Beispielpaket:

  • instance_compartment_id: Bestimmt das Compartment, in dem die Compute-Instanz beginnt.
  • subnet_id: Gibt ein Subnetz im VCN an. Siehe VCN- und Subnetzverwaltung.
  • display_name: Gibt einen Anzeigenamen der Instanz an.
  • availability_domain: Gibt eine Domain an, in der die Compute-Instanz platziert werden soll. Um die spezifischen Namen der Availability-Domains Ihres Mandanten abzurufen, führen Sie den Vorgang ListAvailabilityDomains aus, oder suchen Sie die Availability-Domainnamen, wenn Sie eine Instanz erstellen mit der Konsole.

variables.tf

Diese Datei erstellt mehrere Variablen, die zum Provisioning von Ressourcen verwendet werden. Sie definiert die Variablen, die in der Terraform-Konfiguration verwendet werden.

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

Diese Datei enthält den Terraform-Code zum Provisioning von Ressourcen 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

Diese Datei enthält die Werte für die in variables.tf definierten Variablen. Sie können diese Datei mit Ihren tatsächlichen OCI-Zugangsdaten, Compartment-OCID, Availability-Domain, Instanzausprägung oder beliebigen Freiformtags anpassen, die Sie auf die Ressourcen anwenden möchten.

{
    "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"
}