{"id":760,"date":"2026-04-15T11:47:21","date_gmt":"2026-04-15T11:47:21","guid":{"rendered":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-ravello-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-other-services\/"},"modified":"2026-04-15T11:47:21","modified_gmt":"2026-04-15T11:47:21","slug":"oracle-cloud-ravello-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-other-services","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/tutorials\/oracle-cloud-ravello-tutorial-architecture-pricing-use-cases-and-hands-on-guide-for-other-services\/","title":{"rendered":"Oracle Cloud Ravello Tutorial: Architecture, Pricing, Use Cases, and Hands-On Guide for Other Services"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Category<\/h2>\n\n\n\n<p>Other Services<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p><strong>Status note (important):<\/strong> <em>Ravello<\/em> (often referenced as <strong>Oracle Ravello Cloud Service<\/strong>) was an Oracle Cloud service acquired from Ravello Systems and historically used to run complex, VM-based application environments (including nested virtualization) on top of public cloud infrastructure. <strong>Oracle has since retired\/discontinued Ravello.<\/strong> You should <strong>verify the current availability and end-of-life status in Oracle\u2019s official notices and documentation<\/strong> before planning any new usage. Because new Ravello tenants are typically not available today, this tutorial also includes <strong>practical, executable guidance for Ravello-style workflows and migrations on Oracle Cloud Infrastructure (OCI)<\/strong> where appropriate.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What this service is<\/h3>\n\n\n\n<p>Ravello is (was) a cloud service for <strong>importing VM-based application stacks<\/strong> (for example, VMware vSphere or VirtualBox images), modeling their networking, and <strong>publishing<\/strong> them to run on public cloud capacity\u2014without requiring you to redesign everything into cloud-native constructs on day one.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Simple explanation (one paragraph)<\/h3>\n\n\n\n<p>If you have an on-prem VM lab or a multi-VM enterprise app (web + app + database + AD, etc.) and you want to run it in the cloud quickly with minimal refactoring, Ravello provided a way to <strong>lift-and-shift entire environments<\/strong>\u2014including complex networking\u2014and run them as a cloud-hosted lab or dev\/test environment.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Technical explanation (one paragraph)<\/h3>\n\n\n\n<p>Ravello combined a SaaS control plane (UI + APIs) with a virtualization\/networking approach that allowed <strong>VM-centric blueprints<\/strong> to be imported (OVF\/OVA), configured (CPU\/RAM\/disks), connected via virtual networks, and then deployed onto supported public clouds. Ravello was particularly known for supporting <strong>nested virtualization<\/strong> scenarios (for example, running ESXi inside the cloud for training labs) and abstracting underlying cloud networking differences.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What problem it solves<\/h3>\n\n\n\n<p>Ravello addressed the \u201c<strong>cloud migration gap<\/strong>\u201d where teams want cloud elasticity and on-demand environments but cannot immediately refactor:\n&#8211; Legacy or vendor appliances that only ship as VMs\n&#8211; Training labs requiring isolated student environments\n&#8211; Multi-VM enterprise stacks that depend on L2-ish assumptions or static network patterns\n&#8211; Rapid dev\/test environments that match on-prem more closely than cloud-native equivalents<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. What is Ravello?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Official purpose (what Ravello was designed to do)<\/h3>\n\n\n\n<p>Ravello\u2019s purpose was to let you <strong>run existing VM workloads and complex, multi-VM environments on public clouds<\/strong> with minimal changes, by modeling them as reusable application templates and deploying them on demand.<\/p>\n\n\n\n<p>Because Ravello is retired, treat the following as <strong>historical capability descriptions<\/strong> and validate details in archived Oracle documentation where available.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Core capabilities<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Import VM images<\/strong> (commonly OVF\/OVA; sometimes VMDK-based artifacts depending on workflow)<\/li>\n<li>Build reusable <strong>blueprints<\/strong> (templates) for complex, multi-tier applications<\/li>\n<li>Create runnable <strong>applications\/environments<\/strong> from those blueprints<\/li>\n<li>Define <strong>virtual networks<\/strong>, subnets, and connectivity between VMs<\/li>\n<li><strong>Publish\/deploy<\/strong> environments onto supported cloud infrastructure locations<\/li>\n<li>Manage environment lifecycle: start\/stop, scale (within limits), snapshot-like operations (feature details vary\u2014verify in official docs)<\/li>\n<li>Provide self-service provisioning for labs\/dev\/test (often used by training organizations)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Major components (conceptual model)<\/h3>\n\n\n\n<p>Terminology varied across versions, but the common conceptual pieces were:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Component<\/th>\n<th>What it represented<\/th>\n<th>Why it mattered<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Blueprint<\/strong><\/td>\n<td>A template describing VMs, disks, networks, and boot order<\/td>\n<td>Repeatable environments for teams or classes<\/td>\n<\/tr>\n<tr>\n<td><strong>Application \/ Environment<\/strong><\/td>\n<td>A running instance created from a blueprint<\/td>\n<td>The actual deployed lab\/dev\/test stack<\/td>\n<\/tr>\n<tr>\n<td><strong>VM \/ Node<\/strong><\/td>\n<td>An individual virtual machine definition<\/td>\n<td>Resource sizing, disk, NICs, metadata<\/td>\n<\/tr>\n<tr>\n<td><strong>Network<\/strong><\/td>\n<td>Virtual network(s) connecting VMs<\/td>\n<td>Preserved topology and dependencies<\/td>\n<\/tr>\n<tr>\n<td><strong>Publish Location<\/strong><\/td>\n<td>Target cloud and region where it runs<\/td>\n<td>Controls latency, data residency, cost<\/td>\n<\/tr>\n<tr>\n<td><strong>User \/ Role<\/strong><\/td>\n<td>Access control within the Ravello portal<\/td>\n<td>Governance for teams and students<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Service type<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Type:<\/strong> Managed cloud service (SaaS control plane) orchestrating VM-based environments on public cloud compute.<\/li>\n<li><strong>Primary workload model:<\/strong> Virtual machines (VMs), VM networks, and multi-VM topologies (not containers-first).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scope (regional\/global\/account-scoped)<\/h3>\n\n\n\n<p>Historically, Ravello behaved like:\n&#8211; <strong>Account\/subscription-scoped<\/strong> service with tenants and users\n&#8211; A <strong>global control plane<\/strong> (SaaS) where you selected a <strong>target cloud region<\/strong> for actual runtime placement<br\/>\nExact scoping (and supported regions\/providers) changed over time\u2014<strong>verify in official docs<\/strong> if you have an active legacy tenant.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">How it fit into the Oracle Cloud ecosystem<\/h3>\n\n\n\n<p>When active, Ravello complemented Oracle Cloud by providing:\n&#8211; A VM-centric migration and lab platform for workloads not ready for OCI-native patterns\n&#8211; A bridge for VMware-like labs and training environments\n&#8211; A stepping stone toward OCI services (Compute, Networking, Object Storage, IAM)<\/p>\n\n\n\n<p>Today, because Ravello is discontinued, Oracle Cloud users typically replace Ravello with:\n&#8211; <strong>OCI Compute<\/strong> (for general VM hosting)\n&#8211; <strong>OCI Networking (VCN)<\/strong> (for network topology and isolation)\n&#8211; <strong>OCI VMware Solution<\/strong> (for managed VMware SDDC use cases)\n&#8211; <strong>Oracle Cloud Migrations<\/strong> and partner tooling (where applicable)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Why use Ravello?<\/h2>\n\n\n\n<p>Because Ravello is generally unavailable for new usage, this section is written in two parts:\n1) <strong>Why teams historically chose Ravello<\/strong>, and<br\/>\n2) <strong>What to choose now on Oracle Cloud<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Business reasons (historical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Faster time-to-cloud<\/strong> for VM-based apps: lift-and-shift labs without re-architecture<\/li>\n<li><strong>Reduced training\/lab logistics:<\/strong> eliminate on-prem lab hardware management<\/li>\n<li><strong>On-demand environments:<\/strong> provision per team, per student, per sprint<\/li>\n<li><strong>Better utilization:<\/strong> start\/stop environments to reduce runtime costs (depending on pricing model and whether \u201cstopped\u201d still incurred storage charges)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Technical reasons (historical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Multi-VM application modeling<\/strong> (blueprints) with consistent repeatability<\/li>\n<li><strong>Complex networking abstraction<\/strong> for labs and legacy stacks (verify exact capabilities per version)<\/li>\n<li><strong>Nested virtualization<\/strong> support scenarios (commonly cited in training\/lab contexts)<\/li>\n<li><strong>Portability<\/strong> of VM artifacts (import from common VM formats)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational reasons (historical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Centralized self-service portal for teams<\/li>\n<li>Environment lifecycle operations (publish, stop\/start, duplicate)<\/li>\n<li>Isolation between environments (important for labs\/training)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/compliance reasons (historical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ability to isolate environments per team\/class<\/li>\n<li>Choose deployment region\/location for residency and latency (subject to available cloud locations)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Scalability\/performance reasons (historical)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Scale by provisioning more environments rather than scaling a single environment infinitely<\/li>\n<li>Performance depended heavily on the underlying public cloud instance types and storage\/network characteristics<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should choose it (today)<\/h3>\n\n\n\n<p>In most cases, <strong>you should not plan new Ravello usage<\/strong> because it is retired. Choose Ravello only if:\n&#8211; Your organization has <strong>an existing legacy Ravello tenant<\/strong> still operating (rare), and\n&#8211; You need to <strong>maintain an existing lab<\/strong> temporarily while executing a migration plan.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">When teams should not choose it<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>If you are starting a new project on Oracle Cloud today<\/li>\n<li>If you need long-term supportability, modern security controls, or deep OCI-native integrations<\/li>\n<li>If you need guaranteed roadmap and availability for new deployments<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">4. Where is Ravello used?<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Industries<\/h3>\n\n\n\n<p>Historically common in:\n&#8211; <strong>Education &amp; training<\/strong> (hands-on labs for VMware, networking, security, middleware)\n&#8211; <strong>Software vendors<\/strong> (demo environments and PoCs)\n&#8211; <strong>Enterprises<\/strong> with large VM estates needing interim cloud hosting\n&#8211; <strong>IT consulting and system integrators<\/strong> (portable customer demos)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Team types<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Platform and lab operations teams<\/li>\n<li>Dev\/test teams supporting legacy stacks<\/li>\n<li>Pre-sales engineering and solution architecture teams<\/li>\n<li>Training delivery teams<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Workloads<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Multi-tier VM apps (web\/app\/db)<\/li>\n<li>Directory services and identity labs (AD\/LDAP)<\/li>\n<li>Network\/security labs (firewalls, IDS, jump hosts)<\/li>\n<li>Vendor appliances delivered as VMs<\/li>\n<li>Temporary staging environments resembling on-prem<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Architectures<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Blueprint-based repeatable environments<\/li>\n<li>Per-tenant or per-student isolated networks<\/li>\n<li>Hub\/spoke patterns for shared services (historically possible depending on networking features\u2014<strong>verify in official docs<\/strong>)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Real-world deployment contexts<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Instructor-led training with dozens\/hundreds of parallel student environments<\/li>\n<li>Product demos spun up for short windows (hours\/days)<\/li>\n<li>Migration rehearsals: validate a VM stack in cloud before re-platforming<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Production vs dev\/test usage<\/h3>\n\n\n\n<p>Ravello was predominantly used for:\n&#8211; <strong>Dev\/test, training, demos, PoCs<\/strong>\nIt was less common (and often not recommended) as the long-term platform for mission-critical production systems due to lifecycle, provider abstraction limits, and operational constraints.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Top Use Cases and Scenarios<\/h2>\n\n\n\n<p>Below are <strong>realistic<\/strong> Ravello-aligned use cases (historical), with \u201cwhat to do now\u201d implications in mind.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">1) Training labs with per-student isolated environments<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> You need 50\u2013500 identical lab environments, isolated per student.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Blueprints enabled mass cloning of identical stacks with consistent networking.<\/li>\n<li><strong>Example:<\/strong> A VMware + Linux admin course provisions a 6-VM lab per student for 3 days.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">2) Lift-and-shift a VMware-based demo environment<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Sales engineers need consistent demos without carrying hardware.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Import OVAs and publish quickly; start\/stop when not needed.<\/li>\n<li><strong>Example:<\/strong> A database vendor runs a 3-tier demo with preloaded datasets.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">3) Multi-VM legacy application rehearsal before OCI migration<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> You need to test whether the app works in cloud before redesigning it.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Recreated an on-prem-like environment quickly.<\/li>\n<li><strong>Example:<\/strong> A 10-VM app with static IP assumptions is validated in a cloud-hosted lab.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">4) Vendor appliance evaluation (security, networking, monitoring)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Appliances are shipped as VMs and require specific NIC\/network setups.<\/li>\n<li><strong>Why Ravello fit:<\/strong> VM-first and topology-focused workflow.<\/li>\n<li><strong>Example:<\/strong> Evaluate a virtual firewall and SIEM collector with multiple interfaces.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">5) Reproducible QA environments for regression testing<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> QA needs identical environments for each release and bug reproduction.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Blueprints and cloning reduced configuration drift.<\/li>\n<li><strong>Example:<\/strong> A 3-tier Java app environment is recreated per release candidate.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6) Classroom \u201creset\u201d at scale<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Students break labs; you must reset quickly.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Recreate or revert environments (capabilities varied\u2014verify in docs).<\/li>\n<li><strong>Example:<\/strong> Reset 120 student environments between sessions.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">7) Temporary partner enablement labs<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Partners need a sandbox for a week without VPN access to corporate networks.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Self-service access to isolated environments.<\/li>\n<li><strong>Example:<\/strong> A partner enablement program runs labs across multiple time zones.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">8) On-demand internal IT sandboxes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Infra teams need isolated testbeds for patching and changes.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Quick provisioning of realistic VM stacks.<\/li>\n<li><strong>Example:<\/strong> Test AD schema changes, GPO updates, and patch bundles.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">9) \u201cIdentical to on-prem\u201d troubleshooting replicas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> Production issue needs a close replica for debugging.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Import production-like VM templates and mimic topology.<\/li>\n<li><strong>Example:<\/strong> Recreate an older OS + middleware stack to reproduce a memory leak.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">10) Nested virtualization labs (where supported)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> You need to teach vSphere concepts requiring ESXi\/vCenter.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Known for nested virtualization scenarios (verify exact support details).<\/li>\n<li><strong>Example:<\/strong> A vSphere class runs nested ESXi hosts inside cloud VMs for 2 days.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">11) Disaster recovery rehearsal for VM stacks (limited scope)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> You want to validate that VM workloads can run offsite.<\/li>\n<li><strong>Why Ravello fit:<\/strong> Could host VM environments in a cloud location for testing.<\/li>\n<li><strong>Example:<\/strong> Quarterly DR test for a departmental application suite.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">12) Migration staging: converting OVA\/OVF and validating boot<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> You need a pipeline to validate imported VM images.<\/li>\n<li><strong>Why Ravello fit:<\/strong> VM import + environment lifecycle made iterative testing easier.<\/li>\n<li><strong>Example:<\/strong> Convert golden images and test boot across multiple environments.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">6. Core Features<\/h2>\n\n\n\n<p>Because Ravello is discontinued, the items below describe <strong>the core features Ravello was known for<\/strong>. If you still have a legacy Ravello tenant, <strong>verify exact feature availability in the tenant\u2019s UI and archived Oracle docs<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">6.1 VM import (OVF\/OVA-centric workflows)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Lets you import VM appliances and multi-VM packages commonly exported from VMware\/VirtualBox.<\/li>\n<li><strong>Why it matters:<\/strong> Minimizes refactoring and repackaging.<\/li>\n<li><strong>Practical benefit:<\/strong> Rapid onboarding of legacy systems and lab templates.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Image compatibility, guest OS drivers, and networking expectations can still cause boot issues; import constraints and supported formats vary\u2014verify in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.2 Blueprint-based application modeling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> A blueprint defines VMs, their resources, disks, networks, and relationships.<\/li>\n<li><strong>Why it matters:<\/strong> Repeatability and scale for labs and dev\/test.<\/li>\n<li><strong>Practical benefit:<\/strong> \u201cCreate once, run many times\u201d across teams\/classes.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Blueprint abstraction may not map 1:1 to OCI-native constructs (VCNs, NSGs, route tables).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.3 Publish\/deploy to a target cloud location<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Deploys a blueprint\/application to a chosen cloud location\/region (depending on supported providers at the time).<\/li>\n<li><strong>Why it matters:<\/strong> Lets you select region proximity, cost, or data residency.<\/li>\n<li><strong>Practical benefit:<\/strong> Run the same blueprint across multiple locations for latency testing or regional classes.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Underlying instance types and features differ by provider; performance and networking behavior can vary.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.4 Environment lifecycle controls (start\/stop\/clone)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Operational controls to manage runtime environments.<\/li>\n<li><strong>Why it matters:<\/strong> Cost and operational efficiency for ephemeral labs.<\/li>\n<li><strong>Practical benefit:<\/strong> Turn off environments when not needed; clone for multiple users.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> \u201cStopped\u201d may still incur storage charges; exact semantics depend on underlying cloud resources and Ravello implementation.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.5 Multi-VM networking topology management<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Define how VMs connect, including multi-NIC designs.<\/li>\n<li><strong>Why it matters:<\/strong> Many enterprise labs depend on topology, not just compute.<\/li>\n<li><strong>Practical benefit:<\/strong> Model realistic networks for training and validation.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Deep L2 behaviors across public clouds are non-trivial; Ravello used abstraction approaches that may not match every edge case (verify historical docs).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.6 Role-based access control (tenant users and permissions)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Controls who can manage blueprints, applications, and environments.<\/li>\n<li><strong>Why it matters:<\/strong> Essential for shared lab platforms.<\/li>\n<li><strong>Practical benefit:<\/strong> Separate instructors\/admins from students\/users.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> Integration with enterprise identity providers varies by era\/version\u2014verify in official docs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.7 Catalog-style reuse for labs and demos<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Reuse standardized blueprints repeatedly.<\/li>\n<li><strong>Why it matters:<\/strong> Consistency across classes and demos.<\/li>\n<li><strong>Practical benefit:<\/strong> Reduce configuration drift and manual setup.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">6.8 API\/automation potential (where available)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>What it does:<\/strong> Automate provisioning and lifecycle operations programmatically.<\/li>\n<li><strong>Why it matters:<\/strong> Integrates with CI\/CD, class scheduling systems, or internal portals.<\/li>\n<li><strong>Practical benefit:<\/strong> Self-service lab provisioning at scale.<\/li>\n<li><strong>Limitations\/caveats:<\/strong> API coverage and authentication methods depend on the service version\u2014verify in official docs.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">7. Architecture and How It Works<\/h2>\n\n\n\n<p>This section explains Ravello\u2019s architecture <strong>at a high level<\/strong> and then maps practical equivalents on Oracle Cloud today.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">High-level service architecture (conceptual)<\/h3>\n\n\n\n<p>Ravello typically consisted of:\n&#8211; A <strong>SaaS control plane<\/strong> (UI + API) where you managed blueprints and applications.\n&#8211; A <strong>runtime layer<\/strong> that placed VM workloads onto underlying public cloud compute resources.\n&#8211; A <strong>networking abstraction<\/strong> to connect VMs according to the blueprint\u2019s topology.\n&#8211; Storage handling for VM disks, snapshots\/versions (capabilities varied).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Request\/data\/control flow (conceptual)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>User logs into Ravello portal and defines\/imports a blueprint.<\/li>\n<li>User creates an application\/environment from the blueprint.<\/li>\n<li>User selects a publish location (cloud\/region).<\/li>\n<li>Ravello orchestrates deployment:\n   &#8211; Allocates compute resources\n   &#8211; Attaches storage for VM disks\n   &#8211; Configures network connectivity per blueprint<\/li>\n<li>Users access VMs via public IPs, jump boxes, or VPN-like approaches (depending on design).<\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">Integrations with related services (historical and present)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Historical:<\/strong> Integration was primarily with underlying IaaS providers (compute\/network\/storage abstraction).<\/li>\n<li><strong>In OCI today (replacement approach):<\/strong><\/li>\n<li>Use <strong>OCI Compute<\/strong> for VMs<\/li>\n<li>Use <strong>VCN, subnets, route tables, NSGs\/Security Lists<\/strong> for networking<\/li>\n<li>Use <strong>Object Storage<\/strong> for image artifacts<\/li>\n<li>Use <strong>IAM<\/strong> for identity and access control<\/li>\n<li>Use <strong>Logging, Monitoring, Events, Notifications<\/strong> for ops visibility (OCI-native)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Dependency services<\/h3>\n\n\n\n<p>Ravello depended on:\n&#8211; Underlying cloud compute and storage\n&#8211; Reliable management\/control plane connectivity\n&#8211; VM image compatibility (guest OS drivers, boot firmware, etc.)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security\/authentication model (conceptual)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tenant user management with roles (details vary)<\/li>\n<li>Environment isolation as a security boundary for labs<\/li>\n<li>Network exposure controlled through published endpoints\/public IPs and firewall rules defined per environment (details vary)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Networking model (conceptual)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Blueprint-defined networks connected VMs<\/li>\n<li>Egress\/ingress to the internet or shared services typically required additional configuration<\/li>\n<li>Real behavior depends on the cloud provider and Ravello\u2019s overlay\/abstraction\u2014<strong>verify in official docs<\/strong><\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Monitoring\/logging\/governance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ravello: portal visibility and operational controls (historical)<\/li>\n<li>OCI replacement: Cloud-native observability and governance via OCI services<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Simple architecture diagram (conceptual Ravello flow)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart LR\n  U[User \/ Admin] --&gt; P[Ravello Portal (UI\/API)]\n  P --&gt; B[Blueprints &amp; App Definitions]\n  P --&gt; PUB[Publish to Cloud Location]\n  PUB --&gt; CP[Underlying Cloud Compute\/Storage\/Network]\n  CP --&gt; VM[Running VMs \/ Multi-VM App]\n  U --&gt;|SSH\/RDP\/Web| VM\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Production-style architecture diagram (Ravello-style labs + OCI migration landing zone)<\/h3>\n\n\n\n<pre><code class=\"language-mermaid\">flowchart TB\n  subgraph Identity\n    IDP[Enterprise IdP \/ SSO]\n    OCI_IAM[OCI IAM]\n  end\n\n  subgraph Ops\n    LOG[OCI Logging]\n    MON[OCI Monitoring]\n    VAULT[OCI Vault]\n  end\n\n  subgraph Network\n    VCN[OCI VCN]\n    SUBPUB[Public Subnet]\n    SUBPRV[Private Subnet]\n    IGW[Internet Gateway]\n    NAT[NAT Gateway]\n    BAST[Bastion \/ Jump Host]\n  end\n\n  subgraph Images\n    OBJ[OCI Object Storage Bucket]\n    IMG[OCI Custom Image]\n  end\n\n  subgraph Workloads\n    APPVM[App VM(s)]\n    DBVM[DB VM(s)]\n  end\n\n  IDP --&gt; OCI_IAM\n  OCI_IAM --&gt;|AuthZ| OBJ\n  OCI_IAM --&gt;|AuthZ| APPVM\n\n  OBJ --&gt; IMG --&gt; APPVM\n  VCN --&gt; SUBPUB --&gt; BAST\n  VCN --&gt; SUBPRV --&gt; APPVM\n  VCN --&gt; SUBPRV --&gt; DBVM\n  SUBPUB --&gt; IGW\n  SUBPRV --&gt; NAT --&gt; IGW\n\n  APPVM --&gt; LOG\n  APPVM --&gt; MON\n  DBVM --&gt; LOG\n  DBVM --&gt; MON\n  APPVM --&gt; VAULT\n<\/code><\/pre>\n\n\n\n<p><strong>How to interpret this diagram:<\/strong> If you previously used Ravello to publish multi-VM labs, the OCI pattern is to build a secure landing zone (VCN + subnets + IAM), store\/import images in Object Storage, run VMs on Compute, and use Bastion\/jump hosts for controlled access.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">8. Prerequisites<\/h2>\n\n\n\n<p>Because Ravello is discontinued, the hands-on portion focuses on <strong>Ravello-style VM image workflows on OCI<\/strong> (useful for migrations from Ravello or for teams modernizing VM labs).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Account\/tenancy requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>An <strong>Oracle Cloud (OCI) tenancy<\/strong> with billing enabled (or an eligible trial).<\/li>\n<li>Access to the OCI Console.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Permissions \/ IAM<\/h3>\n\n\n\n<p>At minimum, you need permissions to:\n&#8211; Create\/manage <strong>VCNs<\/strong>, subnets, gateways, route tables, NSGs\/security lists\n&#8211; Create\/manage <strong>Compute instances<\/strong>\n&#8211; Create\/manage <strong>Object Storage buckets and objects<\/strong>\n&#8211; Create\/manage <strong>Custom Images<\/strong> (image import)<\/p>\n\n\n\n<p>If you\u2019re in a restricted enterprise tenancy, ask an admin for a policy set that grants these capabilities in a compartment used for labs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Billing requirements<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You will incur OCI charges for:<\/li>\n<li>Compute instances<\/li>\n<li>Block volumes (boot and data)<\/li>\n<li>Object Storage<\/li>\n<li>Outbound data transfer<\/li>\n<li>Use the smallest shapes and shortest runtime to minimize cost.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Tools needed<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A workstation with:<\/li>\n<li><code>ssh<\/code> client<\/li>\n<li>A browser<\/li>\n<li>Optional (recommended for image conversion): Linux\/macOS with:<ul>\n<li><code>qemu-img<\/code><\/li>\n<li><code>tar<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Optional: OCI CLI (not required for this lab)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Region availability<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI: choose a region near you.<\/li>\n<li>Ravello: legacy availability only; <strong>verify<\/strong>.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Quotas\/limits<\/h3>\n\n\n\n<p>Common OCI limits you may hit:\n&#8211; Compute instance limits (per shape family)\n&#8211; Block volume limits\n&#8211; Object Storage request limits (usually high)\n&#8211; Custom image size limits (verify in official OCI docs)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Prerequisite services<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI Networking (VCN)<\/li>\n<li>OCI Compute<\/li>\n<li>OCI Object Storage<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">9. Pricing \/ Cost<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Ravello pricing model (historical)<\/h3>\n\n\n\n<p>Ravello pricing changed over time and may have been contract-based. Historically, costs were typically driven by:\n&#8211; VM runtime (hours)\n&#8211; Allocated resources (vCPU\/RAM)\n&#8211; Storage consumed by VM disks and snapshots\n&#8211; Public IP addresses\n&#8211; Outbound data transfer<\/p>\n\n\n\n<p><strong>Important:<\/strong> Because Ravello is discontinued, public pricing pages may no longer be available. If you still operate under a legacy contract, consult your Oracle account team or archived documentation and invoices.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">OCI pricing model (what you\u2019ll use now)<\/h3>\n\n\n\n<p>For Ravello-style VM labs and migration staging on Oracle Cloud, OCI costs generally come from:<\/p>\n\n\n\n<p><strong>Pricing dimensions<\/strong>\n&#8211; <strong>Compute:<\/strong> instance-hours based on shape (ECPU\/OCPU\/vCPU model depends on shape family)\n&#8211; <strong>Block Volume:<\/strong> GB-month for boot and data volumes, plus performance tiers (depending on configuration)\n&#8211; <strong>Object Storage:<\/strong> GB-month stored, requests, and retrieval (tiers vary)\n&#8211; <strong>Networking:<\/strong> outbound data transfer, NAT Gateway usage, Load Balancer (if used)\n&#8211; Optional services: Bastion, Logging retention, Vault secrets, etc.<\/p>\n\n\n\n<p><strong>Free tier<\/strong>\nOCI has a Free Tier for some resources in many regions. Eligibility and included resources change\u2014<strong>verify on the official OCI Free Tier page<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Cost drivers (direct + indirect)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Big VM images:<\/strong> imported images (tens of GB) increase Object Storage and transfer time\/cost.<\/li>\n<li><strong>Egress traffic:<\/strong> labs with software downloads and updates can generate outbound bandwidth costs.<\/li>\n<li><strong>Always-on environments:<\/strong> leaving instances running 24\/7 dominates cost.<\/li>\n<li><strong>NAT\/Load Balancers:<\/strong> convenience services add recurring costs.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Hidden\/indirect costs to watch<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Object Storage PUT\/GET requests at scale (for large lab automation)<\/li>\n<li>Logging retention if you store high-volume logs for a long time<\/li>\n<li>Multiple copies of VM images (bucket + custom image + boot volumes)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost optimization tips<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Prefer <strong>ephemeral labs<\/strong>: start only during lab windows.<\/li>\n<li>Use <strong>smaller shapes<\/strong> for students; reserve larger shapes for shared services.<\/li>\n<li>Standardize images and avoid duplicate copies.<\/li>\n<li>Use <strong>private subnets<\/strong> and a <strong>bastion<\/strong> instead of public IPs on every VM.<\/li>\n<li>Consider <strong>instance pools<\/strong> or automation to create\/destroy labs on schedule.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example low-cost starter estimate (no fabricated numbers)<\/h3>\n\n\n\n<p>A minimal OCI lab environment typically includes:\n&#8211; 1 small compute instance\n&#8211; 1 boot volume\n&#8211; A small Object Storage bucket (for an image artifact)\n&#8211; A VCN and subnets (no direct cost)<\/p>\n\n\n\n<p>Exact totals depend on region, shape, and hours used. Use the official OCI pricing pages and calculator:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI pricing landing page: https:\/\/www.oracle.com\/cloud\/pricing\/<\/li>\n<li>OCI cost estimator\/calculator (if available in your region): https:\/\/www.oracle.com\/cloud\/costestimator.html (verify current URL in Oracle docs)<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Example production cost considerations (what changes)<\/h3>\n\n\n\n<p>For a production-like lab platform (dozens\/hundreds of environments):\n&#8211; Compute becomes the largest cost driver\n&#8211; Storage multiplies with per-environment boot volumes\n&#8211; Automation and observability costs (logging\/metrics retention)\n&#8211; Network egress for updates and student access\n&#8211; Operational overhead: golden image management, vulnerability management, patching<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">10. Step-by-Step Hands-On Tutorial<\/h2>\n\n\n\n<p>Because Ravello is discontinued, this lab focuses on a <strong>real, executable<\/strong> workflow you\u2019ll commonly need when leaving Ravello or replicating Ravello-style VM delivery on Oracle Cloud:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Take a VM appliance (OVA),<\/li>\n<li>Convert it to a cloud-importable format,<\/li>\n<li>Upload it to OCI Object Storage,<\/li>\n<li>Import it as a <strong>Custom Image<\/strong>,<\/li>\n<li>Launch a compute instance from that image,<\/li>\n<li>Validate access,<\/li>\n<li>Clean up.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Objective<\/h3>\n\n\n\n<p>Build a \u201cRavello-style\u201d VM image pipeline on <strong>Oracle Cloud Infrastructure<\/strong> by importing an OVA appliance into OCI and launching it as a compute instance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Lab Overview<\/h3>\n\n\n\n<p>You will:\n1. Create an OCI network (VCN + subnet).\n2. Prepare a VM image (OVA \u2192 disk image).\n3. Upload the disk image to Object Storage.\n4. Import a Custom Image in OCI.\n5. Create an instance from the image.\n6. Validate SSH access.\n7. Clean up all resources to avoid ongoing costs.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: Prepare your OCI compartment and region<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Sign in to the <strong>Oracle Cloud Console<\/strong>.<\/li>\n<li>Select the <strong>Region<\/strong> you want to use (top right).<\/li>\n<li>Choose or create a <strong>Compartment<\/strong> for the lab resources (for example, <code>lab-ravello-migration<\/code>).<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> You have a dedicated compartment and region selected to keep resources organized.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Create a VCN for the lab (VCN Wizard)<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Networking<\/strong> \u2192 <strong>Virtual Cloud Networks<\/strong>.<\/li>\n<li>Click <strong>Create VCN<\/strong>.<\/li>\n<li>Use <strong>VCN Wizard<\/strong> \u2192 <em>VCN with Internet Connectivity<\/em> (wording may vary).<\/li>\n<li>Provide:\n   &#8211; VCN name: <code>ravello-style-vcn<\/code>\n   &#8211; CIDR: accept default (or use <code>10.0.0.0\/16<\/code>)\n   &#8211; Create an <strong>Internet Gateway<\/strong>\n   &#8211; Create a <strong>Public Subnet<\/strong> (for simplest validation)<br\/>\n     For more secure setups, you would use a private subnet + Bastion, but this lab keeps it beginner-friendly.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> VCN, subnet, route table, and security list are created.<\/p>\n\n\n\n<p><strong>Verification:<\/strong>\n&#8211; Confirm the subnet has a route to the Internet Gateway (<code>0.0.0.0\/0<\/code>).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: Obtain a small OVA to import (choose a legal test image)<\/h3>\n\n\n\n<p>You need an OVA you are allowed to use. Options:\n&#8211; A vendor-provided test appliance\n&#8211; Your own exported VM\n&#8211; A lightweight Linux VM you built yourself and exported as OVA from VirtualBox or VMware<\/p>\n\n\n\n<p><strong>Important:<\/strong> Some operating systems have redistribution restrictions. Use a compliant image.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> You have a local file, for example:\n&#8211; <code>appliance.ova<\/code><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: Convert OVA to a cloud import format (QCOW2 is common)<\/h3>\n\n\n\n<p>OCI supports several custom image formats, and support can change. <strong>Verify current OCI custom image import requirements in official docs<\/strong>. A safe, commonly used path is to convert to <strong>QCOW2<\/strong>.<\/p>\n\n\n\n<p>On a Linux workstation:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Create a working directory:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">mkdir -p ~\/ravello-image-lab &amp;&amp; cd ~\/ravello-image-lab\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>Copy in your OVA:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">cp \/path\/to\/appliance.ova .\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"3\">\n<li>Extract the OVA (OVA is a tar archive):<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">tar -xvf appliance.ova\n<\/code><\/pre>\n\n\n\n<p>This typically produces:\n&#8211; <code>*.ovf<\/code> (descriptor)\n&#8211; <code>*.vmdk<\/code> (virtual disk)\n&#8211; <code>*.mf<\/code> (manifest) sometimes<\/p>\n\n\n\n<ol class=\"wp-block-list\" start=\"4\">\n<li>Convert the VMDK to QCOW2:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">qemu-img convert -p -f vmdk -O qcow2 disk1.vmdk appliance.qcow2\n<\/code><\/pre>\n\n\n\n<ol class=\"wp-block-list\" start=\"5\">\n<li>Check the disk image info:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">qemu-img info appliance.qcow2\n<\/code><\/pre>\n\n\n\n<p><strong>Expected outcome:<\/strong> You have <code>appliance.qcow2<\/code> ready to upload.<\/p>\n\n\n\n<p><strong>Common issue:<\/strong> Some OVAs contain multiple VMDKs. Convert the boot disk first (or consolidate disks as required). OCI custom images typically expect a bootable disk image.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Create an Object Storage bucket and upload the image<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Storage<\/strong> \u2192 <strong>Object Storage &amp; Archive Storage<\/strong> \u2192 <strong>Buckets<\/strong>.<\/li>\n<li>Click <strong>Create Bucket<\/strong>:\n   &#8211; Name: <code>ravello-image-import-bucket-&lt;unique&gt;<\/code>\n   &#8211; Default storage tier is fine for a lab<\/li>\n<li>Open the bucket \u2192 <strong>Upload<\/strong> \u2192 upload <code>appliance.qcow2<\/code>.<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> The QCOW2 image is stored in your bucket.<\/p>\n\n\n\n<p><strong>Verification:<\/strong>\n&#8211; Confirm the object appears with the correct size.\n&#8211; Copy the object name (you\u2019ll reference it during image import).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 6: Import a Custom Image in OCI from Object Storage<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Compute<\/strong> \u2192 <strong>Custom Images<\/strong> (or <strong>Images<\/strong> \u2192 <strong>Custom Images<\/strong>, depending on console navigation).<\/li>\n<li>Click <strong>Import image<\/strong> (wording may vary).<\/li>\n<li>\n<p>Provide:\n   &#8211; Name: <code>ravello-imported-image<\/code>\n   &#8211; OS \/ Image type details as requested (if prompted).<br\/>\n     If OCI requires OS type for guest agent compatibility, choose the closest match.\n   &#8211; Source: <strong>Object Storage<\/strong>\n   &#8211; Bucket: your bucket\n   &#8211; Object: <code>appliance.qcow2<\/code>\n   &#8211; Format: <strong>QCOW2<\/strong> (select if prompted)<\/p>\n<\/li>\n<li>\n<p>Start the import.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> A Custom Image enters an \u201cImporting\u201d state and eventually becomes \u201cAvailable\u201d.<\/p>\n\n\n\n<p><strong>Verification:<\/strong>\n&#8211; Wait until status is <strong>Available<\/strong>.\n&#8211; If it fails, open the import details and read the error.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 7: Launch a Compute instance from the imported image<\/h3>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Go to <strong>Compute<\/strong> \u2192 <strong>Instances<\/strong> \u2192 <strong>Create instance<\/strong>.<\/li>\n<li>Name: <code>ravello-imported-vm-01<\/code><\/li>\n<li>Image: select <strong>Custom Images<\/strong> \u2192 <code>ravello-imported-image<\/code><\/li>\n<li>Shape: choose a small shape compatible with your tenancy and region.<\/li>\n<li>Networking:\n   &#8211; VCN: <code>ravello-style-vcn<\/code>\n   &#8211; Subnet: the public subnet\n   &#8211; Assign a public IPv4 address: <strong>Yes<\/strong> (for easiest validation)<\/li>\n<li>Add SSH key:\n   &#8211; Provide your public key (<code>~\/.ssh\/id_rsa.pub<\/code> or <code>id_ed25519.pub<\/code>)<\/li>\n<\/ol>\n\n\n\n<p>Create the instance.<\/p>\n\n\n\n<p><strong>Expected outcome:<\/strong> Instance provisions and reaches <strong>Running<\/strong> state with a public IP.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 8: Validate access (SSH)<\/h3>\n\n\n\n<p>From your workstation:<\/p>\n\n\n\n<pre><code class=\"language-bash\">ssh -i ~\/.ssh\/id_ed25519 &lt;username&gt;@&lt;public_ip&gt;\n<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>&lt;username&gt;<\/code> depends on the OS image (commonly <code>opc<\/code> on Oracle Linux images, but for imported appliances it might differ).<\/li>\n<li>If you don\u2019t know the username, consult the appliance documentation.<\/li>\n<\/ul>\n\n\n\n<p><strong>Expected outcome:<\/strong> You can log in via SSH.<\/p>\n\n\n\n<p><strong>If SSH fails:<\/strong>\n&#8211; Confirm security list ingress allows TCP\/22 from your IP.\n&#8211; Confirm the VM is actually listening on port 22.\n&#8211; Confirm the appliance firewall allows SSH.\n&#8211; Confirm cloud-init\/agent expectations (imported appliances may not have OCI guest agent).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Validation<\/h3>\n\n\n\n<p>Use the following checks:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Instance status:<\/strong> Console shows <code>Running<\/code>.<\/li>\n<li><strong>Network reachability:<\/strong> You can <code>ping<\/code> the VM (ICMP may be blocked; not definitive).<\/li>\n<li><strong>SSH works:<\/strong> You can log in.<\/li>\n<li><strong>Disk\/OS boots:<\/strong> Run:<\/li>\n<\/ol>\n\n\n\n<pre><code class=\"language-bash\">uname -a\ndf -h\nip a\n<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Troubleshooting<\/h3>\n\n\n\n<h4 class=\"wp-block-heading\">Import fails with \u201cunsupported format\u201d or \u201cimage not bootable\u201d<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ensure you converted the correct disk and it\u2019s bootable.<\/li>\n<li>Confirm the format selection matches the file (QCOW2 vs VMDK).<\/li>\n<li>Verify image requirements (firmware\/UEFI vs BIOS) in official OCI custom image docs.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Instance boots but networking doesn\u2019t work<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Appliance might expect a specific NIC driver or static configuration.<\/li>\n<li>Check <code>ip a<\/code> and <code>ip r<\/code>.<\/li>\n<li>If the image uses static IP, reconfigure to DHCP or adjust VCN\/subnet to match.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">SSH key doesn\u2019t work<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Imported appliance may not install your SSH key automatically (no cloud-init).<\/li>\n<li>You may need console access or to bake credentials into the image before export.<\/li>\n<\/ul>\n\n\n\n<h4 class=\"wp-block-heading\">Port 22 blocked<\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Update the subnet security list or NSG to allow inbound SSH from your IP\/CIDR.<\/li>\n<li>Confirm the OS firewall (iptables\/firewalld) allows SSH.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cleanup<\/h3>\n\n\n\n<p>To avoid ongoing charges, delete resources in this order:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Terminate the instance<\/strong>\n   &#8211; Compute \u2192 Instances \u2192 <code>ravello-imported-vm-01<\/code> \u2192 <strong>Terminate<\/strong>\n   &#8211; Choose to delete attached boot volume (if appropriate).<\/p>\n<\/li>\n<li>\n<p><strong>Delete the Custom Image<\/strong>\n   &#8211; Compute \u2192 Custom Images \u2192 <code>ravello-imported-image<\/code> \u2192 <strong>Delete<\/strong><\/p>\n<\/li>\n<li>\n<p><strong>Delete the Object Storage object and bucket<\/strong>\n   &#8211; Storage \u2192 Buckets \u2192 delete <code>appliance.qcow2<\/code>\n   &#8211; Delete the bucket (must be empty)<\/p>\n<\/li>\n<li>\n<p><strong>Delete networking<\/strong>\n   &#8211; Networking \u2192 VCNs \u2192 <code>ravello-style-vcn<\/code> \u2192 <strong>Terminate<\/strong>\n   &#8211; If termination fails, delete dependent gateways\/resources first.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<p><strong>Expected outcome:<\/strong> No compute, storage, or network resources remain in the compartment for this lab.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">11. Best Practices<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Architecture best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Treat Ravello-style blueprints as <strong>infrastructure-as-data<\/strong>: version control the VM build steps and documentation.<\/li>\n<li>Separate <strong>golden images<\/strong> from <strong>runtime environments<\/strong>:<\/li>\n<li>Golden image pipeline: build \u2192 test \u2192 publish<\/li>\n<li>Runtime: create instances from known-good images<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">IAM\/security best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>least privilege<\/strong> IAM policies in OCI compartments.<\/li>\n<li>Separate compartments for:<\/li>\n<li><code>images<\/code> (Object Storage + custom images)<\/li>\n<li><code>labs-devtest<\/code> (instances and networks)<\/li>\n<li>Require MFA\/SSO for admin users.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Cost best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use schedules\/automation to <strong>terminate or stop<\/strong> lab environments after class hours.<\/li>\n<li>Minimize image sprawl:<\/li>\n<li>Keep one canonical image per course\/version<\/li>\n<li>Delete old imports and old objects<\/li>\n<li>Prefer private networking + bastion instead of public IPs on every VM.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Performance best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Choose shapes appropriate to the workload:<\/li>\n<li>IO-heavy appliances need adequate block volume performance<\/li>\n<li>Memory-heavy labs fail in subtle ways if undersized<\/li>\n<li>Keep images lean (remove unused packages) to reduce boot time and storage.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Reliability best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Store golden images in a controlled bucket with retention and restricted write access.<\/li>\n<li>Document a repeatable rebuild process; don\u2019t rely on a single hand-built OVA.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operations best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Tag everything: environment, owner, cost-center, course-id, expiration date.<\/li>\n<li>Use OCI Monitoring\/Logging for instances where possible (agent support varies by OS\/image).<\/li>\n<li>Keep a runbook: image import failures, networking fixes, access recovery.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Governance\/tagging\/naming best practices<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Naming convention example:<\/li>\n<li><code>img-ravello-mig-&lt;app&gt;-&lt;version&gt;<\/code><\/li>\n<li><code>vm-lab-&lt;course&gt;-&lt;studentid&gt;<\/code><\/li>\n<li><code>vcn-lab-&lt;course&gt;-&lt;date&gt;<\/code><\/li>\n<li>Mandatory tags:<\/li>\n<li><code>Owner<\/code>, <code>Purpose<\/code>, <code>Expiry<\/code>, <code>CostCenter<\/code>, <code>DataSensitivity<\/code><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">12. Security Considerations<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Identity and access model<\/h3>\n\n\n\n<p><strong>Ravello (historical):<\/strong>\n&#8211; Tenant users and role-based permissions.\n&#8211; Isolation between environments was a core requirement for labs.<\/p>\n\n\n\n<p><strong>OCI replacement (recommended today):<\/strong>\n&#8211; Use OCI <strong>IAM<\/strong> with compartments and policies.\n&#8211; Use groups\/roles aligned to responsibilities:\n  &#8211; Image builders\n  &#8211; Lab operators\n  &#8211; Students\/users (ideally limited; often better to provide access via bastion or web front-ends rather than full console access)<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Encryption<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI Object Storage encrypts data at rest by default (verify current behavior in OCI docs).<\/li>\n<li>Use <strong>customer-managed keys<\/strong> (OCI Vault) if required for compliance (where supported).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Network exposure<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Avoid public IPs on every VM for labs.<\/li>\n<li>Use:<\/li>\n<li>Private subnets<\/li>\n<li>Bastion\/jump hosts<\/li>\n<li>Tight NSG rules<\/li>\n<li>Restrict inbound to known IP ranges (instructor VPN, corporate egress, etc.).<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secrets handling<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Do not bake long-lived credentials into VM images.<\/li>\n<li>Use OCI Vault for secrets where possible.<\/li>\n<li>For training labs, rotate credentials per class and expire them.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Audit\/logging<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI provides audit logs for control-plane actions (IAM, networking, compute). Enable and retain per compliance needs.<\/li>\n<li>For guest OS logs, use an agent-based approach where supported; imported appliances may not support OCI agents.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Compliance considerations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Data residency: choose the OCI region and control object locations.<\/li>\n<li>Training labs often include sensitive configs (keys, certificates). Treat lab images as sensitive assets.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Common security mistakes<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Leaving SSH open to the world (<code>0.0.0.0\/0<\/code>) without restrictions<\/li>\n<li>Reusing the same admin password across all student labs<\/li>\n<li>Allowing students broad OCI console permissions<\/li>\n<li>Storing images in publicly readable buckets<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Secure deployment recommendations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use private networking and a single controlled entry point.<\/li>\n<li>Harden images: disable unnecessary services, enforce key-based SSH, patch regularly.<\/li>\n<li>Implement automatic expiration and teardown of environments.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">13. Limitations and Gotchas<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Ravello-specific (legacy) limitations<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Service discontinuation:<\/strong> You may not be able to create new tenants or run new workloads.<\/li>\n<li><strong>Supportability:<\/strong> Limited\/no roadmap; dependencies and tooling may be frozen.<\/li>\n<li><strong>Integration gaps:<\/strong> Not equivalent to OCI-native governance and observability.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">VM image portability gotchas (common when migrating from Ravello)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Guest OS driver mismatches (virtio, NIC naming)<\/li>\n<li>DHCP vs static IP assumptions<\/li>\n<li>BIOS vs UEFI boot mode mismatches<\/li>\n<li>Cloud-init\/agent expectations: imported appliances may not inject SSH keys automatically<\/li>\n<li>Licensing constraints for commercial OS and software<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Regional constraints<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI services are region-specific.<\/li>\n<li>Data transfer and latency vary by region; training labs in particular are sensitive to latency.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Pricing surprises<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Outbound data transfer for updates, package repos, and student access<\/li>\n<li>Keeping dozens of lab VMs running continuously<\/li>\n<li>Duplicate storage copies of large images<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Operational gotchas<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Imported images often require manual access recovery methods.<\/li>\n<li>\u201cGolden image drift\u201d if instructors modify running VMs and re-export ad hoc.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">14. Comparison with Alternatives<\/h2>\n\n\n\n<p>Because Ravello is retired, comparisons focus on <strong>what replaces Ravello-like outcomes<\/strong> today.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Option<\/th>\n<th>Best For<\/th>\n<th>Strengths<\/th>\n<th>Weaknesses<\/th>\n<th>When to Choose<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>OCI Compute + VCN (DIY labs)<\/strong><\/td>\n<td>VM-based labs and dev\/test<\/td>\n<td>Native OCI, full control, broad availability<\/td>\n<td>You build lifecycle automation yourself<\/td>\n<td>Most teams replacing Ravello<\/td>\n<\/tr>\n<tr>\n<td><strong>OCI VMware Solution<\/strong><\/td>\n<td>Managed VMware SDDC needs<\/td>\n<td>Familiar VMware tooling, vCenter, ESXi<\/td>\n<td>Higher cost\/complexity than single VMs<\/td>\n<td>When you truly need VMware stack semantics<\/td>\n<\/tr>\n<tr>\n<td><strong>OCI Marketplace images<\/strong><\/td>\n<td>Quick start common stacks<\/td>\n<td>Faster provisioning, supported images<\/td>\n<td>Less control over appliance packaging<\/td>\n<td>Standard workloads that don\u2019t require custom OVAs<\/td>\n<\/tr>\n<tr>\n<td><strong>VMware Cloud (other providers)<\/strong><\/td>\n<td>VMware-first cloud operations<\/td>\n<td>Strong VMware compatibility<\/td>\n<td>Vendor lock-in, cost<\/td>\n<td>When VMware operational model is required<\/td>\n<\/tr>\n<tr>\n<td><strong>OpenStack (self-managed)<\/strong><\/td>\n<td>Private cloud VM orchestration<\/td>\n<td>Control, open ecosystem<\/td>\n<td>Significant ops burden<\/td>\n<td>When you need on-prem private cloud<\/td>\n<\/tr>\n<tr>\n<td><strong>KubeVirt \/ Kubernetes-based virtualization<\/strong><\/td>\n<td>VM workloads managed like K8s<\/td>\n<td>Modern ops model, GitOps-friendly<\/td>\n<td>Learning curve; not always drop-in<\/td>\n<td>When platform team standardizes on Kubernetes<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">15. Real-World Example<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Enterprise example: training and enablement platform modernization<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A large enterprise previously delivered internal training using Ravello blueprints with multi-VM labs. Ravello retirement forces a new platform.<\/li>\n<li><strong>Proposed architecture (OCI):<\/strong><\/li>\n<li>OCI compartments per course<\/li>\n<li>Golden images stored in Object Storage<\/li>\n<li>Terraform to create VCNs, subnets, NSGs<\/li>\n<li>Compute instances per student in private subnets<\/li>\n<li>OCI Bastion for access<\/li>\n<li>Scheduled automation to terminate labs after class<\/li>\n<li><strong>Why Ravello was chosen (historically):<\/strong> Rapid cloning of identical environments and lab isolation.<\/li>\n<li><strong>Expected outcomes (OCI replacement):<\/strong><\/li>\n<li>Long-term supportability and security controls<\/li>\n<li>Better governance (IAM, audit)<\/li>\n<li>Predictable operations with IaC and tagging<\/li>\n<li>Reduced public exposure via bastion-based access<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Startup\/small-team example: VM-based product demos<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Problem:<\/strong> A startup needs short-lived demo environments for prospects, originally built as OVAs.<\/li>\n<li><strong>Proposed architecture (OCI):<\/strong><\/li>\n<li>One hardened demo image (custom image)<\/li>\n<li>One public-facing demo VM behind strict security rules<\/li>\n<li>Automated teardown\/rebuild per demo cycle<\/li>\n<li><strong>Why Ravello was chosen (historically):<\/strong> Easy publishing of a demo environment without rebuilding into cloud-native services.<\/li>\n<li><strong>Expected outcomes (OCI replacement):<\/strong><\/li>\n<li>Lower complexity than running a full VMware stack<\/li>\n<li>Faster demos with image-based provisioning<\/li>\n<li>Clear cost control via teardown<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">16. FAQ<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\n<p><strong>Is Ravello currently available on Oracle Cloud?<\/strong><br\/>\n   Ravello is generally <strong>retired\/discontinued<\/strong>. Verify current status via Oracle\u2019s official documentation and announcements. If you have a legacy tenant, consult your Oracle account team for support and migration options.<\/p>\n<\/li>\n<li>\n<p><strong>What was Ravello best known for?<\/strong><br\/>\n   Running <strong>complex VM-based environments<\/strong> and training labs in the cloud, often with capabilities that supported <strong>nested virtualization<\/strong> and multi-VM topology reproduction (verify exact historical capabilities per version).<\/p>\n<\/li>\n<li>\n<p><strong>What should I use instead of Ravello on Oracle Cloud today?<\/strong><br\/>\n   Typically <strong>OCI Compute + VCN<\/strong> for VM-based labs, and <strong>OCI VMware Solution<\/strong> if you truly need managed VMware SDDC behavior.<\/p>\n<\/li>\n<li>\n<p><strong>Can I still import OVA\/OVF files into Oracle Cloud?<\/strong><br\/>\n   Not via Ravello (if discontinued), but you can use <strong>OCI custom image import<\/strong> workflows. You often convert OVA\u2192QCOW2\/VMDK and import through the OCI Console.<\/p>\n<\/li>\n<li>\n<p><strong>Does OCI support running VMware ESXi nested in a VM?<\/strong><br\/>\n   Nested virtualization support depends on the compute shape and hypervisor capabilities and may have restrictions. <strong>Verify in official OCI docs<\/strong> for your region and shape.<\/p>\n<\/li>\n<li>\n<p><strong>Why do imported appliances sometimes fail to boot?<\/strong><br\/>\n   Common causes include BIOS\/UEFI mismatch, unsupported disk controller drivers, incorrect disk selection from multi-disk OVAs, or missing bootloader configurations.<\/p>\n<\/li>\n<li>\n<p><strong>How do I handle SSH keys with imported appliances?<\/strong><br\/>\n   If the appliance doesn\u2019t support cloud-init or OCI guest agent injection, your SSH key may not be added automatically. Consider pre-baking access or using a console recovery method.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the most secure way to provide student access to labs on OCI?<\/strong><br\/>\n   Prefer <strong>private subnets + OCI Bastion<\/strong> (or a controlled jump host) and restrict ingress tightly, rather than giving every VM a public IP.<\/p>\n<\/li>\n<li>\n<p><strong>How do I reduce the cost of large training classes on OCI?<\/strong><br\/>\n   Use teardown automation, smaller shapes, shared services where appropriate, and avoid duplicating large images across many buckets\/regions.<\/p>\n<\/li>\n<li>\n<p><strong>How do I version control lab environments without Ravello blueprints?<\/strong><br\/>\n   Use Infrastructure as Code (Terraform) for networking\/instances and a documented image pipeline (Packer or scripted builds) for golden images.<\/p>\n<\/li>\n<li>\n<p><strong>Can I run multi-VM topologies on OCI like Ravello did?<\/strong><br\/>\n   Yes\u2014use VCNs, subnets, NSGs, route tables, and optionally multiple VNICs per instance. You model topology in IaC rather than a Ravello blueprint UI.<\/p>\n<\/li>\n<li>\n<p><strong>What replaces Ravello\u2019s \u201cpublish location\u201d concept?<\/strong><br\/>\n   In OCI you choose the <strong>region<\/strong>, <strong>availability domain<\/strong>, and <strong>subnet<\/strong> where instances run.<\/p>\n<\/li>\n<li>\n<p><strong>How do I estimate OCI costs for a lab?<\/strong><br\/>\n   Use the official OCI pricing pages and cost estimator. Model costs by instance-hours, storage GB-month, and expected network egress.<\/p>\n<\/li>\n<li>\n<p><strong>What\u2019s the biggest migration risk from Ravello to OCI?<\/strong><br\/>\n   VM image compatibility and access bootstrapping (cloud-init\/agent differences), plus re-implementing blueprint-like automation.<\/p>\n<\/li>\n<li>\n<p><strong>Where can I find Ravello documentation now?<\/strong><br\/>\n   Oracle\u2019s docs site may still host archived content. Start with Oracle documentation portals and official announcements; availability may vary over time.<\/p>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">17. Top Online Resources to Learn Ravello<\/h2>\n\n\n\n<p>Because Ravello is retired, official resources may be archived or partially removed. The table includes Ravello references and the key OCI replacement resources you\u2019ll use in practice.<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Resource Type<\/th>\n<th>Name<\/th>\n<th>Why It Is Useful<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Official documentation (archived)<\/td>\n<td>Oracle Documentation portal (search \u201cRavello\u201d) \u2014 https:\/\/docs.oracle.com\/<\/td>\n<td>Best starting point to find any remaining Ravello docs and terminology references<\/td>\n<\/tr>\n<tr>\n<td>Official cloud pricing<\/td>\n<td>Oracle Cloud Pricing \u2014 https:\/\/www.oracle.com\/cloud\/pricing\/<\/td>\n<td>Use for current OCI pricing when replacing Ravello workloads<\/td>\n<\/tr>\n<tr>\n<td>Official cost estimator<\/td>\n<td>Oracle Cloud Cost Estimator \u2014 https:\/\/www.oracle.com\/cloud\/costestimator.html (verify)<\/td>\n<td>Build estimates for VM labs, storage, and network usage<\/td>\n<\/tr>\n<tr>\n<td>OCI custom images docs<\/td>\n<td>OCI documentation (search \u201ccustom image import\u201d) \u2014 https:\/\/docs.oracle.com\/<\/td>\n<td>Required to correctly import OVA-derived images<\/td>\n<\/tr>\n<tr>\n<td>OCI networking docs<\/td>\n<td>OCI VCN documentation \u2014 https:\/\/docs.oracle.com\/<\/td>\n<td>Replace Ravello network topology with VCN\/subnets\/NSGs<\/td>\n<\/tr>\n<tr>\n<td>OCI architecture guidance<\/td>\n<td>Oracle Architecture Center \u2014 https:\/\/docs.oracle.com\/solutions\/<\/td>\n<td>Reference architectures for secure networking, bastion patterns, and governance<\/td>\n<\/tr>\n<tr>\n<td>OCI tutorials\/labs<\/td>\n<td>Oracle Cloud tutorials (search) \u2014 https:\/\/docs.oracle.com\/<\/td>\n<td>Step-by-step OCI labs for compute, networking, and security<\/td>\n<\/tr>\n<tr>\n<td>Video learning<\/td>\n<td>Oracle Cloud YouTube channel \u2014 https:\/\/www.youtube.com\/@OracleCloudInfrastructure<\/td>\n<td>Practical walkthroughs for OCI services used to replace Ravello workflows<\/td>\n<\/tr>\n<tr>\n<td>Community learning<\/td>\n<td>Oracle Cloud community\/blogs (verify relevance)<\/td>\n<td>Useful for migration stories and image import troubleshooting (validate against official docs)<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">18. Training and Certification Providers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Institute<\/th>\n<th>Suitable Audience<\/th>\n<th>Likely Learning Focus<\/th>\n<th>Mode<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps engineers, SREs, platform teams<\/td>\n<td>OCI operations, automation, DevOps practices around cloud infrastructure<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>ScmGalaxy.com<\/td>\n<td>Beginners to intermediate engineers<\/td>\n<td>DevOps fundamentals, CI\/CD, cloud basics<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.scmgalaxy.com\/<\/td>\n<\/tr>\n<tr>\n<td>CLoudOpsNow.in<\/td>\n<td>Cloud operations teams<\/td>\n<td>Cloud ops, monitoring, reliability, cost awareness<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.cloudopsnow.in\/<\/td>\n<\/tr>\n<tr>\n<td>SreSchool.com<\/td>\n<td>SREs and reliability-focused engineers<\/td>\n<td>SRE practices, observability, incident response on cloud<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.sreschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>AiOpsSchool.com<\/td>\n<td>Ops teams exploring AIOps<\/td>\n<td>Monitoring automation, AIOps concepts, operational analytics<\/td>\n<td>Check website<\/td>\n<td>https:\/\/www.aiopsschool.com\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">19. Top Trainers<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Platform\/Site<\/th>\n<th>Likely Specialization<\/th>\n<th>Suitable Audience<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>RajeshKumar.xyz<\/td>\n<td>DevOps\/cloud coaching and guidance (verify offerings)<\/td>\n<td>Individuals and teams seeking mentoring-style training<\/td>\n<td>https:\/\/rajeshkumar.xyz\/<\/td>\n<\/tr>\n<tr>\n<td>devopstrainer.in<\/td>\n<td>DevOps training programs (verify specifics)<\/td>\n<td>Beginners to advanced DevOps learners<\/td>\n<td>https:\/\/www.devopstrainer.in\/<\/td>\n<\/tr>\n<tr>\n<td>devopsfreelancer.com<\/td>\n<td>Freelance DevOps services\/training platform (verify specifics)<\/td>\n<td>Teams seeking practical, project-based help<\/td>\n<td>https:\/\/www.devopsfreelancer.com\/<\/td>\n<\/tr>\n<tr>\n<td>devopssupport.in<\/td>\n<td>DevOps support and learning resources (verify specifics)<\/td>\n<td>Ops teams needing troubleshooting-driven learning<\/td>\n<td>https:\/\/www.devopssupport.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">20. Top Consulting Companies<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table>\n<thead>\n<tr>\n<th>Company<\/th>\n<th>Likely Service Area<\/th>\n<th>Where They May Help<\/th>\n<th>Consulting Use Case Examples<\/th>\n<th>Website URL<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>cotocus.com<\/td>\n<td>Cloud\/DevOps consulting<\/td>\n<td>Cloud migration planning, automation, ops enablement<\/td>\n<td>VM image pipelines, OCI landing zones, lab automation<\/td>\n<td>https:\/\/cotocus.com\/<\/td>\n<\/tr>\n<tr>\n<td>DevOpsSchool.com<\/td>\n<td>DevOps and cloud consulting<\/td>\n<td>Delivery, enablement, CI\/CD, platform engineering<\/td>\n<td>Terraform-based lab platform, governance\/tagging model<\/td>\n<td>https:\/\/www.devopsschool.com\/<\/td>\n<\/tr>\n<tr>\n<td>DEVOPSCONSULTING.IN<\/td>\n<td>DevOps consulting services<\/td>\n<td>Implementation support, toolchain integration<\/td>\n<td>Secure bastion setup, cost optimization for training labs<\/td>\n<td>https:\/\/devopsconsulting.in\/<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">21. Career and Learning Roadmap<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn before Ravello (or Ravello-like VM lab platforms)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Virtualization fundamentals: VMware\/VirtualBox concepts, OVF\/OVA, VMDK<\/li>\n<li>Networking fundamentals: subnets, routing, firewalls, NAT, SSH\/RDP<\/li>\n<li>Linux basics: disk images, boot process, cloud-init basics<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">What to learn after (modern replacements)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>OCI core services:<\/li>\n<li>Compute, VCN, Object Storage, IAM<\/li>\n<li>Monitoring\/Logging, Vault, Bastion<\/li>\n<li>Infrastructure as Code:<\/li>\n<li>Terraform on OCI<\/li>\n<li>Image pipelines (Packer or scripted builds)<\/li>\n<li>Platform operations:<\/li>\n<li>Tagging strategy, cost management, policy-as-code approaches<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Job roles that use these skills<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Cloud engineer (OCI)<\/li>\n<li>DevOps engineer \/ Platform engineer<\/li>\n<li>SRE (for lab platform reliability and automation)<\/li>\n<li>Solutions architect (migration planning and platform design)<\/li>\n<li>Training lab operations engineer<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Certification path (if available)<\/h3>\n\n\n\n<p>Ravello-specific certifications are unlikely today due to retirement. For Oracle Cloud, consider OCI certifications (verify current tracks on Oracle\u2019s official certification site).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Project ideas for practice<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Build a golden image pipeline and import into OCI<\/li>\n<li>Create a \u201cstudent lab factory\u201d with Terraform modules and scheduled teardown<\/li>\n<li>Implement bastion-only access and per-student network isolation<\/li>\n<li>Cost-model a 200-student class and optimize shapes and runtimes<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">22. Glossary<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Ravello:<\/strong> Oracle\u2019s (retired) service for modeling and running VM-based application environments on public cloud infrastructure.<\/li>\n<li><strong>Blueprint:<\/strong> A reusable template defining a multi-VM application environment (VMs, networks, resources).<\/li>\n<li><strong>Application\/Environment:<\/strong> A deployed, runnable instance created from a blueprint.<\/li>\n<li><strong>Publish location:<\/strong> The target cloud\/provider region where an environment runs (historical Ravello concept).<\/li>\n<li><strong>OVA\/OVF:<\/strong> VM packaging formats commonly exported from VMware\/VirtualBox; OVA is a tar archive containing OVF + disks.<\/li>\n<li><strong>VMDK:<\/strong> VMware virtual disk format commonly found inside OVA packages.<\/li>\n<li><strong>QCOW2:<\/strong> QEMU copy-on-write disk format commonly used for cloud image imports.<\/li>\n<li><strong>OCI:<\/strong> Oracle Cloud Infrastructure.<\/li>\n<li><strong>VCN:<\/strong> Virtual Cloud Network in OCI (your private network in the cloud).<\/li>\n<li><strong>NSG:<\/strong> Network Security Group in OCI; security rules applied to VNICs\/instances.<\/li>\n<li><strong>Custom Image:<\/strong> An OCI image you import or create for launching instances.<\/li>\n<li><strong>Golden image:<\/strong> A standardized, hardened base VM image used to create consistent environments.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">23. Summary<\/h2>\n\n\n\n<p>Ravello on Oracle Cloud was designed to help teams run <strong>VM-centric, multi-VM environments<\/strong>\u2014especially labs, demos, and dev\/test stacks\u2014by importing VM artifacts and publishing them to cloud capacity. <strong>Ravello is now retired<\/strong>, so the practical path forward is to re-create Ravello outcomes using <strong>OCI Compute, VCN, Object Storage, and IAM<\/strong>, or to adopt <strong>OCI VMware Solution<\/strong> when VMware stack semantics are required.<\/p>\n\n\n\n<p>Key takeaways:\n&#8211; <strong>Cost:<\/strong> primary drivers are compute hours, storage footprint of large images, and network egress.\n&#8211; <strong>Security:<\/strong> avoid broad public exposure; use least privilege IAM, private subnets, and bastion-based access.\n&#8211; <strong>When to use Ravello:<\/strong> only for legacy tenants during transition.\n&#8211; <strong>Next step:<\/strong> implement the lab in this guide (OVA \u2192 QCOW2 \u2192 OCI custom image \u2192 instance), then expand into Infrastructure as Code for repeatable, Ravello-like environment provisioning on Oracle Cloud.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Other Services<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[62,63],"tags":[],"class_list":["post-760","post","type-post","status-publish","format-standard","hentry","category-oracle-cloud","category-other-services"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/760","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/comments?post=760"}],"version-history":[{"count":0,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/posts\/760\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/media?parent=760"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/categories?post=760"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/tutorials\/wp-json\/wp\/v2\/tags?post=760"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}