From a21cdcf463b0ab65e014454e818a683ae688c520 Mon Sep 17 00:00:00 2001 From: Anis KHALFALLAH Date: Fri, 7 Nov 2025 01:12:20 +0100 Subject: [PATCH 1/4] add oracle oci-vm template Signed-off-by: Anis KHALFALLAH --- .icons/oracle.svg | 1 + registry/anis/.images/avatar.png | Bin 0 -> 58796 bytes registry/anis/README.md | 12 + registry/anis/templates/oci-vm/README.md | 56 +++ .../oci-vm/cloud-init/cloud-config.yaml.tftpl | 56 +++ registry/anis/templates/oci-vm/main.tf | 324 ++++++++++++++++++ 6 files changed, 449 insertions(+) create mode 100644 .icons/oracle.svg create mode 100644 registry/anis/.images/avatar.png create mode 100644 registry/anis/README.md create mode 100644 registry/anis/templates/oci-vm/README.md create mode 100644 registry/anis/templates/oci-vm/cloud-init/cloud-config.yaml.tftpl create mode 100644 registry/anis/templates/oci-vm/main.tf diff --git a/.icons/oracle.svg b/.icons/oracle.svg new file mode 100644 index 000000000..0981dfcff --- /dev/null +++ b/.icons/oracle.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/registry/anis/.images/avatar.png b/registry/anis/.images/avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..43f7602ce025b0a163c0611a1ccdae28649188a2 GIT binary patch literal 58796 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 Es2APp*rC6}v~Q3~jPj*Pi# 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 AYybcN literal 0 HcmV?d00001 diff --git a/registry/anis/README.md b/registry/anis/README.md new file mode 100644 index 000000000..c22dcecbe --- /dev/null +++ b/registry/anis/README.md @@ -0,0 +1,12 @@ +--- +display_name: "Anis Khalfallah" +bio: "DevOps Engineer" +github: "aniskhalfallah" +avatar: "./.images/avatar.png" +linkedin: "https://www.linkedin.com/in/khalfallah-anis/" +status: "community" +--- + +# Anis KHALFALLAH + +DevOps Engineer \ No newline at end of file diff --git a/registry/anis/templates/oci-vm/README.md b/registry/anis/templates/oci-vm/README.md new file mode 100644 index 000000000..46be61de7 --- /dev/null +++ b/registry/anis/templates/oci-vm/README.md @@ -0,0 +1,56 @@ +--- +display_name: Oracle Cloud VM (Linux) +description: Provision Oracle Cloud Infrastructure (OCI) instances as Coder workspaces +icon: ../../../../.icons/oracle.svg +verified: false +tags: [vm, linux, oracle, oci] +--- + +# Remote Development on Oracle Cloud Infrastructure (OCI) + +Provision OCI virtual machines as [Coder workspaces](https://coder.com/docs/workspaces) using this Terraform template. + +## Prerequisites + +To deploy Coder workspaces on Oracle Cloud, you’ll need the following: +### OCI Resources + +Before deploying, ensure your Oracle Cloud tenancy has: + +- A **VCN (Virtual Cloud Network)** already created +- At least one **subnet** within that VCN (can be public or private) +- An **Internet Gateway** attached to the VCN +- A **Route Table** that routes `0.0.0.0/0` traffic to the Internet Gateway + +> [!NOTE] +> This template **does not create networking resources** (VCN, subnet, gateway, etc.). +> You must reference an existing subnet using its **OCID** via the `subnet_id` variable. + +### OCI Authentication + +You’ll also need the following credentials: + +- **Tenancy OCID** +- **User OCID** +- **Fingerprint** +- **Private Key** +- **Compartment OCID**(Optional) default to Tenancy OCID if not defined +- **Subnet OCID** + +[OCI Documentation](https://docs.oracle.com/en-us/iaas/Content/dev/terraform/configuring.htm#api-key-auth) + +--- + +## Example `.tfvars` File + +```hcl +tenancy_ocid = "ocid1.tenancy.oc1..xxxx" +user_ocid = "ocid1.user.oc1..xxxx" +fingerprint = "aa:bb:cc:dd:ee:ff" +subnet_id = "ocid1.subnet.oc1.eu-marseille-1.aaaaaaaaxxx" +region = "eu-marseille-1" +private_key = < Date: Sun, 9 Nov 2025 22:19:38 +0100 Subject: [PATCH 2/4] chore: terraform fmt Signed-off-by: Anis KHALFALLAH --- registry/anis/templates/oci-vm/main.tf | 82 +++++++++++++------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/registry/anis/templates/oci-vm/main.tf b/registry/anis/templates/oci-vm/main.tf index d2ec50984..752b81b9d 100644 --- a/registry/anis/templates/oci-vm/main.tf +++ b/registry/anis/templates/oci-vm/main.tf @@ -161,20 +161,20 @@ data "coder_parameter" "instance_memory" { name = "32 GB" value = 32 } - + validation { - min = data.coder_parameter.instance_ocpus.value + min = data.coder_parameter.instance_ocpus.value error = "Memory must be at least equal to OCPUs (minimum 1:1 ratio)." } - + } provider "oci" { - tenancy_ocid = var.tenancy_ocid - user_ocid = var.user_ocid - fingerprint = var.fingerprint - private_key = var.private_key - region = data.coder_parameter.region.value + tenancy_ocid = var.tenancy_ocid + user_ocid = var.user_ocid + fingerprint = var.fingerprint + private_key = var.private_key + region = data.coder_parameter.region.value } @@ -216,10 +216,10 @@ locals { } data "oci_core_images" "ubuntu_image" { - compartment_id = local.compartment_id - operating_system = "Canonical Ubuntu" + compartment_id = local.compartment_id + operating_system = "Canonical Ubuntu" operating_system_version = "22.04" - shape = data.coder_parameter.instance_type.value + shape = data.coder_parameter.instance_type.value } data "oci_identity_availability_domains" "ads" { @@ -233,7 +233,7 @@ data "coder_parameter" "home_volume_size" { type = "number" default = 50 mutable = true - order = 3 + order = 3 option { name = "50GB" value = 50 @@ -253,35 +253,35 @@ data "coder_parameter" "home_volume_size" { } resource "oci_core_instance" "workspace" { - count = data.coder_workspace.me.start_count - availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name - compartment_id = local.compartment_id - shape = data.coder_parameter.instance_type.value - dynamic "shape_config" { - for_each = can(regex("Flex", data.coder_parameter.instance_type.value)) ? [1] : [] - content { - ocpus = data.coder_parameter.instance_ocpus.value - memory_in_gbs = data.coder_parameter.instance_memory.value - } - } - source_details { - source_type = "image" - source_id = data.oci_core_images.ubuntu_image.images[0].id - } - display_name = local.vm_name - create_vnic_details { - assign_public_ip = true - subnet_id = var.subnet_id + count = data.coder_workspace.me.start_count + availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name + compartment_id = local.compartment_id + shape = data.coder_parameter.instance_type.value + dynamic "shape_config" { + for_each = can(regex("Flex", data.coder_parameter.instance_type.value)) ? [1] : [] + content { + ocpus = data.coder_parameter.instance_ocpus.value + memory_in_gbs = data.coder_parameter.instance_memory.value } - metadata = { - user_data = base64encode(templatefile("cloud-init/cloud-config.yaml.tftpl", { - hostname = local.vm_name - username = lower(data.coder_workspace_owner.me.name) - home_volume_label = local.home_volume_label - init_script = base64encode(coder_agent.main.init_script) - coder_agent_token = coder_agent.main.token - })) - } + } + source_details { + source_type = "image" + source_id = data.oci_core_images.ubuntu_image.images[0].id + } + display_name = local.vm_name + create_vnic_details { + assign_public_ip = true + subnet_id = var.subnet_id + } + metadata = { + user_data = base64encode(templatefile("cloud-init/cloud-config.yaml.tftpl", { + hostname = local.vm_name + username = lower(data.coder_workspace_owner.me.name) + home_volume_label = local.home_volume_label + init_script = base64encode(coder_agent.main.init_script) + coder_agent_token = coder_agent.main.token + })) + } } resource "oci_core_volume" "home_volume" { @@ -297,7 +297,7 @@ resource "oci_core_volume_attachment" "attach_home" { compartment_id = local.compartment_id instance_id = oci_core_instance.workspace[0].id #device = "/dev/sdb" - volume_id = oci_core_volume.home_volume.id + volume_id = oci_core_volume.home_volume.id } module "code-server" { From 44aad70c12dd5ee047f68303dbccd862f2ecc4a9 Mon Sep 17 00:00:00 2001 From: Anis KHALFALLAH Date: Mon, 10 Nov 2025 22:02:21 +0100 Subject: [PATCH 3/4] chore: bun fmt Signed-off-by: Anis KHALFALLAH --- registry/anis/README.md | 2 +- registry/anis/templates/oci-vm/README.md | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/registry/anis/README.md b/registry/anis/README.md index c22dcecbe..20d5e7080 100644 --- a/registry/anis/README.md +++ b/registry/anis/README.md @@ -9,4 +9,4 @@ status: "community" # Anis KHALFALLAH -DevOps Engineer \ No newline at end of file +DevOps Engineer diff --git a/registry/anis/templates/oci-vm/README.md b/registry/anis/templates/oci-vm/README.md index 46be61de7..057763f0c 100644 --- a/registry/anis/templates/oci-vm/README.md +++ b/registry/anis/templates/oci-vm/README.md @@ -13,14 +13,15 @@ Provision OCI virtual machines as [Coder workspaces](https://coder.com/docs/work ## Prerequisites To deploy Coder workspaces on Oracle Cloud, you’ll need the following: + ### OCI Resources Before deploying, ensure your Oracle Cloud tenancy has: - A **VCN (Virtual Cloud Network)** already created - At least one **subnet** within that VCN (can be public or private) -- An **Internet Gateway** attached to the VCN -- A **Route Table** that routes `0.0.0.0/0` traffic to the Internet Gateway +- An **Internet Gateway** attached to the VCN +- A **Route Table** that routes `0.0.0.0/0` traffic to the Internet Gateway > [!NOTE] > This template **does not create networking resources** (VCN, subnet, gateway, etc.). @@ -53,4 +54,5 @@ private_key = < Date: Wed, 1 Apr 2026 20:40:32 +0200 Subject: [PATCH 4/4] chore: remove deprecated compartment_id from oci_core_volume_attachment resource and improve README Signed-off-by: Anis KHALFALLAH --- registry/anis/templates/oci-vm/README.md | 12 ++++++++++++ registry/anis/templates/oci-vm/main.tf | 7 +++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/registry/anis/templates/oci-vm/README.md b/registry/anis/templates/oci-vm/README.md index 057763f0c..8b200b079 100644 --- a/registry/anis/templates/oci-vm/README.md +++ b/registry/anis/templates/oci-vm/README.md @@ -27,6 +27,8 @@ Before deploying, ensure your Oracle Cloud tenancy has: > This template **does not create networking resources** (VCN, subnet, gateway, etc.). > You must reference an existing subnet using its **OCID** via the `subnet_id` variable. +> The available regions and instance shapes listed in this template are examples only, not all shapes are available in every region, and availability depends on your OCI tenancy and subscription tier. Check the [OCI documentation](https://docs.oracle.com/en-us/iaas/Content/Compute/References/computeshapes.htm) to confirm which shapes are available in your target region before deploying. + ### OCI Authentication You’ll also need the following credentials: @@ -42,6 +44,16 @@ You’ll also need the following credentials: --- +## Workspace Lifecycle + +| Event | OCI Resources | +| --------------------- | --------------------------------------------------------------------------------------- | +| **Workspace started** | A new compute instance (`oci_core_instance`) is created and the home volume is attached | +| **Workspace stopped** | The compute instance is destroyed, but the home volume (`oci_core_volume`) persists | +| **Workspace deleted** | All resources are destroyed, including the home volume | + +--- + ## Example `.tfvars` File ```hcl diff --git a/registry/anis/templates/oci-vm/main.tf b/registry/anis/templates/oci-vm/main.tf index 752b81b9d..fcb41abcc 100644 --- a/registry/anis/templates/oci-vm/main.tf +++ b/registry/anis/templates/oci-vm/main.tf @@ -36,7 +36,11 @@ variable "fingerprint" { variable "private_key" { description = "Private Key File" type = string - default = "" + default = <