リソースをプロビジョニングするためのサンプルTerraformスクリプト

Terraformスクリプトを使用して、フリート・アプリケーション管理でリソースをプロビジョニングします。

次のサンプル・パッケージ:

  • instance_compartment_id: コンピュート・インスタンスが起動するコンパートメントを指定します。
  • subnet_id: VCN内のサブネットを指定します。VCNとサブネットの管理を参照してください。
  • display_name: インスタンスの表示名を指定します。
  • availability_domain: コンピュート・インスタンスを配置するドメインを指定します。テナンシの可用性ドメインの特定の名前を取得するには、ListAvailabilityDomains操作を実行するか、コンソールを使用してインスタンスを作成するときに可用性ドメイン名を検索します。

variables.tf

このファイルは、リソースのプロビジョニングに使用される複数の変数を作成します。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

このファイルには、OCIでリソースをプロビジョニングするためのTerraformコードが含まれています。

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

このファイルは、variables.tfで定義された変数の値を提供します。このファイルは、実際のOCI資格証明、コンパートメントOCID、可用性ドメイン、インスタンス・シェイプ、またはリソースに適用するフリーフォーム・タグを使用してカスタマイズできます。

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