<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Bonthu Durga Prasad</title>
    <description>The latest articles on Forem by Bonthu Durga Prasad (@bonthu_durgaprasad_60725).</description>
    <link>https://forem.com/bonthu_durgaprasad_60725</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3823916%2F88d64ad7-8a72-4cd5-b139-eef90381c185.png</url>
      <title>Forem: Bonthu Durga Prasad</title>
      <link>https://forem.com/bonthu_durgaprasad_60725</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bonthu_durgaprasad_60725"/>
    <language>en</language>
    <item>
      <title>Oracle Linux 7 to 8 Upgrade Using Leapp: Architecture, Inhibitors, and Enterprise Troubleshooting</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Fri, 22 May 2026 09:12:00 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oracle-linux-7-to-8-upgrade-using-leapp-architecture-inhibitors-and-enterprise-troubleshooting-12e5</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oracle-linux-7-to-8-upgrade-using-leapp-architecture-inhibitors-and-enterprise-troubleshooting-12e5</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Enterprise Linux operating systems require periodic upgrades to maintain security, supportability, compliance, and operational stability.&lt;/p&gt;

&lt;p&gt;As organizations modernize infrastructure platforms, migrating from Oracle Linux 7 to Oracle Linux 8 becomes important because Oracle Linux 8 introduces:&lt;/p&gt;

&lt;p&gt;✔ Modern package management&lt;br&gt;
✔ Improved security&lt;br&gt;
✔ Better kernel support&lt;br&gt;
✔ Enhanced automation compatibility&lt;br&gt;
✔ AppStream modular repositories&lt;br&gt;
✔ Long-term enterprise support&lt;/p&gt;

&lt;p&gt;However, major Linux upgrades are not simple package updates.&lt;/p&gt;

&lt;p&gt;They involve:&lt;/p&gt;

&lt;p&gt;✔ Repository transitions&lt;br&gt;
✔ Package dependency changes&lt;br&gt;
✔ Kernel migration&lt;br&gt;
✔ Bootloader modifications&lt;br&gt;
✔ Service compatibility validation&lt;br&gt;
✔ Third-party package handling&lt;/p&gt;

&lt;p&gt;Oracle Linux provides the Leapp upgrade utility to automate and orchestrate Oracle Linux 7 to Oracle Linux 8 migrations safely.&lt;/p&gt;

&lt;p&gt;In this blog, we will perform a complete deep dive into:&lt;/p&gt;

&lt;p&gt;✔ Configuring Leapp repositories&lt;br&gt;
✔ Installing Leapp utility&lt;br&gt;
✔ Preupgrade analysis&lt;br&gt;
✔ Understanding inhibitors&lt;br&gt;
✔ Answer file handling&lt;br&gt;
✔ Repository migration&lt;br&gt;
✔ Upgrade execution&lt;br&gt;
✔ Upgrade boot workflow&lt;br&gt;
✔ Enterprise troubleshooting&lt;br&gt;
✔ Real-world operational challenges&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Leapp
&lt;/h3&gt;

&lt;p&gt;Leapp is an in-place upgrade utility used to migrate Oracle Linux 7 systems to Oracle Linux 8.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Major OS Upgrades Are Complex
&lt;/h3&gt;

&lt;p&gt;Upgrading from Oracle Linux 7 to Oracle Linux 8 involves platform-level architectural changes.&lt;/p&gt;

&lt;p&gt;These include:&lt;/p&gt;

&lt;p&gt;✔ Kernel transitions&lt;br&gt;
✔ Package replacement&lt;br&gt;
✔ Repository mapping&lt;br&gt;
✔ Driver compatibility&lt;br&gt;
✔ Service migration&lt;br&gt;
✔ Security policy updates&lt;br&gt;
✔ Boot environment changes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note :&lt;/strong&gt; Operating system upgrades are not only package upgrades — they are full platform transitions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Oracle Linux Upgrade Architecture
&lt;/h3&gt;

&lt;p&gt;The Leapp upgrade process follows multiple operational stages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Upgrade Workflow
&lt;/h3&gt;

&lt;p&gt;Oracle Linux 7&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Repository Validation&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Leapp Installation&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Preupgrade Analysis&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Inhibitor Detection&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Answer File Validation&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Upgrade Initramfs Creation&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
System Reboot&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Upgrade Environment Boot&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Package Migration&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Oracle Linux 8&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Verify Current Oracle Linux Version&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before starting the migration, validate the current OS version.&lt;/p&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;cat /etc/os-release&lt;/p&gt;

&lt;p&gt;Example output:&lt;/p&gt;

&lt;p&gt;NAME="Oracle Linux Server"&lt;br&gt;
VERSION="7.x"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Verify Current Repositories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Repository consistency is critical before performing upgrades.&lt;/p&gt;

&lt;p&gt;Check repositories:&lt;/p&gt;

&lt;p&gt;yum repolist&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67t6okv74tixjfwgdjhw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F67t6okv74tixjfwgdjhw.png" alt=" " width="797" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Repository Validation Matters
&lt;/h3&gt;

&lt;p&gt;Broken or duplicate repositories may cause:&lt;/p&gt;

&lt;p&gt;✔ Dependency failures&lt;br&gt;
✔ Package mapping errors&lt;br&gt;
✔ Upgrade inhibitors&lt;br&gt;
✔ Incomplete migrations&lt;br&gt;
✔ Boot failures&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Add Leapp Repository Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Navigate to repository directory:&lt;/p&gt;

&lt;p&gt;cd /etc/yum.repos.d/&lt;/p&gt;

&lt;p&gt;Create or validate Oracle Linux repositories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;[ol7_leapp]&lt;br&gt;
name=Oracle Linux 7 Leapp Repository&lt;br&gt;
baseurl=&lt;a href="https://yum.oracle.com/repo/OracleLinux/OL7/leapp/x86_64/" rel="noopener noreferrer"&gt;https://yum.oracle.com/repo/OracleLinux/OL7/leapp/x86_64/&lt;/a&gt;&lt;br&gt;
enabled=1&lt;br&gt;
gpgcheck=1&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fto1gyztx7hamm9yb2tlc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fto1gyztx7hamm9yb2tlc.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Refresh Repository Metadata&lt;/strong&gt;&lt;br&gt;
yum clean all&lt;br&gt;
yum makecache&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxcatankqh3x4wxhjnyh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpxcatankqh3x4wxhjnyh.png" alt=" " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Install Leapp Utility&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Install required Leapp packages.&lt;/p&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;yum install -y leapp-upgrade leapp-data-oraclelinux&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Gets Installed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leapp installs:&lt;/p&gt;

&lt;p&gt;✔ Upgrade actors&lt;br&gt;
✔ Dependency analysis modules&lt;br&gt;
✔ Migration logic&lt;br&gt;
✔ Repository mapping data&lt;br&gt;
✔ Upgrade workflows&lt;/p&gt;

&lt;p&gt;Verify Leapp Installation&lt;/p&gt;

&lt;p&gt;rpm -qa | grep leapp&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4j65zah59pe86xr10vw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq4j65zah59pe86xr10vw.png" alt=" " width="799" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Understanding Leapp Preupgrade&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before performing the actual upgrade, Leapp performs extensive system analysis.&lt;/p&gt;

&lt;p&gt;Command:&lt;br&gt;
         leapp preupgrade&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Happens During Preupgrade?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leapp analyzes:&lt;/p&gt;

&lt;p&gt;✔ Installed packages&lt;br&gt;
✔ Drivers&lt;br&gt;
✔ Repository configuration&lt;br&gt;
✔ Bootloader state&lt;br&gt;
✔ Kernel compatibility&lt;br&gt;
✔ Unsupported packages&lt;br&gt;
✔ Dependency conflicts&lt;br&gt;
✔ Security policies&lt;/p&gt;

&lt;p&gt;Operational Insight&lt;br&gt;
The preupgrade phase prevents unsafe migrations before system modification begins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xy71fu6m8mnxpr016v8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1xy71fu6m8mnxpr016v8.png" alt=" " width="800" height="561"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Inhibitors
&lt;/h2&gt;

&lt;p&gt;One of the most important Leapp concepts is inhibitors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Are Inhibitors?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Inhibitors are conditions that stop the upgrade from continuing safely.&lt;/p&gt;

&lt;p&gt;If inhibitors exist, Leapp blocks the upgrade process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Inhibitors Exist&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Inhibitors protect systems from unsafe migration scenarios.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;✔ Unsupported repositories&lt;br&gt;
✔ Duplicate repository entries&lt;br&gt;
✔ Deprecated packages&lt;br&gt;
✔ Missing answer files&lt;br&gt;
✔ Third-party RPM conflicts&lt;br&gt;
✔ Unsupported drivers&lt;br&gt;
✔ Incorrect boot configuration&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real Repository Inhibitor Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example error:&lt;/p&gt;

&lt;p&gt;Repository ol8_baseos_latest is listed more than once in the configuration.&lt;/p&gt;

&lt;p&gt;Why This Happens&lt;/p&gt;

&lt;p&gt;Possible causes:&lt;/p&gt;

&lt;p&gt;✔ Duplicate .repo files&lt;br&gt;
✔ Custom repositories&lt;br&gt;
✔ Third-party repositories&lt;br&gt;
✔ Incorrect migration preparation&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fixing Duplicate Repositories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Check repository directory:&lt;/p&gt;

&lt;p&gt;ls -l /etc/yum.repos.d/&lt;/p&gt;

&lt;p&gt;Review duplicate repository definitions:&lt;/p&gt;

&lt;p&gt;grep -r "ol8_baseos_latest" /etc/yum.repos.d/&lt;/p&gt;

&lt;p&gt;Remove duplicate entries carefully.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Leapp Answer Files
&lt;/h3&gt;

&lt;p&gt;This is one of the most important upgrade concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Are Answer Files?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;During upgrades, Leapp may require administrator confirmation for specific migration decisions.&lt;/p&gt;

&lt;p&gt;Leapp stores these prompts inside answer files.&lt;/p&gt;

&lt;p&gt;Location:&lt;/p&gt;

&lt;p&gt;/var/log/leapp/answerfile&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Answer Files Matter&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leapp blocks upgrades until required questions are answered.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Missing required answers in the answer file.&lt;/p&gt;

&lt;p&gt;View Required Answers&lt;/p&gt;

&lt;p&gt;Command:&lt;/p&gt;

&lt;p&gt;leapp answer --section remove_pam_pkcs11_module_check.confirm=True&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqxwb5m39p25phco23r7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feqxwb5m39p25phco23r7.png" alt=" " width="800" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Does This Do?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This command confirms specific upgrade actions required by Leapp.&lt;/p&gt;

&lt;p&gt;Operational Insight&lt;/p&gt;

&lt;p&gt;Answer files help administrators explicitly approve risky or environment-specific migration decisions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Repository Migration
&lt;/h3&gt;

&lt;p&gt;Oracle Linux 7 and Oracle Linux 8 use different repository structures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Oracle Linux 7 Repositories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ ol7_latest&lt;br&gt;
✔ ol7_UEKR6&lt;br&gt;
✔ Optional repositories&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Oracle Linux 8 Repositories&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ BaseOS&lt;br&gt;
✔ AppStream&lt;br&gt;
✔ UEK repositories&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Repository Mapping Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OL7 Repositories&lt;br&gt;
       │&lt;br&gt;
Repository Mapping&lt;br&gt;
       │&lt;br&gt;
       ▼&lt;br&gt;
OL8 BaseOS + AppStream&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding AppStream Repositories
&lt;/h3&gt;

&lt;p&gt;Oracle Linux 8 introduces AppStream modular repositories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unlike Oracle Linux 7:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Packages are grouped into modules and streams.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;✔ Python streams&lt;br&gt;
✔ NodeJS streams&lt;br&gt;
✔ Database modules&lt;/p&gt;

&lt;p&gt;This increases flexibility but also migration complexity.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Third-Party Repository Challenges&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Enterprise systems commonly use third-party repositories.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;✔ EPEL&lt;br&gt;
✔ Monitoring agents&lt;br&gt;
✔ Security tools&lt;br&gt;
✔ Vendor repositories&lt;br&gt;
✔ Backup software&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example EPEL Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example error:&lt;/p&gt;

&lt;p&gt;No package epel-release available&lt;br&gt;
Why This Happens&lt;/p&gt;

&lt;p&gt;Possible causes:&lt;/p&gt;

&lt;p&gt;✔ Repository incompatibility&lt;br&gt;
✔ Incorrect release version&lt;br&gt;
✔ Unsupported packages&lt;br&gt;
✔ Missing metadata&lt;/p&gt;

&lt;p&gt;Step 6: Execute Upgrade&lt;/p&gt;

&lt;p&gt;Once inhibitors are resolved, begin the upgrade.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q500sg2y95xpkhekrja.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7q500sg2y95xpkhekrja.png" alt=" " width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Command:  leapp upgrade&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Happens Internally?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leapp performs:&lt;/p&gt;

&lt;p&gt;✔ Upgrade initramfs creation&lt;br&gt;
✔ Bootloader modification&lt;br&gt;
✔ Package migration&lt;br&gt;
✔ Repository transition&lt;br&gt;
✔ Kernel migration&lt;br&gt;
✔ Service migration&lt;br&gt;
Understanding Upgrade Initramfs&lt;/p&gt;

&lt;p&gt;This is one of the most advanced upgrade concepts.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Upgrade Initramfs?
&lt;/h2&gt;

&lt;p&gt;Leapp temporarily boots into a dedicated upgrade initramfs environment outside the running Oracle Linux 7 userspace.&lt;/p&gt;

&lt;p&gt;This isolated environment safely performs package replacement operations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upgrade Boot Workflow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Normal OL7 Boot&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Upgrade Initramfs&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Package Migration&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
OL8 Boot&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogoyb2aubrserl5sn6vm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fogoyb2aubrserl5sn6vm.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Upgrade Initramfs Is Required
&lt;/h2&gt;

&lt;p&gt;Leapp performs the upgrade outside the running Oracle Linux 7 userspace to avoid active package conflicts and dependency corruption during migration.&lt;/p&gt;

&lt;p&gt;The temporary upgrade initramfs environment provides an isolated userspace where package replacement, repository switching, kernel migration, and dependency updates can occur safely without interfering with the currently running operating system.&lt;/p&gt;

&lt;p&gt;This isolation significantly reduces the risk of package inconsistency and upgrade instability during major platform transitions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7: Reboot the System
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;After upgrade preparation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;reboot&lt;/p&gt;

&lt;p&gt;The system boots into the temporary upgrade environment.&lt;/p&gt;

&lt;p&gt;Migration occurs automatically.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 8: Verify Oracle Linux 8 Upgrade
&lt;/h2&gt;

&lt;p&gt;After reboot completes:&lt;/p&gt;

&lt;p&gt;Verify OS Version&lt;br&gt;
cat /etc/os-release&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffnvc2n24uv7j2clbtaxb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffnvc2n24uv7j2clbtaxb.png" alt=" " width="799" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common Real-World Upgrade Problems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many upgrade failures occur because of environment inconsistencies rather than Leapp itself.&lt;/p&gt;

&lt;p&gt;Common Operational Problems&lt;/p&gt;

&lt;p&gt;✔ Repository duplication&lt;br&gt;
✔ Dependency conflicts&lt;br&gt;
✔ Unsupported packages&lt;br&gt;
✔ Missing drivers&lt;br&gt;
✔ Bootloader issues&lt;br&gt;
✔ EPEL incompatibility&lt;br&gt;
✔ Service startup failures&lt;br&gt;
✔ Network configuration mismatches&lt;br&gt;
✔ SELinux conflicts&lt;/p&gt;

&lt;h2&gt;
  
  
  Upgrade Failure Recovery
&lt;/h2&gt;

&lt;p&gt;If the upgrade process fails during migration, administrators should analyze Leapp reports, validate repositories, review inhibitors, and restore systems using backups or boot volume snapshots when necessary.&lt;/p&gt;

&lt;p&gt;/var/log/leapp/leapp-report.txt&lt;/p&gt;

&lt;p&gt;/var/log/leapp/leapp-upgrade.log&lt;/p&gt;

&lt;p&gt;/var/log/leapp/leapp-preupgrade.log&lt;/p&gt;

&lt;p&gt;Leapp logs provide detailed visibility into dependency analysis, migration stages, repository transitions, and package failures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Rollback and Recovery Planning
&lt;/h2&gt;

&lt;p&gt;Enterprise upgrades should always include rollback preparation.&lt;/p&gt;

&lt;p&gt;Before upgrades:&lt;/p&gt;

&lt;p&gt;✔ Create backups&lt;br&gt;
✔ Snapshot boot volumes&lt;br&gt;
✔ Validate rollback workflows&lt;br&gt;
✔ Test upgrades in staging&lt;br&gt;
✔ Document recovery procedures&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Rollback Planning Matters
&lt;/h3&gt;

&lt;p&gt;If upgrades fail unexpectedly:&lt;/p&gt;

&lt;p&gt;Rollback capability reduces downtime and operational risk.&lt;br&gt;
Enterprise Upgrade Best Practices&lt;/p&gt;

&lt;p&gt;✔ Validate backups before upgrade&lt;br&gt;
✔ Remove unsupported repositories&lt;br&gt;
✔ Review Leapp reports carefully&lt;br&gt;
✔ Resolve inhibitors completely&lt;br&gt;
✔ Test upgrades in staging first&lt;br&gt;
✔ Validate applications after migration&lt;br&gt;
✔ Monitor services post-upgrade&lt;br&gt;
✔ Maintain rollback procedures&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Leapp provides a powerful and automated framework for migrating Oracle Linux 7 systems to Oracle Linux 8 through dependency analysis, repository validation, package migration, and upgrade orchestration.&lt;/p&gt;

&lt;p&gt;Although the migration process is heavily automated, successful enterprise upgrades still require careful planning, repository consistency, inhibitor analysis, answer file validation, operational testing, and rollback preparation to ensure production stability.&lt;/p&gt;

&lt;p&gt;Modern Linux upgrades are no longer simple package updates — they are enterprise platform modernization workflows requiring operational engineering discipline.&lt;/p&gt;

</description>
      <category>oraclelinux</category>
      <category>linux</category>
      <category>leapp</category>
      <category>upgrade</category>
    </item>
    <item>
      <title>OCI Web Application Firewall (WAF) Deep Dive: Architecture, Traffic Inspection, Threat Protection, and Enterprise Security Design</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Thu, 21 May 2026 10:53:56 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oci-web-application-firewall-waf-deep-dive-architecture-traffic-inspection-threat-protection-21i0</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oci-web-application-firewall-waf-deep-dive-architecture-traffic-inspection-threat-protection-21i0</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Modern applications exposed to the internet constantly face threats including SQL injection, bots, DDoS attacks, malicious traffic, and Layer 7 attacks.&lt;/p&gt;

&lt;p&gt;OCI Web Application Firewall (WAF) helps protect internet-facing applications by inspecting and filtering HTTP/HTTPS traffic before it reaches backend applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is OCI WAF?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OCI WAF performs Layer 7 traffic inspection, request filtering, threat detection, and policy enforcement before traffic reaches protected applications.&lt;/p&gt;

&lt;p&gt;-&amp;gt; It acts like a security checkpoint for web traffic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why WAF Is Needed&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ SQL Injection&lt;br&gt;
✔ Cross-Site Scripting (XSS)&lt;br&gt;
✔ Bot Traffic&lt;br&gt;
✔ DDoS attacks&lt;br&gt;
✔ Credential stuffing&lt;br&gt;
✔ Malicious HTTP requests&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Real-world Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Attacker sends malicious SQL payload&lt;br&gt;
→ Application vulnerable&lt;br&gt;
→ Database compromise possible&lt;/p&gt;

&lt;p&gt;WAF helps block malicious requests before they reach applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  OCI WAF Architecture
&lt;/h3&gt;

&lt;p&gt;Users&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
OCI WAF&lt;br&gt;
  │&lt;br&gt;
Traffic Inspection&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
OCI Load Balancer&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
Application Servers&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foq7ueqetyrc9u3xbnvuf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foq7ueqetyrc9u3xbnvuf.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Layer 7 Security
&lt;/h3&gt;

&lt;p&gt;Traditional firewalls focus mainly on network traffic.&lt;br&gt;
WAF focuses on HTTP/HTTPS application traffic.&lt;/p&gt;

&lt;p&gt;-&amp;gt; OCI WAF operates at Layer 7 of the OSI model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Layer 7 Examples&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ URLs&lt;br&gt;
✔ HTTP headers&lt;br&gt;
✔ Cookies&lt;br&gt;
✔ Request payloads&lt;br&gt;
✔ API requests&lt;br&gt;
✔ User agents&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5idopkh7nq1t831x357.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5idopkh7nq1t831x357.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Request Inspection Workflow
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Traffic Flow&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;User sends HTTPS request&lt;/li&gt;
&lt;li&gt;Request reaches OCI WAF&lt;/li&gt;
&lt;li&gt;WAF evaluates rules&lt;/li&gt;
&lt;li&gt;Threat intelligence checks executed&lt;/li&gt;
&lt;li&gt;Malicious payload detected&lt;/li&gt;
&lt;li&gt;Request blocked or allowed&lt;/li&gt;
&lt;li&gt;Safe traffic forwarded&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8og474lpvpvy8i7ubwxq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8og474lpvpvy8i7ubwxq.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  OCI WAF Security Policies
&lt;/h2&gt;

&lt;p&gt;WAF policies define how traffic should be inspected and filtered.&lt;/p&gt;

&lt;p&gt;Examples&lt;br&gt;
✔ Access rules&lt;br&gt;
✔ IP blocking&lt;br&gt;
✔ Country filtering&lt;br&gt;
✔ Threat protection&lt;br&gt;
✔ Rate limiting&lt;br&gt;
✔ Bot management&lt;br&gt;
✔ CAPTCHA challenges&lt;/p&gt;

&lt;h3&gt;
  
  
  Rate Limiting
&lt;/h3&gt;

&lt;p&gt;Rate limiting controls excessive traffic requests.&lt;/p&gt;

&lt;p&gt;Real-world example:&lt;/p&gt;

&lt;p&gt;Bot sends 10,000 login attempts&lt;br&gt;
→ WAF rate limiting blocks abuse&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbls801npz124j6tfm693.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbls801npz124j6tfm693.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Bot Protection
&lt;/h3&gt;

&lt;p&gt;Not all traffic comes from real users.&lt;/p&gt;

&lt;p&gt;Bot Examples&lt;br&gt;
✔ Credential stuffing bots&lt;br&gt;
✔ Scraping bots&lt;br&gt;
✔ Fake traffic generators&lt;br&gt;
✔ Automated attack tools&lt;/p&gt;

&lt;p&gt;-&amp;gt; OCI WAF helps differentiate legitimate traffic from automated malicious behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  OCI WAF Deployment Models
&lt;/h2&gt;

&lt;p&gt;OCI WAF can be deployed in different architectures depending on traffic flow, security requirements, and application design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edge WAF&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Traffic inspected closer to internet edge locations before reaching OCI infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Regional WAF&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Traffic inspection occurs within OCI regional deployment architecture.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Load Balancer Attached WAF&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OCI WAF integrated directly with OCI Load Balancer for backend application protection.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wwfy1m4svdqqt2awh2h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wwfy1m4svdqqt2awh2h.png" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WAF + Load Balancer Integration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
OCI WAF&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
OCI Load Balancer&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
Backend Applications&lt;/p&gt;

&lt;p&gt;WAF protects applications before traffic reaches backend infrastructure.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real Enterprise Scenario
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E-Commerce Platform&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users&lt;br&gt;
→ WAF&lt;br&gt;
→ Load Balancer&lt;br&gt;
→ Web Servers&lt;br&gt;
→ Payment Application&lt;br&gt;
→ Database&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attack Example&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Attacker sends malicious login traffic&lt;br&gt;
→ WAF blocks suspicious requests&lt;br&gt;
→ backend remains protected&lt;/p&gt;

&lt;h2&gt;
  
  
  Common WAF Challenges
&lt;/h2&gt;

&lt;p&gt;✔ False positives&lt;br&gt;
✔ Legitimate traffic blocked&lt;br&gt;
✔ Poor rule tuning&lt;br&gt;
✔ SSL misconfiguration&lt;br&gt;
✔ Missing exclusions&lt;br&gt;
✔ Excessively strict policies&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding False Positives&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sometimes legitimate application traffic may match security rules and become blocked accidentally.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Examples :&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ Complex API payloads&lt;br&gt;
✔ Encoded requests&lt;br&gt;
✔ Search queries with special characters&lt;br&gt;
✔ Custom application parameters&lt;/p&gt;

&lt;p&gt;-&amp;gt; Effective WAF deployment requires balancing security and application usability.&lt;/p&gt;

&lt;h2&gt;
  
  
  WAF vs Traditional Firewall
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Traditional Firewall&lt;/th&gt;
&lt;th&gt;WAF&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Network traffic&lt;/td&gt;
&lt;td&gt;HTTP/HTTPS traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;IP/Port filtering&lt;/td&gt;
&lt;td&gt;Application inspection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Layer 3/4&lt;/td&gt;
&lt;td&gt;Layer 7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infrastructure protection&lt;/td&gt;
&lt;td&gt;Application protection&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7u8m81nds33x2q2xuma.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fs7u8m81nds33x2q2xuma.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability &amp;amp; Monitoring
&lt;/h2&gt;

&lt;p&gt;WAF visibility is critical for security operations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Monitoring Areas
&lt;/h2&gt;

&lt;p&gt;✔ Blocked requests&lt;br&gt;
✔ Attack patterns&lt;br&gt;
✔ Bot traffic&lt;br&gt;
✔ Request trends&lt;br&gt;
✔ Security events&lt;br&gt;
✔ Rate limit violations&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Best Practices
&lt;/h2&gt;

&lt;p&gt;✔ Enable HTTPS inspection&lt;br&gt;
✔ Continuously tune rules&lt;br&gt;
✔ Monitor false positives&lt;br&gt;
✔ Combine WAF with Load Balancer&lt;br&gt;
✔ Enable logging&lt;br&gt;
✔ Review attack trends&lt;br&gt;
✔ Test security policies regularly&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding WAF Limitations
&lt;/h2&gt;

&lt;p&gt;Although OCI WAF provides strong Layer 7 protection, it is not a complete replacement for secure application design.&lt;/p&gt;

&lt;p&gt;✔ HTTP/HTTPS traffic only&lt;br&gt;
✔ Requires rule tuning&lt;br&gt;
✔ Cannot fully stop business logic abuse&lt;br&gt;
✔ Secure coding still required&lt;br&gt;
✔ Advanced attacks may bypass weak policies&lt;/p&gt;

&lt;h2&gt;
  
  
  Defense in Depth Security Architecture
&lt;/h2&gt;

&lt;p&gt;Enterprise security should combine multiple security layers rather than relying on a single protection mechanism.&lt;/p&gt;

&lt;p&gt;✔ OCI WAF&lt;br&gt;
✔ OCI Network Firewall&lt;br&gt;
✔ NSGs&lt;br&gt;
✔ IAM Policies&lt;br&gt;
✔ Secure Coding&lt;br&gt;
✔ Vulnerability Scanning&lt;br&gt;
✔ Logging &amp;amp; Monitoring&lt;br&gt;
✔ Threat Detection&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;OCI WAF provides Layer 7 application protection by inspecting, filtering, and securing HTTP/HTTPS traffic before it reaches backend applications.&lt;/p&gt;

&lt;p&gt;By combining threat protection, rate limiting, bot mitigation, and traffic inspection, OCI WAF helps organizations improve application security and operational resilience in modern cloud environments.&lt;/p&gt;

</description>
      <category>waf</category>
      <category>oci</category>
      <category>web</category>
      <category>backend</category>
    </item>
    <item>
      <title>OCI Full Stack Disaster Recovery (FSDR) Deep Dive: Architecture, Switchover, Failover, and Recovery Workflows</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Wed, 20 May 2026 08:08:37 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oci-full-stack-disaster-recovery-fsdr-deep-dive-architecture-switchover-failover-and-recovery-2f01</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oci-full-stack-disaster-recovery-fsdr-deep-dive-architecture-switchover-failover-and-recovery-2f01</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Disaster recovery in cloud environments is no longer limited to restoring virtual machines or recovering storage volumes. Modern enterprise applications depend on tightly coupled compute, networking, databases, load balancers, DNS, and application dependencies.&lt;/p&gt;

&lt;p&gt;OCI Full Stack Disaster Recovery (FSDR) introduces orchestration-driven recovery workflows that coordinate infrastructure and application recovery across regions while minimizing operational risk and downtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FSDR IS NOT BACKUP&lt;/strong&gt;&lt;br&gt;
Backup protects data.&lt;br&gt;
Disaster recovery restores application continuity.&lt;/p&gt;

&lt;p&gt;FSDR focuses on orchestrating complete application recovery, not only restoring individual resources.&lt;/p&gt;

&lt;p&gt;This blog explains the deeper architecture and operational concepts behind OCI FSDR, including recovery orchestration, dependency sequencing, traffic redirection, resiliency engineering, and enterprise recovery design patterns.&lt;/p&gt;

&lt;p&gt;Traditional backups help restore files or databases, but enterprise applications require coordinated recovery across multiple infrastructure layers.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Database restored successfully&lt;br&gt;
→ application services unavailable&lt;br&gt;
→ load balancer returns errors&lt;br&gt;
→ business outage continues&lt;/p&gt;

&lt;h3&gt;
  
  
  Architecture Overview
&lt;/h3&gt;

&lt;p&gt;FSDR setup follows a simple two-region design. The primary region hosts the live application stack, including compute, load balancer, database, and storage components. The secondary region keeps the standby resources ready for recovery.&lt;/p&gt;

&lt;p&gt;All these resources are placed into Disaster Recovery Protection Groups, which help FSDR understand what belongs together. Once the groups are created, recovery plans can be built to define the exact order of actions during switchover or failover. This makes disaster recovery far more predictable and much easier to test.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foapuytsn31d12h3gxibp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foapuytsn31d12h3gxibp.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Enterprise Multi-Region Disaster Recovery Architecture
&lt;/h2&gt;

&lt;p&gt;Primary and DR Region Design&lt;/p&gt;

&lt;p&gt;Users&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
Primary OCI Region&lt;br&gt;
  │&lt;br&gt;
  ├── Public Load Balancer&lt;br&gt;
  ├── Web Tier&lt;br&gt;
  ├── Application Tier&lt;br&gt;
  ├── Database Tier&lt;br&gt;
  └── Storage Layer&lt;br&gt;
  │&lt;br&gt;
Replication / Synchronization&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
Disaster Recovery Region&lt;br&gt;
  │&lt;br&gt;
  ├── Standby Infrastructure&lt;br&gt;
  ├── Recovery Workflows&lt;br&gt;
  ├── Replicated Data&lt;br&gt;
  └── Traffic Redirection&lt;/p&gt;

&lt;h3&gt;
  
  
  Understanding Recovery Orchestration
&lt;/h3&gt;

&lt;p&gt;One of the most important concepts in FSDR is orchestration.&lt;/p&gt;

&lt;p&gt;FSDR does not recover everything simultaneously.&lt;/p&gt;

&lt;p&gt;Instead, recovery occurs in dependency-aware orchestration stages.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Recovery Workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Validate DR environment&lt;/li&gt;
&lt;li&gt;Attach replicated storage&lt;/li&gt;
&lt;li&gt;Recover database services&lt;/li&gt;
&lt;li&gt;Validate database health&lt;/li&gt;
&lt;li&gt;Start application services&lt;/li&gt;
&lt;li&gt;Start web services&lt;/li&gt;
&lt;li&gt;Update load balancer routing&lt;/li&gt;
&lt;li&gt;Redirect traffic&lt;/li&gt;
&lt;li&gt;Validate application response&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This sequencing reduces operational failures during recovery events.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz2kjq5d4ey8b19efmk6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsz2kjq5d4ey8b19efmk6.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Dependency Order Matters
&lt;/h3&gt;

&lt;p&gt;Application continuity depends heavily on startup sequencing.&lt;/p&gt;

&lt;p&gt;Incorrect startup order is one of the most common disaster recovery failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Web tier starts before database recovery&lt;br&gt;
→ application connection failures&lt;br&gt;
→ unstable service state&lt;/p&gt;

&lt;p&gt;OCI FSDR helps coordinate these dependencies through orchestrated recovery execution.&lt;/p&gt;

&lt;h3&gt;
  
  
  Traffic Flow During Disaster Recovery
&lt;/h3&gt;

&lt;p&gt;Understanding traffic movement during failover is critical.&lt;/p&gt;

&lt;p&gt;Normal Traffic Flow&lt;br&gt;
Users&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
Primary Load Balancer&lt;br&gt;
  │&lt;br&gt;
  ▼&lt;br&gt;
Application Stack&lt;/p&gt;

&lt;p&gt;Disaster Event&lt;br&gt;
Primary region unavailable&lt;br&gt;
Recovery Flow&lt;br&gt;
FSDR initiates recovery workflows&lt;br&gt;
→ DR region activated&lt;br&gt;
→ services validated&lt;br&gt;
→ traffic redirected&lt;br&gt;
→ application restored&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81ljo1kr7gr1prq8n8x1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F81ljo1kr7gr1prq8n8x1.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Switchover vs Failover
&lt;/h3&gt;

&lt;p&gt;Although these terms are often used interchangeably, operationally they are very different.&lt;/p&gt;

&lt;h3&gt;
  
  
  Switchover
&lt;/h3&gt;

&lt;p&gt;Switchover is a controlled transition between regions.&lt;/p&gt;

&lt;p&gt;Controlled migration with synchronized application state.&lt;/p&gt;

&lt;p&gt;Typical use cases:&lt;/p&gt;

&lt;p&gt;✔ Planned maintenance&lt;br&gt;
✔ DR drills&lt;br&gt;
✔ Infrastructure migration&lt;br&gt;
✔ Region transition testing&lt;/p&gt;

&lt;h3&gt;
  
  
  Failover
&lt;/h3&gt;

&lt;p&gt;Failover occurs during an actual disruption.&lt;/p&gt;

&lt;p&gt;Emergency recovery during infrastructure failure.&lt;/p&gt;

&lt;p&gt;Typical use cases:&lt;/p&gt;

&lt;p&gt;✔ Region outage&lt;br&gt;
✔ Critical disaster&lt;br&gt;
✔ Connectivity failure&lt;br&gt;
✔ Infrastructure incident&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsez7h2yj34qqh4rcw9pj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsez7h2yj34qqh4rcw9pj.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Key Operational Insight
&lt;/h3&gt;

&lt;p&gt;Switchover focuses on continuity.&lt;br&gt;
Failover focuses on survivability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Recovery Objectives in Enterprise DR
&lt;/h2&gt;

&lt;p&gt;Disaster recovery design is heavily influenced by two key metrics.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RTO (Recovery Time Objective)&lt;/strong&gt;&lt;br&gt;
Maximum acceptable downtime.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Application must recover within 15 minutes.&lt;br&gt;
&lt;strong&gt;RPO (Recovery Point Objective)&lt;/strong&gt;&lt;br&gt;
Maximum acceptable data loss window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;5-minute replication lag accepted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Important Design Insight
&lt;/h2&gt;

&lt;p&gt;Lower RTO and RPO increase infrastructure complexity and operational cost.&lt;/p&gt;

&lt;p&gt;This is one of the biggest design tradeoffs in enterprise disaster recovery.&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability During Disaster Recovery
&lt;/h2&gt;

&lt;p&gt;Recovery orchestration without observability creates blind operational recovery.&lt;/p&gt;

&lt;p&gt;Monitoring and validation are essential during DR events.&lt;/p&gt;

&lt;p&gt;Critical observability areas include:&lt;/p&gt;

&lt;p&gt;✔ Replication health&lt;br&gt;
✔ Recovery progress&lt;br&gt;
✔ Application validation&lt;br&gt;
✔ Service health&lt;br&gt;
✔ Traffic routing&lt;br&gt;
✔ Error monitoring&lt;/p&gt;

&lt;p&gt;Without proper validation, infrastructure may recover while applications remain unavailable.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real Enterprise Scenario
&lt;/h3&gt;

&lt;p&gt;Consider a multi-tier banking application deployed across OCI regions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Architecture:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Internet&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
Public Load Balancer&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
Web Tier&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
Application Tier&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
Database Tier&lt;/p&gt;

&lt;h3&gt;
  
  
  Disaster Recovery Deployment Models
&lt;/h3&gt;

&lt;p&gt;One of the most important architectural decisions in disaster recovery design is selecting the appropriate DR deployment model.&lt;/p&gt;

&lt;p&gt;The choice depends on:&lt;/p&gt;

&lt;p&gt;✔ Recovery speed requirements&lt;br&gt;
✔ Business criticality&lt;br&gt;
✔ Infrastructure cost&lt;br&gt;
✔ Operational complexity&lt;br&gt;
✔ Acceptable downtime&lt;br&gt;
✔ Recovery objectives (RTO/RPO)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Enterprise DR strategies are commonly divided into:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ Cold DR&lt;br&gt;
✔ Warm DR&lt;br&gt;
✔ Hot DR&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;old Disaster Recovery (Cold DR)&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;What is Cold DR?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cold DR is the most cost-optimized disaster recovery model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simple explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Infrastructure is created only during disaster recovery events.&lt;/p&gt;

&lt;p&gt;In this model, the DR region does not continuously run the full application stack.&lt;/p&gt;

&lt;p&gt;Instead:&lt;/p&gt;

&lt;p&gt;✔ Backups are stored&lt;br&gt;
✔ Configurations are maintained&lt;br&gt;
✔ Infrastructure is provisioned during disaster&lt;br&gt;
Cold DR Architecture&lt;br&gt;
Primary Region&lt;br&gt;
   │&lt;br&gt;
   ├── Running Production Environment&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
DR Region&lt;br&gt;
   │&lt;br&gt;
   ├── Backup Storage&lt;br&gt;
   ├── Infrastructure Templates&lt;br&gt;
   └── Minimal Active Resources&lt;/p&gt;

&lt;p&gt;**Cold DR Workflow&lt;/p&gt;

&lt;p&gt;During disaster:**&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Disaster detected&lt;/li&gt;
&lt;li&gt;Infrastructure provisioned in DR region&lt;/li&gt;
&lt;li&gt;Storage restored&lt;/li&gt;
&lt;li&gt;Database recovered&lt;/li&gt;
&lt;li&gt;Application deployed&lt;/li&gt;
&lt;li&gt;Traffic redirected&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuixsig0rmb715vovgxxk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuixsig0rmb715vovgxxk.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Warm Disaster Recovery (Warm DR)
&lt;/h3&gt;

&lt;p&gt;What is Warm DR?&lt;/p&gt;

&lt;p&gt;Warm DR provides a balance between recovery speed and infrastructure cost.&lt;/p&gt;

&lt;p&gt;Simple explanation:&lt;/p&gt;

&lt;p&gt;A partially running standby environment exists in the DR region.&lt;/p&gt;

&lt;p&gt;Some infrastructure components remain active continuously.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;✔ Database replication active&lt;br&gt;
✔ Standby compute available&lt;br&gt;
✔ Networking preconfigured&lt;br&gt;
✔ Application services partially ready&lt;br&gt;
Warm DR Architecture&lt;br&gt;
Primary Region&lt;br&gt;
   │&lt;br&gt;
   ├── Fully Active Environment&lt;br&gt;
   │&lt;br&gt;
Replication&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
DR Region&lt;br&gt;
   │&lt;br&gt;
   ├── Standby Database&lt;br&gt;
   ├── Preconfigured Networking&lt;br&gt;
   ├── Minimal Compute&lt;br&gt;
   └── Recovery Automation&lt;/p&gt;

&lt;h2&gt;
  
  
  Warm DR Workflow
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;During disaster:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;DR database promoted&lt;/li&gt;
&lt;li&gt;Additional compute started&lt;/li&gt;
&lt;li&gt;Application services activated&lt;/li&gt;
&lt;li&gt;Load balancer updated&lt;/li&gt;
&lt;li&gt;Traffic redirected&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvocidrscqdke9y15z5vp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvocidrscqdke9y15z5vp.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hot Disaster Recovery (Hot DR)
&lt;/h3&gt;

&lt;p&gt;What is Hot DR?&lt;/p&gt;

&lt;p&gt;Hot DR is the most advanced disaster recovery model.&lt;/p&gt;

&lt;p&gt;Simple explanation:&lt;/p&gt;

&lt;p&gt;A fully active standby environment continuously runs in the DR region.&lt;/p&gt;

&lt;p&gt;Both regions remain operational simultaneously.&lt;/p&gt;

&lt;p&gt;The DR region is always ready for immediate failover.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hot DR Architecture&lt;/strong&gt;&lt;br&gt;
Primary Region&lt;br&gt;
   │&lt;br&gt;
   ├── Active Production Stack&lt;br&gt;
   │&lt;br&gt;
Real-Time Replication&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
DR Region&lt;br&gt;
   │&lt;br&gt;
   ├── Fully Active Standby Stack&lt;br&gt;
   ├── Running Applications&lt;br&gt;
   ├── Active Networking&lt;br&gt;
   └── Immediate Traffic Readiness&lt;/p&gt;

&lt;p&gt;**Hot DR Workflow&lt;/p&gt;

&lt;p&gt;During disaster:**&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Primary outage detected&lt;/li&gt;
&lt;li&gt;Traffic immediately redirected&lt;/li&gt;
&lt;li&gt;DR environment already operational&lt;/li&gt;
&lt;li&gt;Minimal recovery delay&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;During disaster:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Primary region unavailable&lt;br&gt;
→ FSDR executes recovery orchestration&lt;br&gt;
→ DR database activated&lt;br&gt;
→ application services recovered&lt;br&gt;
→ traffic redirected&lt;br&gt;
→ banking services restored&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkb7otn9fwim09qq7vrap.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkb7otn9fwim09qq7vrap.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Disaster Recovery Failures
&lt;/h3&gt;

&lt;p&gt;Many DR failures occur during orchestration and validation rather than infrastructure provisioning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Common issues include:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;✔ Missing dependency mapping&lt;br&gt;
✔ DNS still pointing to failed region&lt;br&gt;
✔ Replication lag ignored&lt;br&gt;
✔ Application validation skipped&lt;br&gt;
✔ Untested DR workflows&lt;br&gt;
✔ Incorrect startup sequencing&lt;/p&gt;

&lt;p&gt;Critical Operational Insight&lt;br&gt;
Most DR failures occur during orchestration and validation, not infrastructure provisioning.&lt;br&gt;
Why OCI FSDR Matters&lt;/p&gt;

&lt;p&gt;Cloud resiliency is no longer only an infrastructure recovery problem.&lt;/p&gt;

&lt;p&gt;Modern disaster recovery is an application orchestration challenge.&lt;/p&gt;

&lt;p&gt;OCI FSDR helps organizations move from:&lt;/p&gt;

&lt;p&gt;Manual recovery&lt;br&gt;
→&lt;br&gt;
Automated resiliency engineering&lt;/p&gt;

&lt;p&gt;through coordinated recovery workflows across regions.&lt;/p&gt;

&lt;p&gt;Production Best Practices&lt;br&gt;
✔ Perform regular DR drills&lt;br&gt;
✔ Validate application dependencies&lt;br&gt;
✔ Continuously monitor replication&lt;br&gt;
✔ Test traffic failover procedures&lt;br&gt;
✔ Maintain updated recovery documentation&lt;br&gt;
✔ Validate application health after recovery&lt;br&gt;
✔ Separate production and DR environments&lt;/p&gt;

&lt;p&gt;Oracle FSDR official Doc : &lt;a href="https://docs.oracle.com/en/cloud/iaas/disaster-recovery/cssgm/overview-disaster-recovery.html" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;OCI Full Stack Disaster Recovery enables organizations to orchestrate application-aware disaster recovery workflows across OCI regions.&lt;/p&gt;

&lt;p&gt;By coordinating dependency sequencing, traffic routing, recovery validation, and service orchestration, FSDR helps reduce downtime and operational complexity during disaster events.&lt;/p&gt;

&lt;p&gt;Modern disaster recovery is no longer just about recovering infrastructure — it is about restoring complete business continuity through intelligent orchestration and resiliency engineering.&lt;/p&gt;

</description>
      <category>fsdr</category>
      <category>diasasterrecovery</category>
      <category>oracle</category>
    </item>
    <item>
      <title>OCI Run Command Advanced Guide: Remote Execution, Object Storage Scripts, and Production Troubleshooting</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Thu, 23 Apr 2026 08:53:24 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oci-run-command-advanced-guide-remote-execution-object-storage-scripts-and-production-2687</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oci-run-command-advanced-guide-remote-execution-object-storage-scripts-and-production-2687</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Managing remote servers usually means logging in through SSH (Linux) or RDP (Windows). While that works, it also means managing ports, credentials, and access controls.&lt;/p&gt;

&lt;p&gt;Oracle Cloud Infrastructure (OCI) offers a cleaner option called Run Command.&lt;/p&gt;

&lt;p&gt;OCI Run Command allows you to remotely execute commands or scripts on OCI Compute instances directly from the OCI Console, OCI CLI, or API — without logging in to the server manually.&lt;/p&gt;

&lt;p&gt;This blog explains what OCI Run Command is, how it works, what is required, common statuses, troubleshooting, and best practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is OCI Run Command?
&lt;/h2&gt;

&lt;p&gt;OCI Run Command is a feature that lets you run commands remotely on an OCI Compute instance using the Oracle Cloud Agent installed on that server.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;hostname&lt;br&gt;
whoami&lt;br&gt;
systemctl restart nginx&lt;br&gt;
df -h&lt;/p&gt;

&lt;p&gt;Instead of connecting to the server manually, OCI sends the command securely through the cloud control plane.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Run Command?
&lt;/h2&gt;

&lt;p&gt;OCI Run Command is useful when you want to:&lt;/p&gt;

&lt;p&gt;Run quick administrative commands&lt;br&gt;
Restart services&lt;br&gt;
Collect logs&lt;br&gt;
Check disk space / memory&lt;br&gt;
Update configuration&lt;br&gt;
Run scripts remotely&lt;br&gt;
Troubleshoot servers without SSH/RDP access&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;Administrator&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
OCI Console / OCI CLI&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
Run Command Service&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
OCI Instance Agent&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
Compute Instance&lt;br&gt;
     │&lt;br&gt;
 ┌───┴──────────────┐&lt;br&gt;
 ▼                  ▼&lt;br&gt;
Object Storage      Log Files&lt;br&gt;
(Scripts)           (Output)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31grxsg3hx7lmb8rxzal.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F31grxsg3hx7lmb8rxzal.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Inline Commands vs Large Scripts
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Use Inline Commands For:&lt;/strong&gt;&lt;br&gt;
hostname&lt;br&gt;
uptime&lt;br&gt;
df -h&lt;br&gt;
systemctl status httpd&lt;br&gt;
&lt;strong&gt;Use Object Storage Scripts For:&lt;/strong&gt;&lt;br&gt;
Application deployment&lt;br&gt;
Package installation&lt;br&gt;
Multi-step patching&lt;br&gt;
Configuration enforcement&lt;br&gt;
Long shell logic&lt;/p&gt;

&lt;h2&gt;
  
  
  Main Components Required
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. OCI Compute Instance&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Target server where command will run.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Oracle Cloud Agent&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Installed on OCI instance. This agent communicates with OCI services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Run Command Plugin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Must be enabled inside Oracle Cloud Agent settings.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. IAM Policies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Permissions are needed for:&lt;/p&gt;

&lt;p&gt;User who creates command&lt;br&gt;
Instance that consumes command&lt;br&gt;
&lt;strong&gt;5. Dynamic Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Used to grant permissions to the OCI instance itself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Enable Run Command Plugin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Go to:&lt;/p&gt;

&lt;p&gt;OCI Console → Compute Instance → Oracle Cloud Agent&lt;/p&gt;

&lt;p&gt;Enable:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F740bw6oqedi0ca88x2rn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F740bw6oqedi0ca88x2rn.png" alt=" " width="800" height="39"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create Dynamic Group&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example rule:&lt;/p&gt;

&lt;p&gt;ALL {instance.compartment.id = ''}&lt;/p&gt;

&lt;p&gt;This means all servers in that compartment join the Dynamic Group.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1d8di1tfd8sdh845uku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1d8di1tfd8sdh845uku.png" alt=" " width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Dynamic Group Policies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Allow dynamic-group DeployDG to use instance-agent-command-execution-family in compartment id &lt;/p&gt;

&lt;p&gt;Allow dynamic-group DeployDG to read instances in compartment id &lt;/p&gt;

&lt;p&gt;Allow dynamic-group DeployDG to read buckets in compartment id &lt;/p&gt;

&lt;p&gt;Allow dynamic-group DeployDG to read objects in compartment id  where target.bucket.name=''&lt;/p&gt;

&lt;p&gt;Allow dynamic-group DeployDG to manage objects in compartment id  where target.bucket.name=''&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq13mku7hftujzimqnakj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq13mku7hftujzimqnakj.png" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This allows the server to receive and execute commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: User IAM Policies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;Allow group Admins to manage instance-agent-command-family in compartment id &lt;/p&gt;

&lt;p&gt;Allow group Admins to read instance-agent-command-execution-family in compartment id &lt;/p&gt;

&lt;p&gt;Allow group Admins to inspect instances in compartment id &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48iag5qjipy4aomjj9zl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48iag5qjipy4aomjj9zl.png" alt=" " width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is ocarun in OCI Run Command?
&lt;/h2&gt;

&lt;p&gt;ocarun is the local execution user/context used by OCI Run Command plugin on the compute instance.&lt;/p&gt;

&lt;p&gt;When you send a command through Oracle Cloud Infrastructure Run Command, the instance agent receives it and executes it using the Run Command plugin. On many OCI images/platform setups, that execution is associated with ocarun.&lt;/p&gt;

&lt;p&gt;-&amp;gt; If you run commands that required sudo privilages then you should provide ocarun user to the admin privilage.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Run Command (OCI CLI)
&lt;/h2&gt;

&lt;p&gt;oci instance-agent command create \&lt;br&gt;
--compartment-id  \&lt;br&gt;
--target '{"instanceId":""}' \&lt;br&gt;
--content '{&lt;br&gt;
  "source":{&lt;br&gt;
    "sourceType":"TEXT",&lt;br&gt;
    "text":"hostname"&lt;br&gt;
  }&lt;br&gt;
}' \&lt;br&gt;
--timeout-in-seconds 600 \&lt;br&gt;
--display-name test-hostname&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4i0dqdwj1u966loaa13l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4i0dqdwj1u966loaa13l.png" alt=" " width="800" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Status Values Explained
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;lifecycle-state&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Shows execution status.&lt;/p&gt;

&lt;p&gt;ACCEPTED&lt;br&gt;
Command created and queued.&lt;br&gt;
IN_PROGRESS&lt;br&gt;
Command is currently running.&lt;br&gt;
SUCCEEDED&lt;br&gt;
Command completed successfully.&lt;br&gt;
FAILED&lt;br&gt;
Command ran but failed.&lt;br&gt;
CANCELED&lt;br&gt;
Execution canceled.&lt;/p&gt;

&lt;p&gt;To check the delivery status &lt;/p&gt;

&lt;p&gt;oci instance-agent command-execution list --compartment-id ocid1.compartment.oc1..aaaaaaaagz4mern4sk46kbebwqzl6czdowlud7rop7ornezr7axx6ja5jfla --instance-id ocid1.instance.oc1.ap-mumbai-1.anrg6ljr7gqo7aacuco546smbzylzekybcfbvp2vz2ygvwgu52vf62zk7cma --all&lt;/p&gt;

&lt;p&gt;delivery-state&lt;/p&gt;

&lt;p&gt;Shows whether command reached the server.&lt;/p&gt;

&lt;p&gt;ACKED&lt;br&gt;
Server received the command.&lt;br&gt;
EXPIRED&lt;br&gt;
Command was never picked up before timeout window expired.&lt;/p&gt;

&lt;p&gt;Usually caused by:&lt;/p&gt;

&lt;p&gt;Wrong Dynamic Group&lt;br&gt;
Agent issue&lt;br&gt;
Network issue&lt;br&gt;
Permissions issue&lt;/p&gt;

&lt;p&gt;-&amp;gt; If you get delivery status ACKED and exit code =0 then your command / script successfully executed over the remote server.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zks9qzq8eiwy1der8op.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zks9qzq8eiwy1der8op.png" alt=" " width="800" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Troubleshoot
&lt;/h2&gt;

&lt;p&gt;Check Agent Status&lt;/p&gt;

&lt;p&gt;Linux:&lt;/p&gt;

&lt;p&gt;systemctl status oracle-cloud-agent&lt;br&gt;
Restart Agent&lt;br&gt;
systemctl restart oracle-cloud-agent&lt;br&gt;
View Logs&lt;br&gt;
tail -100 /var/log/oracle-cloud-agent/agent.log&lt;/p&gt;

&lt;h2&gt;
  
  
  Upload Detailed Logs to Object Storage
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;For long executions, store logs locally:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;/tmp/deploy_httpd.log&lt;/p&gt;

&lt;p&gt;Then upload logs back to bucket using automation.&lt;/p&gt;

&lt;p&gt;This enables:&lt;/p&gt;

&lt;p&gt;✔ Retention&lt;br&gt;
✔ Audit trail&lt;br&gt;
✔ Team review&lt;br&gt;
✔ Full debugging&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Best Practices
&lt;/h2&gt;

&lt;p&gt;✔ Use least privilege IAM policies&lt;br&gt;
✔ Restrict bucket access&lt;br&gt;
✔ Sign scripts / validate source&lt;br&gt;
✔ Avoid plaintext secrets in scripts&lt;br&gt;
✔ Rotate credentials&lt;/p&gt;

&lt;h2&gt;
  
  
  Run Command vs SSH
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;SSH&lt;/th&gt;
&lt;th&gt;OCI Run Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Needs inbound port&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Manual session&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API driven&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auditable&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scalable fleet ops&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;OCI Run Command is a powerful feature for remote server administration. Once properly configured, it becomes one of the easiest and safest ways to execute commands on OCI instances without direct login access.&lt;/p&gt;

&lt;p&gt;If you manage OCI servers regularly, it is worth enabling and learning.&lt;/p&gt;

</description>
      <category>runcommand</category>
      <category>oci</category>
      <category>oracle</category>
      <category>sre</category>
    </item>
    <item>
      <title>OCI Monitoring &amp; Alarms: Practical Guide with Real-Time Testing, Architecture, and Troubleshooting</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Tue, 07 Apr 2026 11:17:22 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oci-monitoring-alarms-practical-guide-with-real-time-testing-architecture-and-troubleshooting-2onn</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oci-monitoring-alarms-practical-guide-with-real-time-testing-architecture-and-troubleshooting-2onn</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Modern cloud environments require proactive monitoring to detect issues before they impact users.&lt;/p&gt;

&lt;p&gt;In production environments, lack of proper monitoring leads to delayed incident response and downtime. OCI Monitoring solves this by providing real-time observability and alerting&lt;/p&gt;

&lt;p&gt;Oracle Cloud Infrastructure Monitoring enables you to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Collect real-time metrics&lt;/li&gt;
&lt;li&gt;Define intelligent alarms&lt;/li&gt;
&lt;li&gt;Trigger automated notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this guide, we will:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand OCI Monitoring architecture&lt;/li&gt;
&lt;li&gt;Configure alarms using Console&lt;/li&gt;
&lt;li&gt;Validate alerts using real testing&lt;/li&gt;
&lt;li&gt;Apply across multiple OCI services&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7bzvurjg38yy8cjv2qtb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7bzvurjg38yy8cjv2qtb.png" alt=" " width="800" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Flow Explanation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OCI Services emit metrics:
Compute
Load Balancer
Autonomous DB&lt;/li&gt;
&lt;li&gt;Metrics are collected by
👉 OCI Monitoring&lt;/li&gt;
&lt;li&gt;Alarms evaluate conditions
Notifications sent via
👉 OCI Notifications
Understanding Metrics in OCI&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Metrics are:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Time-series data&lt;/li&gt;
&lt;li&gt;Automatically generated by OCI services&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU Utilization (Compute)&lt;/li&gt;
&lt;li&gt;HTTP Errors (Load Balancer)&lt;/li&gt;
&lt;li&gt;Storage Usage (DB)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**Understanding Alarms&lt;/p&gt;

&lt;p&gt;Alarms:**&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Continuously evaluate metrics&lt;/li&gt;
&lt;li&gt;Trigger when thresholds are breached&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU &amp;gt; 80%&lt;/li&gt;
&lt;li&gt;Error rate &amp;gt; 5%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Step-by-Step: Creating Alarm (Console)&lt;/p&gt;

&lt;p&gt;👉&lt;/p&gt;

&lt;h2&gt;
  
  
  Observability &amp;amp; Management → Monitoring → Alarms → Create Alarm
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Key Configuration:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Metric Namespace (Oracle_Compute_Agent)&lt;/li&gt;
&lt;li&gt;Interval (1m / 5m)&lt;/li&gt;
&lt;li&gt;Threshold condition&lt;/li&gt;
&lt;li&gt;Severity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2s2ohfwog8qe9bctfay.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2s2ohfwog8qe9bctfay.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu19xjzzmi1ty86lighi6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu19xjzzmi1ty86lighi6.png" alt=" " width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding Metric Namespaces in OCI
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OCI metrics are organized into namespaces based on the source of data:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;oci_compute → Provides default infrastructure-level metrics such as CPU utilization, network throughput, and disk I/O. These are available without any additional configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;oci_computeagent → Provides enhanced, guest OS-level metrics such as memory usage, filesystem utilization, and detailed performance insights. These require the Oracle Cloud Agent plugin to be enabled on the instance.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Notifications Setup&lt;/p&gt;

&lt;p&gt;Using&lt;br&gt;
👉 OCI Notifications&lt;/p&gt;

&lt;p&gt;Steps:&lt;/p&gt;

&lt;p&gt;Create Topic&lt;br&gt;
Add Subscription (Email / HTTPS)&lt;br&gt;
Confirm subscription&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fu1akbxwcsjqgdqc5d4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4fu1akbxwcsjqgdqc5d4.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; Define alarm notification with topic you have created so that the triggered alarms will notify you with  that email.&lt;/p&gt;

&lt;p&gt;-&amp;gt; You have created an alarm with the topic where you get notified when define threshold reaches.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fih44ay8nz9zpdj7faezl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fih44ay8nz9zpdj7faezl.png" alt=" " width="800" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Validation
&lt;/h2&gt;

&lt;p&gt;👉 This is where your test compute instance comes in (for screenshots)&lt;/p&gt;

&lt;p&gt;Even though OCI Monitoring is service-agnostic, we validate using a compute instance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Triggering a Real Alert
&lt;/h2&gt;

&lt;p&gt;SSH into instance:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;sudo yum install stress -y&lt;/li&gt;
&lt;li&gt;stress --cpu 2 --timeout 120&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Expected Outcome:&lt;/strong&gt;&lt;br&gt;
CPU spike&lt;br&gt;
Alarm moves to FIRING state&lt;br&gt;
Notification received&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgez4ouclgg7rwz9g24p8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgez4ouclgg7rwz9g24p8.png" alt=" " width="710" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnc57d46hq96qoepx2gqk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnc57d46hq96qoepx2gqk.png" alt=" " width="543" height="609"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Metrics graph spike&lt;br&gt;
Alarm state&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi-Service Use Cases
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;This same setup works for:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;🖥️ Compute&lt;br&gt;
CPU, Memory&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🌐 Load Balancer&lt;br&gt;
HTTP 5xx errors&lt;br&gt;
Latency&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🗄️ Databases&lt;br&gt;
Storage thresholds&lt;br&gt;
Active sessions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 One monitoring system → multiple services&lt;/p&gt;

&lt;h3&gt;
  
  
  Troubleshooting
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;❌ Alarm not triggering&lt;br&gt;
   Wrong metric namespace&lt;br&gt;
   Incorrect interval&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;❌ No notifications&lt;br&gt;
   Subscription not confirmed&lt;br&gt;
   Topic mismatch&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;❌ Metrics missing&lt;br&gt;
   Service delay&lt;br&gt;
    Agent/plugin disabled (for compute)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  ⚡ Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use different severities&lt;/li&gt;
&lt;li&gt;Avoid alert noise (don’t set too low thresholds)&lt;/li&gt;
&lt;li&gt;Always validate alarms manually&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Validation Checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Metrics visible ✅&lt;/li&gt;
&lt;li&gt;Alarm configured ✅&lt;/li&gt;
&lt;li&gt;Notification received ✅&lt;/li&gt;
&lt;li&gt;Real test performed ✅&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🏁 Conclusion
&lt;/h3&gt;

&lt;p&gt;OCI Monitoring and Alarms provide a powerful and unified observability solution across all OCI services. By combining real-time metrics, flexible alarm configurations, and integrated notifications, teams can proactively detect and respond to issues before they impact users.&lt;/p&gt;

&lt;p&gt;This guide demonstrated not just configuration, but real-time validation using practical testing — a critical step for production readiness.&lt;/p&gt;

&lt;p&gt;With these practices, organizations can significantly improve system reliability, reduce downtime, and enhance operational visibility across cloud environments.&lt;/p&gt;

</description>
      <category>oci</category>
      <category>monitoring</category>
      <category>alarams</category>
    </item>
    <item>
      <title>OCI SMTP Email Delivery with Postfix on Linux: Secure Configuration, Testing, and Troubleshooting (Advanced Guide)</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Mon, 06 Apr 2026 10:20:16 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oci-smtp-email-delivery-with-postfix-on-linux-secure-configuration-testing-and-troubleshooting-1fcm</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oci-smtp-email-delivery-with-postfix-on-linux-secure-configuration-testing-and-troubleshooting-1fcm</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Email delivery is a critical component in cloud environments for alerts, notifications, and application workflows. In Oracle Cloud Infrastructure, the Email Delivery service provides a reliable SMTP-based solution.&lt;/p&gt;

&lt;p&gt;This guide demonstrates how to configure a Linux server to send emails using OCI SMTP with a secure and production-ready setup&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Linux Server &lt;br&gt;
        ↓&lt;br&gt;
Postfix (SMTP client)&lt;br&gt;
        ↓&lt;br&gt;
OCI Email Delivery (SMTP)&lt;br&gt;
        ↓&lt;br&gt;
Recipient Email&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;*&lt;em&gt;OCI Setup&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Go to:&lt;/p&gt;

&lt;p&gt;👉 OCI Console → Email Delivery&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;✔ Create Approved Sender&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdj0ksqwxtnaf0z73ehgv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdj0ksqwxtnaf0z73ehgv.png" alt=" " width="800" height="373"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Generate SMTP Credentials
&lt;/h2&gt;

&lt;p&gt;Copy:&lt;/p&gt;

&lt;p&gt;SMTP Username&lt;br&gt;
SMTP Password&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8hg8bchk2ri0sq8bnhal.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8hg8bchk2ri0sq8bnhal.png" alt=" " width="800" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Network Requirements
&lt;/h2&gt;

&lt;p&gt;From Server:&lt;/p&gt;

&lt;p&gt;Allow outbound port 587 or 25 (recommended)&lt;/p&gt;

&lt;p&gt;Test connectivity:&lt;/p&gt;

&lt;p&gt;telnet smtp.email.ap-mumbai-1.oci.oraclecloud.com 587&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Required Packages
&lt;/h2&gt;

&lt;p&gt;yum install postfix s-nail cyrus-sasl-plain -y&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14gdgb2olo8vurkw4dmw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F14gdgb2olo8vurkw4dmw.png" alt=" " width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify mail command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;which mail&lt;/p&gt;

&lt;p&gt;Expected:  /usr/bin/mail&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzo2iejeiuar1ra8mj6aj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzo2iejeiuar1ra8mj6aj.png" alt=" " width="545" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Postfix
&lt;/h2&gt;

&lt;p&gt;Edit config file&lt;br&gt;
vi /etc/postfix/main.cf&lt;/p&gt;

&lt;p&gt;Add configuration&lt;/p&gt;

&lt;h1&gt;
  
  
  OCI SMTP relay (use port 587 )
&lt;/h1&gt;

&lt;p&gt;relayhost = [smtp.email.ap-mumbai-1.oci.oraclecloud.com]:587&lt;/p&gt;

&lt;h1&gt;
  
  
  SMTP Authentication
&lt;/h1&gt;

&lt;p&gt;smtp_sasl_auth_enable = yes&lt;br&gt;
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd&lt;br&gt;
smtp_sasl_security_options = noanonymous&lt;/p&gt;

&lt;h1&gt;
  
  
  TLS Configuration
&lt;/h1&gt;

&lt;p&gt;smtp_use_tls = yes&lt;br&gt;
smtp_tls_security_level = encrypt&lt;/p&gt;

&lt;h1&gt;
  
  
  Optional (avoid size issues)
&lt;/h1&gt;

&lt;p&gt;mailbox_size_limit = 0&lt;br&gt;
message_size_limit = 52428800&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94uufaycga470j2x78er.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F94uufaycga470j2x78er.png" alt=" " width="800" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure SMTP Credentials
&lt;/h2&gt;

&lt;p&gt;vi /etc/postfix/sasl_passwd&lt;/p&gt;

&lt;p&gt;Add EXACT line&lt;br&gt;
[smtp.email.ap-mumbai-1.oci.oraclecloud.com]:587 SMTP_USERNAME:SMTP_PASSWORD&lt;/p&gt;

&lt;p&gt;🔴 Important rules&lt;/p&gt;

&lt;p&gt;✔ Single line only&lt;br&gt;
✔ Include [ ]&lt;br&gt;
✔ Include :587&lt;br&gt;
✔ No extra spaces&lt;/p&gt;

&lt;h2&gt;
  
  
  Secure and Apply Credentials
&lt;/h2&gt;

&lt;p&gt;chmod 600 /etc/postfix/sasl_passwd&lt;br&gt;
postmap /etc/postfix/sasl_passwd&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify mapping
&lt;/h2&gt;

&lt;p&gt;postmap -q "[smtp.email.ap-mumbai-1.oci.oraclecloud.com]:587" hash:/etc/postfix/sasl_passwd&lt;/p&gt;

&lt;p&gt;Expected : SMTP_USERNAME:SMTP_PASSWORD&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8xtojz7q3xwp3pmy9g0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fa8xtojz7q3xwp3pmy9g0.png" alt=" " width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Configure Approved Sender Mapping
&lt;/h2&gt;

&lt;p&gt;Force all emails to use approved sender :&lt;/p&gt;

&lt;p&gt;postconf -e "sender_canonical_maps = &lt;a href="mailto:alerts@gmail.com"&gt;alerts@gmail.com&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;Why this is required&lt;/p&gt;

&lt;p&gt;OCI accepts only approved sender.&lt;/p&gt;

&lt;p&gt;So:&lt;/p&gt;

&lt;p&gt;root@hostname  → &lt;a href="mailto:alerts@gmail.com"&gt;alerts@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Start and Enable Postfix
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;systemctl enable postfix&lt;/li&gt;
&lt;li&gt;systemctl restart postfix&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Test Email
&lt;/h2&gt;

&lt;p&gt;echo "OCI SMTP TEST FROM AWS" | mail -s "TEST MAIL" &lt;a href="mailto:your_email@example.com"&gt;your_email@example.com&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify Logs
&lt;/h2&gt;

&lt;p&gt;tail -f /var/log/maillog&lt;/p&gt;

&lt;p&gt;expected output : status = 200(ok)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftd9rlbcofh81pmtss8nu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftd9rlbcofh81pmtss8nu.png" alt=" " width="800" height="294"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Automation Example
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Simple test&lt;/strong&gt;&lt;br&gt;
echo "Alert test" | mail -s "Test Alert" &lt;a href="mailto:your_email@example.com"&gt;your_email@example.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0iscttenntnnequxane8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0iscttenntnnequxane8.png" alt=" " width="800" height="1778"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Issue 1: Connection Timeout
&lt;/h2&gt;

&lt;p&gt;Cause:&lt;/p&gt;

&lt;p&gt;Port 25 blocked (OCI default)&lt;/p&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;p&gt;Use port 587 or 465&lt;br&gt;
Issue 2: Authentication Failed&lt;/p&gt;

&lt;p&gt;Cause:&lt;/p&gt;

&lt;h2&gt;
  
  
  Wrong SMTP credentials
&lt;/h2&gt;

&lt;p&gt;Fix:&lt;/p&gt;

&lt;p&gt;Verify username/password&lt;/p&gt;

&lt;h2&gt;
  
  
  Debug Logs (ADVANCED)
&lt;/h2&gt;

&lt;p&gt;Check logs:&lt;/p&gt;

&lt;p&gt;sudo tail -f /var/log/maillog&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;status=sent&lt;br&gt;
status=bounced&lt;br&gt;
authentication failed&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Best Practices
&lt;/h2&gt;

&lt;p&gt;✔ Use TLS encryption&lt;br&gt;&lt;br&gt;
✔ Restrict access to credential file&lt;br&gt;&lt;br&gt;
✔ Rotate SMTP credentials&lt;br&gt;&lt;br&gt;
✔ Avoid hardcoding credentials &lt;/p&gt;

&lt;p&gt;Real Use Case &lt;br&gt;
Use OCI SMTP to send:&lt;br&gt;
✔ Monitoring alerts&lt;br&gt;&lt;br&gt;
✔ Application notifications&lt;br&gt;&lt;br&gt;
✔ we can setup password expiry notification for users in linux&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;OCI Email Delivery offers a secure and scalable way to send emails using authenticated SMTP with TLS. Combined with Postfix, a reliable and lightweight MTA, it becomes a simple yet powerful production-ready solution.&lt;/p&gt;

&lt;p&gt;This setup also highlights cross-cloud flexibility—applications running on AWS can seamlessly use OCI for email delivery, enabling a cost-effective and hybrid architecture.&lt;/p&gt;

&lt;p&gt;Overall, Postfix with OCI SMTP is a practical, secure, and efficient approach for real-world email delivery needs. &lt;/p&gt;

</description>
      <category>oracle</category>
      <category>smtp</category>
      <category>email</category>
      <category>devops</category>
    </item>
    <item>
      <title>OCI CLI Configuration and Advanced Usage: Automating Tenancy Insights from Command Line</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Fri, 03 Apr 2026 10:04:54 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oci-cli-configuration-and-advanced-usage-automating-tenancy-insights-from-command-line-33oi</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oci-cli-configuration-and-advanced-usage-automating-tenancy-insights-from-command-line-33oi</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;In cloud environments, automation and scripting are essential for efficient resource management. While the OCI Console provides a graphical interface, the OCI CLI enables engineers to interact with resources programmatically.&lt;/p&gt;

&lt;p&gt;This guide demonstrates how to configure OCI CLI and extract tenancy-level data using real commands&lt;/p&gt;

&lt;h2&gt;
  
  
  Why OCI CLI
&lt;/h2&gt;

&lt;p&gt;✔ Automation (scripts, pipelines)&lt;br&gt;
✔ Bulk operations&lt;br&gt;
✔ Faster troubleshooting&lt;br&gt;
✔ Integration with DevOps workflows&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture
&lt;/h2&gt;

&lt;p&gt;Local Machine&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
OCI CLI&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
API Request (Signed with Key)&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
OCI Services (IAM, Compute, etc.)&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Install OCI CLI
&lt;/h2&gt;

&lt;p&gt;bash -c "$(curl -L &lt;a href="https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)" rel="noopener noreferrer"&gt;https://raw.githubusercontent.com/oracle/oci-cli/master/scripts/install/install.sh)&lt;/a&gt;"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3iuuyn60muzsy88jcby5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3iuuyn60muzsy88jcby5.png" alt=" " width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;oci --version&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4khj22gavoy7rw2d2nvf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4khj22gavoy7rw2d2nvf.png" alt=" " width="550" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Generate API Keys&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sul8cd3dptu4kt4vi70.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2sul8cd3dptu4kt4vi70.png" alt=" " width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; Create a directory .oci&lt;/p&gt;

&lt;p&gt;mkidr .oci&lt;/p&gt;

&lt;p&gt;-&amp;gt; Create a configuration file for the oci cli&lt;/p&gt;

&lt;p&gt;mkdir config&lt;/p&gt;

&lt;p&gt;-&amp;gt; Add the config details like below&lt;/p&gt;

&lt;p&gt;[DEFAULT]&lt;br&gt;
user=ocid1.user.oc1..aaaaaaaapjmafzjfgvdf7rohfvuwlwj6otxwxfqtazd6vvcwe24pfailx4cq&lt;br&gt;
fingerprint=5e:b0:45:e2:07:3f:b8:fa:51:25:ee:4b:7b:d5:d6:e9&lt;br&gt;
tenancy=ocid1.tenancy.oc1..aaaaaaaaf2yv5cljkqlepfllkxolhgvmq5tq7vgfu6tns3ajhnuqn4eikmja&lt;br&gt;
region=ap-mumbai-1&lt;br&gt;
key_file= # TODO&lt;/p&gt;

&lt;p&gt;-&amp;gt; Create one file and add your private key details and change the permissions to read and write only.&lt;/p&gt;

&lt;p&gt;chmod 600 ~/.oci/oci_api_key.pem&lt;/p&gt;

&lt;p&gt;-&amp;gt; Now check with below command for the configuration setup&lt;/p&gt;

&lt;p&gt;oci os ns get&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fblm6rv3l8qutb9xc5p7o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fblm6rv3l8qutb9xc5p7o.png" alt=" " width="550" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Validate Configuration
&lt;/h2&gt;

&lt;p&gt;oci iam  region list&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwazyisfl6zlj7njfogat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwazyisfl6zlj7njfogat.png" alt=" " width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;oci iam compartment list --compartment-id &lt;/p&gt;

&lt;p&gt;You will get the list of compartments over the entire tenancy level&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffoiw9lyqy47bxsuhiler.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffoiw9lyqy47bxsuhiler.png" alt=" " width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Instances
&lt;/h2&gt;

&lt;p&gt;oci compute instance list --compartment-id &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5pm3brd9xiyjash4dy0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fc5pm3brd9xiyjash4dy0.png" alt=" " width="800" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Use Case
&lt;/h2&gt;

&lt;p&gt;oci iam user list --compartment-id  \&lt;br&gt;
--query "data[].{Name:name,ID:id}" --output table&lt;/p&gt;

&lt;p&gt;You will get the user details in a table format&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2mka0ya1gfkxw7qj8wn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2mka0ya1gfkxw7qj8wn.png" alt=" " width="800" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;p&gt;✔ Secure private keys&lt;br&gt;&lt;br&gt;
✔ Use profiles&lt;br&gt;&lt;br&gt;
✔ Avoid hardcoding OCIDs&lt;br&gt;&lt;br&gt;
✔ Use scripts for automation&lt;br&gt;&lt;br&gt;
✔ Rotate keys regularly &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;OCI CLI enables engineers to automate cloud operations and retrieve critical data efficiently. By combining CLI commands with scripting, organizations can improve operational efficiency and reduce manual effort.&lt;/p&gt;

</description>
      <category>cli</category>
      <category>oci</category>
      <category>automation</category>
    </item>
    <item>
      <title>OCI Bastion Service: Complete End-to-End Guide for Secure Access to Private Instances</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Fri, 27 Mar 2026 08:50:05 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oci-bastion-service-complete-end-to-end-guide-for-secure-access-to-private-instances-56gb</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oci-bastion-service-complete-end-to-end-guide-for-secure-access-to-private-instances-56gb</guid>
      <description>&lt;h4&gt;
  
  
  Introduction
&lt;/h4&gt;

&lt;p&gt;Accessing private compute instances securely is a common challenge in cloud environments. Exposing SSH ports publicly increases the attack surface and violates security best practices.&lt;/p&gt;

&lt;p&gt;In Oracle Cloud Infrastructure, Bastion Service provides a secure way to connect to private instances without assigning public IP addresses.&lt;/p&gt;

&lt;p&gt;This guide provides a complete end-to-end implementation of OCI Bastion Service.&lt;/p&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;Your Laptop&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
OCI Bastion Service&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
Private Subnet&lt;br&gt;
     │&lt;br&gt;
     ▼&lt;br&gt;
Compute Instance (No Public IP)&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OCI account&lt;/li&gt;
&lt;li&gt;VCN with:

&lt;ul&gt;
&lt;li&gt;Public subnet&lt;/li&gt;
&lt;li&gt;Private subnet&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Compute instance in private subnet&lt;/li&gt;

&lt;li&gt;SSH key pair&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Step 1: Create VCN (Quick Setup)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Go to Networking → VCN&lt;/li&gt;
&lt;li&gt;Create VCN with:&lt;/li&gt;
&lt;li&gt;CIDR: 10.0.0.0/16&lt;/li&gt;
&lt;li&gt;Public subnet : 10.0.64.0/24&lt;/li&gt;
&lt;li&gt;Private subnet : 10.0.128.0/17&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8jsgpovu3wo8q0oh1aie.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8jsgpovu3wo8q0oh1aie.png" alt=" " width="800" height="371"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjnbokl18zrajlsyqhrtc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjnbokl18zrajlsyqhrtc.png" alt=" " width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create Private Compute Instance
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Go to Compute → Instances&lt;/li&gt;
&lt;li&gt;Launch instance&lt;/li&gt;
&lt;li&gt;Instance_Name : Demo_Bastion_service&lt;/li&gt;
&lt;li&gt;Private subnet&lt;/li&gt;
&lt;li&gt;No public IP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3m7o7fehwhc6mv5h984p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3m7o7fehwhc6mv5h984p.png" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxi0o1mosihm326lzt91.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foxi0o1mosihm326lzt91.png" alt=" " width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can get an instance with private IP&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsawqaznzc7nrii5prpjw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsawqaznzc7nrii5prpjw.png" alt=" " width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Create Bastion
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate → Identity &amp;amp; Security → Bastion&lt;/li&gt;
&lt;li&gt;Click Create Bastion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Configuration&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Name: my-bastion&lt;/li&gt;
&lt;li&gt;VCN: Demo_VCN&lt;/li&gt;
&lt;li&gt;Subnet: public subnet&lt;/li&gt;
&lt;li&gt;CIDR: 0.0.0.0/0 (for testing)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9szlm9cpocqxzg7ot4ba.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9szlm9cpocqxzg7ot4ba.png" alt=" " width="800" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Create Bastion Session
&lt;/h3&gt;

&lt;p&gt;Click Bastion → Create Session&lt;/p&gt;

&lt;p&gt;Select:&lt;br&gt;
Session type: SSH_Port_Forwarding&lt;br&gt;
Target instance: your private instance&lt;br&gt;
Upload public key&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forqm9navb2bkvwqwcdvs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Forqm9navb2bkvwqwcdvs.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Connect to Instance
&lt;/h2&gt;

&lt;p&gt;OCI gives command like:  Copy  the SSH command&lt;/p&gt;

&lt;p&gt;ssh -i  -N -L :10.0.171.0:22 -p 22 &lt;a href="mailto:ocid1.bastionsession.oc1.ap-mumbai-1.amaaaaaa7gqo7aaalvsyyzpplvcrg5ixiyevbeuwfl2xycuchc3j5k6ughga@host.bastion.ap-mumbai-1.oci.oraclecloud.com"&gt;ocid1.bastionsession.oc1.ap-mumbai-1.amaaaaaa7gqo7aaalvsyyzpplvcrg5ixiyevbeuwfl2xycuchc3j5k6ughga@host.bastion.ap-mumbai-1.oci.oraclecloud.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qiixp7vuwb6o74airuv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9qiixp7vuwb6o74airuv.png" alt=" " width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Change the permission of the .pem file in your computer location specific user who want to access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;-&amp;gt; Go to the file properties and go to the security and change the permissions over there.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwgj7djtcee8p0uip660.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkwgj7djtcee8p0uip660.png" alt=" " width="599" height="772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add your file location over there and local port change it to 22.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;FYR&lt;/p&gt;

&lt;p&gt;ssh -i C:\Test.key -N -L 22:10.0.171.0:22 -p 22 &lt;a href="mailto:ocid1.bastionsession.oc1.ap-mumbai-1.amaaaaaa7gqo7aaalvsyyzpplvcrg5ixiyevbeuwfl2xycuchc3j5k6ughga@host.bastion.ap-mumbai-1.oci.oraclecloud.com"&gt;ocid1.bastionsession.oc1.ap-mumbai-1.amaaaaaa7gqo7aaalvsyyzpplvcrg5ixiyevbeuwfl2xycuchc3j5k6ughga@host.bastion.ap-mumbai-1.oci.oraclecloud.com&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Tunneling will be established between your computer and the private server.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi1psaq5nnro1w4ypvju.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqi1psaq5nnro1w4ypvju.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open putty Go to auth and Go for tunneling and add the details as below.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ktkosscd5g5xu3dc547.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ktkosscd5g5xu3dc547.png" alt=" " width="685" height="675"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;-&amp;gt; Now the tunneling will be created between your system and the private server.&lt;/p&gt;

&lt;p&gt;-&amp;gt; You can able to connect the private server without public IP with the bastion service.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foa2rebpowuglndkz1tu4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foa2rebpowuglndkz1tu4.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify Connection
&lt;/h2&gt;

&lt;p&gt;-&amp;gt; You can verify the connection by using below command.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;whoami&lt;/li&gt;
&lt;li&gt;hostname -i&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eh2wum6273mslouxef6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4eh2wum6273mslouxef6.png" alt=" " width="600" height="283"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Security Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Do NOT allow 0.0.0.0/0 in production&lt;/li&gt;
&lt;li&gt;Use restricted CIDR&lt;/li&gt;
&lt;li&gt;Use short session duration&lt;/li&gt;
&lt;li&gt;Use IAM policies&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;OCI Bastion Service enables secure and controlled access to private instances without exposing them to the internet. By using Bastion, organizations can implement a secure access architecture aligned with best practices.&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>security</category>
      <category>bastion</category>
    </item>
    <item>
      <title>Infrastructure as Code in OCI using Resource Manager (Terraform)</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Mon, 23 Mar 2026 09:23:46 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/infrastructure-as-code-in-oci-using-resource-manager-terraform-3fl2</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/infrastructure-as-code-in-oci-using-resource-manager-terraform-3fl2</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Infrastructure management in cloud environments has evolved significantly with the adoption of automation and DevOps practices. Manual provisioning is error-prone and difficult to scale.&lt;/p&gt;

&lt;p&gt;In Oracle Cloud Infrastructure, Infrastructure as Code (IaC) is implemented using OCI Resource Manager, a managed Terraform-based service that enables automated, consistent, and repeatable deployments.&lt;/p&gt;

&lt;p&gt;This article provides a deep dive into OCI Resource Manager, including architecture, execution flow, state management, drift detection, hands-on examples, and real-world DevOps practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Infrastructure as Code (IaC)
&lt;/h2&gt;

&lt;p&gt;Infrastructure as Code (IaC) is the practice of defining and managing infrastructure using code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Automation&lt;/li&gt;
&lt;li&gt;Consistency&lt;/li&gt;
&lt;li&gt;Version control&lt;/li&gt;
&lt;li&gt;Faster deployments&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What is OCI Resource Manager
&lt;/h2&gt;

&lt;p&gt;OCI Resource Manager is a managed service that uses Terraform to provision and manage cloud resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Managed Terraform execution&lt;/li&gt;
&lt;li&gt;No need for local setup&lt;/li&gt;
&lt;li&gt;Secure state management&lt;/li&gt;
&lt;li&gt;Easy rollback and updates&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;Developer&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
Terraform Code (HCL)&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
OCI Resource Manager&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
OCI APIs&lt;br&gt;
   │&lt;br&gt;
   ▼&lt;br&gt;
Cloud Resources (VCN, Compute, Storage)&lt;/p&gt;

&lt;h2&gt;
  
  
  How Resource Manager Executes Terraform
&lt;/h2&gt;

&lt;p&gt;Execution Flow&lt;/p&gt;

&lt;p&gt;User submits job&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Configuration validated&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Terraform plan generated&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Terraform apply executed&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
State file updated&lt;/p&gt;

&lt;h2&gt;
  
  
  Explanation
&lt;/h2&gt;

&lt;p&gt;OCI Resource Manager internally performs Terraform operations such as plan and apply. It manages execution lifecycle and state securely without requiring local tools.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Components
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Stack
&lt;/h2&gt;

&lt;p&gt;A stack is a collection of Terraform configurations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Job
&lt;/h2&gt;

&lt;p&gt;Jobs execute operations such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plan&lt;/li&gt;
&lt;li&gt;Apply&lt;/li&gt;
&lt;li&gt;Destroy&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  State
&lt;/h2&gt;

&lt;p&gt;Tracks current infrastructure and dependencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hands-on Example
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Step 1: Terraform Configuration
&lt;/h2&gt;

&lt;p&gt;resource "oci_core_vcn" "my_vcn" {&lt;br&gt;
  cidr_block   = "10.0.0.0/16"&lt;br&gt;
  display_name = "my-vcn"&lt;br&gt;
}&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Create Stack
&lt;/h2&gt;

&lt;p&gt;Go to Resource Manager&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Upload configuration&lt;/li&gt;
&lt;li&gt;Create stack&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: Run Apply Job
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Click Apply&lt;/li&gt;
&lt;li&gt;OCI provisions resources&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CLI Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;oci resource-manager stack list&lt;/li&gt;
&lt;li&gt;oci resource-manager job list&lt;/li&gt;
&lt;li&gt;oci resource-manager job get --job-id &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Authentication and IAM Integration
&lt;/h2&gt;

&lt;p&gt;OCI Resource Manager integrates with IAM for secure access.&lt;/p&gt;

&lt;p&gt;Authentication is handled using IAM policies and instance principals.&lt;/p&gt;

&lt;p&gt;ex : Allow group DevOps to manage all-resources in compartment Dev&lt;/p&gt;

&lt;h2&gt;
  
  
  Terraform State Management
&lt;/h2&gt;

&lt;p&gt;Terraform state is automatically managed by OCI Resource Manager.&lt;/p&gt;

&lt;h2&gt;
  
  
  State includes:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Resource mappings&lt;/li&gt;
&lt;li&gt;Infrastructure state&lt;/li&gt;
&lt;li&gt;Dependency tracking&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why important:
&lt;/h2&gt;

&lt;p&gt;Ensures Terraform knows existing resources and prevents duplication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Drift Detection
&lt;/h2&gt;

&lt;p&gt;Drift occurs when infrastructure is modified outside Terraform.&lt;/p&gt;

&lt;p&gt;Ex : Manual change → Drift detected → Terraform shows mismatch&lt;/p&gt;

&lt;h2&gt;
  
  
  Resource Manager detects drift by comparing:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Current infrastructure&lt;/li&gt;
&lt;li&gt;Stored state&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Plan vs Apply
&lt;/h2&gt;

&lt;p&gt;Plan → Shows changes&lt;br&gt;&lt;br&gt;
Apply → Executes changes  &lt;/p&gt;

&lt;p&gt;Example : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plan: Create VCN
&lt;/li&gt;
&lt;li&gt;Apply: Resource created&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use version control (Git)
&lt;/li&gt;
&lt;li&gt;Separate dev and prod environments
&lt;/li&gt;
&lt;li&gt;Use variables instead of hardcoding
&lt;/li&gt;
&lt;li&gt;Always review Terraform plan
&lt;/li&gt;
&lt;li&gt;Store sensitive data securely
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;OCI Resource Manager simplifies infrastructure provisioning by enabling Infrastructure as Code using Terraform. It ensures consistency, scalability, and automation in cloud deployments.&lt;/p&gt;

&lt;p&gt;Understanding execution flow, state management, and drift detection is essential for building reliable and production-ready cloud environments.&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>oracle</category>
      <category>resourcemanager</category>
    </item>
    <item>
      <title>OCI Block Volume Deep Dive</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Thu, 19 Mar 2026 11:09:38 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/oci-block-volume-deep-dive-4p7p</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/oci-block-volume-deep-dive-4p7p</guid>
      <description>&lt;p&gt;In modern cloud environments, storage plays a critical role in application performance and reliability. In Oracle Cloud Infrastructure (OCI), Block Volume provides scalable, high-performance storage that can be attached to compute instances.&lt;/p&gt;

&lt;p&gt;This article provides a deep dive into OCI Block Volume, covering architecture, performance concepts such as VPUs and autotuning, attachment methods including iSCSI and paravirtualized, hands-on commands, monitoring, and real-world troubleshooting scenarios.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is OCI Block Volume
&lt;/h2&gt;

&lt;p&gt;OCI Block Volume is a network-based storage service that provides persistent storage for compute instances.&lt;/p&gt;

&lt;p&gt;It is commonly used for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Application storage&lt;/li&gt;
&lt;li&gt;Boot volumes&lt;/li&gt;
&lt;li&gt;High-performance workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Architecture Overview
&lt;/h2&gt;

&lt;p&gt;Architecture Diagram &lt;/p&gt;

&lt;p&gt;Compute Instance&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Attachment Layer (iSCSI / Paravirtualized)&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
OCI Block Volume Service&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Distributed Storage Backend&lt;/p&gt;

&lt;p&gt;OCI Block Volume is decoupled from compute, meaning storage persists even if the instance is terminated. Data is replicated across multiple storage servers to ensure high availability and durability.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Volumes
&lt;/h2&gt;

&lt;p&gt;OCI provides different types of volumes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Boot Volume → Used for operating system&lt;/li&gt;
&lt;li&gt;Block Volume → Used for application data&lt;/li&gt;
&lt;li&gt;Volume Backups → Used for snapshots and recovery&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Performance
&lt;/h2&gt;

&lt;p&gt;Performance in OCI Block Volume is defined using VPUs (Volume Performance Units per GB).&lt;/p&gt;

&lt;p&gt;Higher VPUs provide higher IOPS and throughput.&lt;/p&gt;

&lt;p&gt;10 VPUs → Low cost workloads&lt;br&gt;&lt;br&gt;
20 VPUs → Balanced workloads&lt;br&gt;&lt;br&gt;
30+ VPUs → High-performance workloads  &lt;/p&gt;

&lt;h2&gt;
  
  
  Autotuning (Dynamic Scaling)
&lt;/h2&gt;

&lt;p&gt;Autotuning allows OCI to automatically adjust volume performance based on workload demand.&lt;/p&gt;

&lt;p&gt;Workload increase → Performance increases&lt;br&gt;&lt;br&gt;
Workload decrease → Cost optimized  &lt;/p&gt;

&lt;p&gt;Attachment Types&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;iSCSI Attachment&lt;br&gt;
Uses TCP/IP-based storage communication and requires manual setup.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Paravirtualized Attachment&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Uses OCI optimized drivers and provides better performance with simpler setup.&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use What
&lt;/h2&gt;

&lt;p&gt;Use Paravirtualized when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplicity is required&lt;/li&gt;
&lt;li&gt;Standard workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Use iSCSI when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Maximum performance is required&lt;/li&gt;
&lt;li&gt;Fine-grained control is needed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Best Practices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use paravirtualized attachments when possible
&lt;/li&gt;
&lt;li&gt;Enable autotuning
&lt;/li&gt;
&lt;li&gt;Separate volumes for OS, logs, and database
&lt;/li&gt;
&lt;li&gt;Monitor performance regularly
&lt;/li&gt;
&lt;li&gt;Choose correct VPU levels
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;OCI Block Volume provides flexible and scalable storage for cloud workloads. By understanding architecture, performance tuning, and attachment methods, engineers can design efficient and reliable storage systems in OCI.&lt;/p&gt;

&lt;p&gt;Proper monitoring and tuning help avoid performance bottlenecks and ensure optimal system behavior.&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>blockvolume</category>
      <category>devplusplus</category>
      <category>devops</category>
    </item>
    <item>
      <title>High Performance Computing Storage in OCI using Lustre File System</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Wed, 18 Mar 2026 10:22:34 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/high-performance-computing-storage-in-oci-using-lustre-file-system-ahb</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/high-performance-computing-storage-in-oci-using-lustre-file-system-ahb</guid>
      <description>&lt;h2&gt;
  
  
  High Performance Computing Storage in OCI using Lustre File System
&lt;/h2&gt;

&lt;p&gt;As cloud workloads evolve, especially in areas like high-performance computing (HPC), machine learning, and big data analytics, traditional storage systems often become a bottleneck. These workloads require high throughput, low latency, and parallel file access.&lt;/p&gt;

&lt;p&gt;In Oracle Cloud Infrastructure, high-performance storage requirements can be addressed using the Lustre File System, a distributed file system designed for large-scale workloads.&lt;/p&gt;

&lt;p&gt;This article explores how Lustre works and how it can be used in OCI environments.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Lustre File System?
&lt;/h2&gt;

&lt;p&gt;Lustre is a parallel distributed file system designed for environments that require high-speed access to large datasets.&lt;/p&gt;

&lt;p&gt;It is commonly used in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High Performance Computing (HPC)&lt;/li&gt;
&lt;li&gt;Artificial Intelligence and Machine Learning&lt;/li&gt;
&lt;li&gt;Scientific simulations&lt;/li&gt;
&lt;li&gt;Big data processing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unlike traditional file systems, Lustre distributes data across multiple storage nodes to achieve high performance.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Lustre in OCI?
&lt;/h2&gt;

&lt;p&gt;Cloud-based HPC workloads demand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High throughput&lt;/li&gt;
&lt;li&gt;Scalable storage&lt;/li&gt;
&lt;li&gt;Parallel access from multiple compute nodes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lustre provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Parallel read/write operations&lt;/li&gt;
&lt;li&gt;Horizontal scalability&lt;/li&gt;
&lt;li&gt;High bandwidth performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This makes it ideal for workloads where multiple compute instances process large datasets simultaneously.&lt;/p&gt;

&lt;h2&gt;
  
  
  Lustre Architecture Overview
&lt;/h2&gt;

&lt;p&gt;Lustre is built using multiple components working together.&lt;/p&gt;

&lt;p&gt;Key Components&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Metadata Server (MDS) → Stores file metadata&lt;/li&gt;
&lt;li&gt;Object Storage Servers (OSS) → Store actual data&lt;/li&gt;
&lt;li&gt;Clients → Compute instances accessing the file system&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Architecture Flow&lt;/p&gt;

&lt;p&gt;Compute Nodes (Clients)&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Metadata Server (MDS)&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Object Storage Servers (OSS)&lt;br&gt;
        │&lt;br&gt;
        ▼&lt;br&gt;
Distributed Storage&lt;/p&gt;

&lt;p&gt;In this architecture:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Clients request metadata from MDS&lt;/li&gt;
&lt;li&gt;Data is read/written from OSS nodes&lt;/li&gt;
&lt;li&gt;Operations happen in parallel for high performance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How Lustre Works
&lt;/h2&gt;

&lt;p&gt;When a client accesses a file:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Metadata request is sent to MDS&lt;/li&gt;
&lt;li&gt;MDS provides file location information&lt;/li&gt;
&lt;li&gt;Client directly accesses data from OSS nodes&lt;/li&gt;
&lt;li&gt;Data transfer happens in parallel&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This parallel architecture significantly improves performance.&lt;/p&gt;

&lt;p&gt;Real-World Use Cases&lt;/p&gt;

&lt;p&gt;Lustre is widely used in scenarios such as:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Machine Learning Training&lt;/p&gt;

&lt;p&gt;Training large models requires fast access to massive datasets.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.Scientific Research&lt;/p&gt;

&lt;p&gt;Simulations generate huge amounts of data that must be processed quickly.&lt;/p&gt;

&lt;p&gt;3.Media Rendering&lt;/p&gt;

&lt;p&gt;Video processing and rendering workflows benefit from high throughput.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Lustre in OCI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;High throughput storage&lt;/li&gt;
&lt;li&gt;Scalable architecture&lt;/li&gt;
&lt;li&gt;Parallel data access&lt;/li&gt;
&lt;li&gt;Optimized for HPC workloads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When using Lustre in OCI:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use multiple compute nodes for parallel processing&lt;/li&gt;
&lt;li&gt;Design workloads for distributed execution&lt;/li&gt;
&lt;li&gt;Monitor performance and I/O usage&lt;/li&gt;
&lt;li&gt;Use high-performance networking for better throughput&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Lustre File System Limits
&lt;/h2&gt;

&lt;p&gt;Lustre limits are per availability domain:&lt;br&gt;
Resource    Limit&lt;br&gt;
Max file systems    8 per tenant per availability domain&lt;br&gt;
Max capacity per FS 200 TB&lt;br&gt;
Aggregate throughput    200 Gbps per tenancy per availability domain&lt;/p&gt;

&lt;p&gt;The Lustre client is mandatory for any VM or compute instance that wants to access a Lustre file system.&lt;br&gt;
Lustre client works only with Red Hat Compatible Kernel (RHCK) on Oracle Linu&lt;/p&gt;

&lt;h2&gt;
  
  
  Syncing Lustre with Object Storage
&lt;/h2&gt;

&lt;p&gt;OCI Lustre can sync data with Object Storage for cost-effective long-term storage:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Import&lt;br&gt;
• Pull objects from Object Storage → Lustre&lt;br&gt;
• Use case: AI training, data processing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;ul&gt;
&lt;li&gt;Export
• Push files from Lustre → Object Storage
Use case: Save processed results&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;OCI Lustre file systems require a Lustre client kernel module.&lt;br&gt;
However:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Oracle Linux normally uses UEK kernel, not compatible with Lustre&lt;/li&gt;
&lt;li&gt;So you must switch to RHCK kernel (Red Hat Compatible Kernel)&lt;/li&gt;
&lt;li&gt;Then you must build the Lustre client from source code unless a prebuilt package exists&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>oci</category>
      <category>hpc</category>
      <category>devops</category>
      <category>filesystem</category>
    </item>
    <item>
      <title>Understanding Identity and Access Management (IAM) Architecture in Oracle Cloud Infrastructure</title>
      <dc:creator>Bonthu Durga Prasad</dc:creator>
      <pubDate>Sat, 14 Mar 2026 12:17:12 +0000</pubDate>
      <link>https://forem.com/bonthu_durgaprasad_60725/understanding-identity-and-access-management-iam-architecture-in-oracle-cloud-infrastructure-kh1</link>
      <guid>https://forem.com/bonthu_durgaprasad_60725/understanding-identity-and-access-management-iam-architecture-in-oracle-cloud-infrastructure-kh1</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;Understanding Identity and Access Management (IAM) Architecture in Oracle Cloud Infrastructure&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Security is one of the most critical aspects when designing cloud infrastructure. In Oracle Cloud Infrastructure, Identity and Access Management (IAM) provides a centralized framework to control access to resources and services.&lt;/p&gt;

&lt;p&gt;IAM allows administrators to define who can access cloud resources and what actions they are allowed to perform, ensuring a secure and well-managed cloud environment.&lt;/p&gt;

&lt;p&gt;In this article, we will explore the core IAM architecture and understand how its components work together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why IAM is Important&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In a cloud environment, multiple users, applications, and services interact with infrastructure resources. Without proper access control, organizations risk exposing sensitive data or critical infrastructure.&lt;/p&gt;

&lt;p&gt;OCI IAM helps organizations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implement secure access control&lt;/li&gt;
&lt;li&gt;Enforce the principle of least privilege&lt;/li&gt;
&lt;li&gt;Organize resources effectively&lt;/li&gt;
&lt;li&gt;Manage identities and permissions centrally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Core Components of OCI IAM&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;OCI IAM is built using several key components.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compartments&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compartments are logical containers used to organize and isolate OCI resources.&lt;/p&gt;

&lt;p&gt;They allow administrators to structure cloud environments and apply access control boundaries.&lt;/p&gt;

&lt;p&gt;Example compartment hierarchy:&lt;/p&gt;

&lt;p&gt;Root Tenancy&lt;br&gt;
 │&lt;br&gt;
 ├── Development&lt;br&gt;
 │       ├── Compute&lt;br&gt;
 │       └── Storage&lt;br&gt;
 │&lt;br&gt;
 └── Production&lt;br&gt;
         ├── Application Servers&lt;br&gt;
         └── Databases&lt;/p&gt;

&lt;p&gt;This structure helps maintain clear separation between environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Users and Groups&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Users represent identities that can access the OCI Console or APIs.&lt;/p&gt;

&lt;p&gt;Groups are collections of users with similar responsibilities.&lt;/p&gt;

&lt;p&gt;Instead of assigning permissions to individual users, administrators assign policies to groups.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
Group: DevOps&lt;br&gt;
Users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alice&lt;/li&gt;
&lt;li&gt;Bob&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This simplifies permission management across teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IAM Policies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Policies define what actions users or groups are allowed to perform on OCI resources.&lt;/p&gt;

&lt;p&gt;Example policy:&lt;/p&gt;

&lt;p&gt;Allow group DevOps to manage instance-family in compartment Production&lt;/p&gt;

&lt;p&gt;Policies usually define:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subject (group or dynamic group)&lt;/li&gt;
&lt;li&gt;Action (inspect, read, use, manage)&lt;/li&gt;
&lt;li&gt;Resource type&lt;/li&gt;
&lt;li&gt;Compartment scope&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Policies form the core of OCI authorization.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dynamic Groups and Instance Principals&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modern cloud applications often run on compute instances and need access to OCI services.&lt;/p&gt;

&lt;p&gt;Instead of storing API credentials on servers, OCI provides Instance Principals.&lt;/p&gt;

&lt;p&gt;Instance principals allow compute instances to authenticate with OCI services using instance identity.&lt;/p&gt;

&lt;p&gt;Example access flow:&lt;/p&gt;

&lt;p&gt;Compute Instance&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Instance Principal&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
Dynamic Group&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
IAM Policy&lt;br&gt;
      │&lt;br&gt;
      ▼&lt;br&gt;
OCI Service Access&lt;/p&gt;

&lt;p&gt;Dynamic groups automatically include instances based on matching rules.&lt;/p&gt;

&lt;p&gt;Example dynamic group rule:&lt;/p&gt;

&lt;p&gt;ALL {instance.compartment.id = ''}&lt;/p&gt;

&lt;p&gt;Example policy:&lt;/p&gt;

&lt;p&gt;Allow dynamic-group app-instances to read buckets in compartment Storage&lt;/p&gt;

&lt;p&gt;This architecture eliminates the need to store credentials on servers.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Real-World Example&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Imagine an application running on an OCI compute instance that needs to upload files to Object Storage.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Instead of storing API keys on the instance:&lt;/li&gt;
&lt;li&gt;The instance is added to a dynamic group&lt;/li&gt;
&lt;li&gt;A policy grants access to Object Storage&lt;/li&gt;
&lt;li&gt;The application authenticates using instance principals&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This enables secure and automated access to OCI services.&lt;/p&gt;

&lt;p&gt;Best Practices for OCI IAM&lt;/p&gt;

&lt;p&gt;When designing IAM architecture in OCI, follow these best practices:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use groups for permission management&lt;/li&gt;
&lt;li&gt;Follow the principle of least privilege&lt;/li&gt;
&lt;li&gt;Organize resources using compartments&lt;/li&gt;
&lt;li&gt;Avoid storing API keys on compute instances&lt;/li&gt;
&lt;li&gt;Use instance principals whenever possible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;*&lt;em&gt;Conclusion&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Identity and Access Management is a foundational security service in Oracle Cloud Infrastructure. By combining compartments, users, groups, policies, and dynamic groups, organizations can build a secure access control framework for their cloud environments.&lt;/p&gt;

&lt;p&gt;Understanding IAM architecture is essential for designing secure and scalable OCI workloads.&lt;/p&gt;

&lt;p&gt;GitHub Repository&lt;/p&gt;

&lt;p&gt;You can explore the complete IAM implementation and architecture documentation here:&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/Durgaprasad9346" rel="noopener noreferrer"&gt;
        Durgaprasad9346
      &lt;/a&gt; / &lt;a href="https://github.com/Durgaprasad9346/oci-iam-access-control-guide" rel="noopener noreferrer"&gt;
        oci-iam-access-control-guide
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      OCI IAM deep dive covering users, groups, policies, dynamic groups, instance principals and advanced access patterns in Oracle Cloud Infrastructure.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;oci-iam-access-control-guide&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;OCI IAM deep dive covering users, groups, policies, dynamic groups, instance principals and advanced access patterns in Oracle Cloud Infrastructure.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Identity and Access Management (IAM) is the security foundation of Oracle Cloud Infrastructure (OCI). It controls authentication and authorization for users, services, and applications interacting with cloud resources.&lt;/p&gt;
&lt;p&gt;OCI IAM allows administrators to define who can access resources and what actions they can perform through policies, groups, and dynamic access mechanisms.&lt;/p&gt;
&lt;p&gt;This repository provides an in-depth explanation of OCI IAM components and advanced access patterns used in enterprise cloud environments.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Core IAM Components&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;OCI IAM consists of several key components:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Compartments&lt;/li&gt;
&lt;li&gt;Users&lt;/li&gt;
&lt;li&gt;Groups&lt;/li&gt;
&lt;li&gt;Policies&lt;/li&gt;
&lt;li&gt;Dynamic Groups&lt;/li&gt;
&lt;li&gt;Instance Principals&lt;/li&gt;
&lt;li&gt;Resource Principals&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These components work together to implement secure access control across OCI services.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;IAM Access Flow&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Typical access flow:&lt;/p&gt;
&lt;p&gt;User
│
▼
OCI IAM
│
▼
Group Membership
│
▼
Policy Evaluation
│
▼
Access to OCI Resource&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Repository&lt;/h2&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/Durgaprasad9346/oci-iam-access-control-guide" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




</description>
      <category>oracle</category>
      <category>oci</category>
      <category>security</category>
      <category>iam</category>
    </item>
  </channel>
</rss>
