Deploys infrastructure on Oracle Cloud Infrastructure (OCI) with ARM64 instances (Always Free tier eligible). Handles compartments, VCNs, subnets, security lists, and compute instances. Use when: setting up Oracle Cloud infrastructure, deploying ARM64 instances, troubleshooting OUT_OF_HOST_CAPACITY errors, optimizing for Always Free tier. Keywords: oracle cloud, OCI, ARM64, VM.Standard.A1.Flex, Always Free tier, OUT_OF_HOST_CAPACITY, oci compartment, oci vcn
This skill inherits all available tools. When active, it can use any tool Claude has access to.
README.mdassets/env-templatedocs/CAPACITY.mddocs/CONFIG.mddocs/INSTALL.mddocs/NETWORKING.mddocs/TROUBLESHOOTING.mdinput-schema.jsonreferences/OPERATIONS.mdscripts/check-oci-capacity.shscripts/cleanup-compartment.shscripts/monitor-and-deploy.shscripts/oci-infrastructure-setup.shStatus: Production Ready | Dependencies: OCI CLI, SSH key pair
references/OPERATIONS.mddocs/STOP. Before ANY deployment commands, collect ALL parameters from the user.
Copy this checklist and confirm each item:
Required Parameters:
- [ ] SERVER_NAME - Unique name for this server
- [ ] OCI_REGION - Region (us-ashburn-1, us-phoenix-1, ca-toronto-1, etc.)
- [ ] OCI_SHAPE - Instance shape (see profiles below)
- [ ] OCI_OCPUS - Number of OCPUs (1-4 for Always Free)
- [ ] OCI_MEMORY_GB - Memory in GB (1-24 for Always Free)
- [ ] SSH_KEY_PATH - Path to SSH public key (default: ~/.ssh/id_rsa.pub)
Deployment Purpose (determines recommended profile):
- [ ] Purpose: coolify / kasm / both / custom
coolify → 2 OCPU, 12GB RAM (Always Free eligible)
kasm → 4 OCPU, 24GB RAM (Always Free eligible)
both → 4 OCPU, 24GB RAM (Always Free eligible)
Always Free Tier Limits:
- Shape: VM.Standard.A1.Flex (ARM64)
- Max: 4 OCPUs, 24GB RAM total (can split across instances)
Recommended profiles by purpose:
| Purpose | OCPUs | RAM | Shape | Cost |
|---|---|---|---|---|
| coolify | 2 | 12GB | VM.Standard.A1.Flex | FREE |
| kasm | 4 | 24GB | VM.Standard.A1.Flex | FREE |
| both | 4 | 24GB | VM.Standard.A1.Flex | FREE |
DO NOT proceed to Prerequisites until ALL parameters are confirmed.
Before using this skill, verify the following:
oci --version
If missing, install with:
bash -c "$(curl -L https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)" -- --accept-all-defaults
source ~/.bashrc # or restart terminal
ls ~/.oci/config
If missing, configure with:
oci setup config
You'll need:
ls ~/.ssh/id_rsa.pub
If missing, generate with:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
stat -c %a ~/.ssh/id_rsa # Should be 600
If wrong, fix with:
chmod 600 ~/.ssh/id_rsa
oci iam availability-domain list
If this fails: API key may not be uploaded to OCI Console → Profile → API Keys
OCI Always Free ARM instances are highly demanded. Always check before deploying:
./scripts/check-oci-capacity.sh
<details>
<summary><strong>Options and troubleshooting</strong></summary>
# Check specific region
./scripts/check-oci-capacity.sh us-ashburn-1
# Use different OCI profile
./scripts/check-oci-capacity.sh --profile PRODUCTION
# Check multiple regions
for region in us-ashburn-1 us-phoenix-1 ca-toronto-1; do
echo "=== $region ==="
./scripts/check-oci-capacity.sh "$region"
done
No capacity? Use automated monitoring:
./scripts/monitor-and-deploy.sh --stack-id <STACK_OCID>
</details>
# Configure environment
cp scripts/.env.example scripts/.env
# Edit scripts/.env with your values
# Deploy
./scripts/oci-infrastructure-setup.sh
| Script | Purpose | Usage |
|---|---|---|
check-oci-capacity.sh | Check ARM instance availability | ./scripts/check-oci-capacity.sh [region] |
oci-infrastructure-setup.sh | Full infrastructure deployment | ./scripts/oci-infrastructure-setup.sh |
monitor-and-deploy.sh | Auto-deploy when capacity available | ./scripts/monitor-and-deploy.sh --stack-id <ID> |
cleanup-compartment.sh | Delete all resources | ./scripts/cleanup-compartment.sh <COMPARTMENT_OCID> |
Checks VM.Standard.A1.Flex availability across availability domains.
./scripts/check-oci-capacity.sh # Home region
./scripts/check-oci-capacity.sh us-ashburn-1 # Specific region
./scripts/check-oci-capacity.sh --profile DANIEL # With profile
Tests 4 OCPU / 24GB RAM (full free tier), falls back to 2/12 if unavailable.
Continuously monitors and auto-deploys when capacity found.
./scripts/monitor-and-deploy.sh \
--stack-id <STACK_OCID> \
--profile DANIEL \
--interval 300 \
--max-attempts 100
Creates complete infrastructure: compartment → VCN → subnet → IGW → security list → instance.
Requires .env file with OCI credentials and configuration.
Safely deletes compartment and all resources (requires confirmation).
./scripts/cleanup-compartment.sh ocid1.compartment.oc1..xxx
</details>
Common issues, best practices, configuration variables, and cleanup ordering are in references/OPERATIONS.md.
When performing infrastructure operations, log to the centralized system:
# After provisioning
log_admin "SUCCESS" "operation" "Provisioned OCI instance" "id=$INSTANCE_ID provider=OCI"
# After destroying
log_admin "SUCCESS" "operation" "Terminated OCI instance" "id=$INSTANCE_ID"
# On error
log_admin "ERROR" "operation" "OCI deployment failed" "error=OUT_OF_HOST_CAPACITY"
See admin skill's references/logging.md for full logging documentation.