Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .icons/oracle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added registry/anis/.images/avatar.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions registry/anis/README.md
Original file line number Diff line number Diff line change
@@ -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
56 changes: 56 additions & 0 deletions registry/anis/templates/oci-vm/README.md
Original file line number Diff line number Diff line change
@@ -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 = <<EOT
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASC...
-----END PRIVATE KEY-----
EOT
56 changes: 56 additions & 0 deletions registry/anis/templates/oci-vm/cloud-init/cloud-config.yaml.tftpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
#cloud-config
hostname: ${hostname}
users:
- name: ${username}
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
groups: sudo
shell: /bin/bash
packages:
- git
- curl
- wget
- unzip
disk_setup:
/dev/sdb:
table_type: 'gpt'
layout: true
overwrite: false
fs_setup:
- label: ${home_volume_label}
filesystem: ext4
device: /dev/sdb
partition: auto
mounts:
- ["/dev/sdb", "/home/${username}", "ext4", "defaults", "0", "2"]
write_files:
- path: /opt/coder/init
permissions: "0755"
encoding: b64
content: ${init_script}
- path: /etc/systemd/system/coder-agent.service
permissions: "0644"
content: |
[Unit]
Description=Coder Agent
After=network-online.target
Wants=network-online.target

[Service]
User=${username}
ExecStart=/opt/coder/init
Environment=CODER_AGENT_TOKEN=${coder_agent_token}
Restart=always
RestartSec=10
TimeoutStopSec=90
KillMode=process

OOMScoreAdjust=-1000
SyslogIdentifier=coder-agent

[Install]
WantedBy=multi-user.target
runcmd:
- mkdir -p /home/${username}
- chown ${username}:${username} /home/${username}
- systemctl enable coder-agent
- systemctl start coder-agent
Loading