Dell OpenManage Integration for VMware vCenter (OMIVV), bir sanal appliance (OVA) olarak dağıtılan ve vCenter Server'a eklenti olarak entegre edilen bir yönetim çözümüdür. OMIVV, iDRAC ile doğrudan konuşarak donanım olaylarını vCenter alarm sistemiyle eşleştirir; bu sayede VMware yöneticileri ayrı bir Dell yönetim arayüzüne geçmek zorunda kalmadan donanım uyarılarını görebilir.
OMIVV'nin üç ana işlevi vardır: Inventory (donanım envanteri ve sağlık durumu), Firmware Baseline (sürüm uyumluluk kontrolü ve güncelleme iş akışları) ve Deployment (yeni host'ların ESXi kurulumu ile birlikte yapılandırılması). OMIVV, aynı zamanda VMware vSAN ve VMware vSphere Lifecycle Manager (vLCM) ile entegre çalışarak ESXi güncelleme süreçlerine Dell firmware güncellemelerini dahil edebilir.
📊
Envanter
Donanım sağlık izleme
vCenter'dan gerçek zamanlı
🔄
Firmware Baseline
Uyumluluk ve güncelleme
vLCM entegrasyonu
🚀
Deployment
Yeni host hazırlama
Bare-metal → ESXi
🔔
Alarm Entegrasyonu
vCenter native alarmlar
SNMP trap iletimi
// OMIVV Entegrasyon Mimarisi
vCenter ServervSphere UI
⟷
OMIVV ApplianceOVA / REST API
⟷
iDRAC9PowerEdge OOB
vLCMESXi lifecycle
↕
Dell RepositoryDRM / ftp.dell.com
↕
Lifecycle ControllerFirmware güncelleme
OMIVV, Dell Support sitesinden indirilen bir OVA dosyası olarak dağıtılır. Minimum gereksinimler: 4 vCPU, 12 GB RAM, 120 GB disk alanı. Üretim ortamları için 8 vCPU ve 16 GB RAM önerilir. OMIVV, yönetim ağına erişim sağlayabileceği bir portgroup'a bağlanmalıdır; iDRAC yönetim ağına erişim zorunludur.
OVA kurulumu sırasında ağ yapılandırması (statik IP veya DHCP), NTP sunucusu ve syslog hedefi belirlenir. Kurulum sonrasında OMIVV web arayüzüne HTTPS üzerinden erişilir ve ilk kurulum sihirbazı çalıştırılır. Bu sihirbaz sırasında vCenter kayıt URL'si ve kimlik bilgileri girilir.
Import-Module VMware.PowerCLI
Connect-VIServer -Server vcenter.example.com -User administrator@vsphere.local -Password "VCPass123"
$ovfConfig = Get-OvfConfiguration -Ovf "C:\Downloads\OMIVV-5.x.x.ova"
# Ağ ve şifre ayarları
$ovfConfig.Common.vami.ip.Value = "10.10.5.50"
$ovfConfig.Common.vami.netmask.Value = "255.255.255.0"
$ovfConfig.Common.vami.gateway.Value = "10.10.5.1"
$ovfConfig.Common.vami.DNS.Value = "10.10.5.1"
$ovfConfig.Common.vami.searchpath.Value = "example.com"
$ovfConfig.Common.password.Value = "OMIVVAdm!n2026"
$vmHost = Get-VMHost -Name "esxi01.example.com"
$datastore = Get-Datastore -Name "vsanDatastore"
Import-VApp -OvfConfiguration $ovfConfig \
-Source "C:\Downloads\OMIVV-5.x.x.ova" \
-VMHost $vmHost \
-Datastore $datastore \
-Name "OMIVV-Appliance" \
-DiskStorageFormat Thin
Start-VM -VM "OMIVV-Appliance"
Write-Host "OMIVV başlatıldı: https://10.10.5.50"
# Varsayılan kullanıcı: admin / Password1!
# NTP yapılandırması
omivv-cli ntp set --servers "10.10.0.1,pool.ntp.org"
omivv-cli ntp enable
# Syslog hedefi ekle
omivv-cli syslog add --host siem.example.com --port 514 --protocol udp
# Sertifika güncelle (Let's Encrypt veya kurumsal CA)
omivv-cli certificate import --cert /tmp/omivv.crt --key /tmp/omivv.key
ℹ️
OMIVV appliance'ı üretim workload'larından izole bir yönetim kümesine veya ayrı bir management portgroup'una deploy edin. OMIVV, iDRAC'lara sürekli bağlantı gerektirir; ağ bölümlendirmesi bu trafiği göz önünde bulundurmalıdır.
OMIVV'yi vCenter'a kaydetmek, eklentinin vSphere Client'ta görünmesini sağlar. Kayıt sırasında OMIVV, vCenter extension olarak kendini tanıtır ve Dell EMC OpenManage sekmesi vSphere Client'ta aktif hale gelir. Kayıt işlemi için OMIVV yönetim arayüzünden veya REST API üzerinden yapılabilir.
Birden fazla vCenter instance'ı olan ortamlarda her vCenter için ayrı kayıt yapılması gerekir; OMIVV tek bir appliance üzerinden birden fazla vCenter'ı yönetebilir (OMIVV Standard: 5 vCenter, OMIVV Enterprise: sınırsız). Kayıt sonrasında vCenter'da bir Dell Management Plugin kullanıcısı oluşturulması ve bu kullanıcıya minimum gerekli rollerin atanması önerilir.
curl -s -k -u admin:OMIVVAdm!n2026 \
-X POST \
-H "Content-Type: application/json" \
-d '{
"vcenterHostname": "vcenter.example.com",
"vcenterPort": 443,
"vcenterUsername": "omivv-svc@vsphere.local",
"vcenterPassword": "SvcPass!2026",
"description": "Production vCenter"
}' \
"https://10.10.5.50/Appliance/vCenterRegistration" \
| python3 -m json.tool
Connect-VIServer -Server vcenter.example.com -User administrator@vsphere.local -Password "VCPass123"
# OMIVV için özel rol oluştur
$privs = @(
"Alarm.Acknowledge",
"Alarm.Create",
"Alarm.Delete",
"Alarm.Edit",
"Extension.Register",
"Extension.Unregister",
"Extension.Update",
"Host.Config.AdvancedConfig",
"Host.Config.Firmware",
"Host.Config.Maintenance",
"Host.Inventory.AddHostToCluster"
)
New-VIRole -Name "OMIVV-Role" -Privilege (Get-VIPrivilege -Id $privs)
# Servis hesabına rol ata
$svcAccount = Get-VIAccount -Id "omivv-svc@vsphere.local" -Domain "vsphere.local"
New-VIPermission -Entity (Get-Datacenter) -Principal $svcAccount -Role "OMIVV-Role" -Propagate $true
OMIVV, her ESXi host'una karşılık gelen iDRAC'ı Connection Profile üzerinden bağlar. Connection Profile, iDRAC IP adresi veya hostname'i, kimlik bilgileri ve protokol ayarlarını içerir. OMIVV, ESXi host IP'si ile iDRAC IP'si arasındaki eşlemeyi otomatik olarak keşfedebilir (auto-discovery) ya da manuel olarak belirtilebilir.
Büyük ortamlarda tüm iDRAC'lar için tek bir servis hesabı kullanmak yönetimi kolaylaştırır. iDRAC hesabına en az Operator rolü verilmelidir; firmware güncelleme için Administrator rolü gereklidir. Connection Profile'lar gruplandırılabilir; bu sayede küme bazında farklı iDRAC kimlik bilgileri kullanmak mümkündür.
curl -s -k -u admin:OMIVVAdm!n2026 \
-X POST \
-H "Content-Type: application/json" \
-d '{
"profileName": "Prod-iDRAC-Profile",
"description": "Production cluster iDRAC credentials",
"credentials": {
"userName": "omivv-idrac",
"password": "iDRACPass!2026",
"enableSNMPGet": true,
"snmpCommunityString": "dell-monitoring",
"SNMPVersion": "V3"
},
"wsman": {
"retryCount": 3,
"retryWait": 60
}
}' \
"https://10.10.5.50/ConnectionProfile" | python3 -m json.tool
curl -s -k -u admin:OMIVVAdm!n2026 \
-X POST \
-H "Content-Type: application/json" \
-d '{
"profileId": "prof-001",
"hostIds": ["host-101", "host-102", "host-103"]
}' \
"https://10.10.5.50/ConnectionProfile/AssignHosts"
racadm -r <idrac-ip> -u root -p <password> \
set iDRAC.Users.5.UserName omivv-idrac
racadm -r <idrac-ip> -u root -p <password> \
set iDRAC.Users.5.Password "iDRACPass!2026"
racadm -r <idrac-ip> -u root -p <password> \
set iDRAC.Users.5.Privilege 0x1ff
racadm -r <idrac-ip> -u root -p <password> \
set iDRAC.Users.5.Enable Enabled
for IP in 10.10.1.{10..30}; do
racadm -r $IP -u root -p rootpass \
set iDRAC.Users.5.UserName omivv-idrac
racadm -r $IP -u root -p rootpass \
set iDRAC.Users.5.Password "iDRACPass!2026"
racadm -r $IP -u root -p rootpass \
set iDRAC.Users.5.Privilege 0x1ff
racadm -r $IP -u root -p rootpass \
set iDRAC.Users.5.Enable Enabled
echo "[$IP] OMIVV hesabı oluşturuldu"
done
OMIVV'nin en güçlü özelliklerinden biri Firmware Baseline yönetimidir. Baseline, tüm bileşenler (BIOS, iDRAC, PERC, NIC, PSU) için hedef firmware versiyonlarını tanımlayan bir profil olarak düşünülebilir. OMIVV, her host'u bu baseline ile karşılaştırarak uyumsuz bileşenleri raporlar ve güncelleme iş akışını otomatik olarak yönetebilir.
Firmware kaynağı olarak Dell ftp.dell.com (internet bağlantısı gerektiren) veya Dell Repository Manager (DRM) ile oluşturulan yerel repo (air-gapped ortamlar için) kullanılabilir. Güncelleme iş akışı ESXi host'u bakım moduna alır, Lifecycle Controller üzerinden firmware günceller, ardından host'u yeniden başlatır ve bakım modundan çıkarır — bu süreç vSphere DRS ile tam entegre çalışır.
curl -s -k -u admin:OMIVVAdm!n2026 \
-X POST \
-H "Content-Type: application/json" \
-d '{
"baselineName": "PowerEdge-R750-2026Q2",
"description": "Q2 2026 firmware baseline for R750 cluster",
"catalogSource": {
"type": "HTTP",
"url": "http://10.10.0.50/dell-catalog/Catalog.xml"
},
"targetModels": ["PowerEdge R750", "PowerEdge R750xs"],
"autoUpdate": false
}' \
"https://10.10.5.50/FirmwareBaseline" | python3 -m json.tool
curl -s -k -u admin:OMIVVAdm!n2026 \
"https://10.10.5.50/FirmwareBaseline/base-001/ComplianceReport" \
| python3 -c "
import sys, json
data = json.load(sys.stdin)
for host in data.get('hosts', []):
status = host['complianceStatus']
print(f'{host[\"hostName\"]}: {status}')
for comp in host.get('components', []):
if comp['status'] != 'OK':
print(f' UYUMSUZ: {comp[\"name\"]} {comp[\"currentVersion\"]} -> {comp[\"targetVersion\"]}')
"
curl -s -k -u admin:OMIVVAdm!n2026 \
-X POST \
-H "Content-Type: application/json" \
-d '{
"baselineId": "base-001",
"hostIds": ["host-101"],
"updateSchedule": {
"type": "IMMEDIATE",
"maintenanceMode": true,
"evacuateVMs": true
}
}' \
"https://10.10.5.50/FirmwareBaseline/UpdateJob"
JOB_ID="job-20260605-001"
curl -s -k -u admin:OMIVVAdm!n2026 \
"https://10.10.5.50/Jobs/$JOB_ID/Status" | python3 -m json.tool
⚠️
DRS Gereksinimi: OMIVV firmware güncellemesi sırasında host bakım moduna alınır ve VM'ler vSphere DRS tarafından başka host'lara taşınır. DRS'in Fully Automated modunda olduğundan emin olun; Manul modda VM'ler otomatik taşınmaz ve güncelleme başarısız olabilir.
OMIVV, iDRAC ile sürekli iletişim kurarak CPU, bellek, disk, NIC, güç kaynağı ve fan sağlık durumlarını vCenter'a aktarır. Bu bilgiler vSphere Client'ta Dell Hardware Summary sekmesinde görünür ve vCenter alarm sistemiyle entegre çalışır. Kritik bir bileşen arızasında hem OMIVV panosu hem de vCenter alarmı tetiklenir.
OMIVV ayrıca storage controller (PERC) durumunu ve sanal disk sağlığını da izler. Bir disk arızası tespit edildiğinde OMIVV otomatik olarak vCenter olayı oluşturur. Bu olay bir vCenter alarm kuralı ile ilişkilendirildiğinde e-posta, SNMP trap veya webhook bildirimi gönderilebilir.
curl -s -k -u admin:OMIVVAdm!n2026 \
"https://10.10.5.50/HostInventory?vcenterHostname=vcenter.example.com" \
| python3 -c "
import sys, json
data = json.load(sys.stdin)
for host in data.get('hosts', []):
health = host.get('overallHealth', 'UNKNOWN')
icon = '✅' if health == 'OK' else '❌'
print(f'{icon} {host[\"hostName\"]:30} → {health}')
if health != 'OK':
for comp in host.get('components', []):
if comp.get('health') != 'OK':
print(f' └── {comp[\"type\"]}: {comp[\"health\"]} - {comp.get(\"message\",\"\")}')
"
curl -s -k -u admin:OMIVVAdm!n2026 \
"https://10.10.5.50/HostInventory/host-101/StorageComponents" \
| python3 -m json.tool
Connect-VIServer vcenter.example.com
$omivvTag = New-Tag -Name "OMIVV-Monitored" -Category (Get-TagCategory "Dell-Management")
Get-VMHost | Where-Object {$_.Manufacturer -like "*Dell*"} | ForEach-Object {
New-TagAssignment -Tag $omivvTag -Entity $_
Write-Host "Etiketlendi: $($_.Name)"
}
OMIVV, kapsamlı bir REST API sunar. Bu API üzerinden vCenter kaydı, connection profile yönetimi, firmware baseline oluşturma, uyumluluk raporları ve güncelleme job'ları programatik olarak yönetilebilir. API Swagger belgeleri OMIVV appliance'ı üzerinde /apidocs endpoint'inde erişilebilirdir.
Kimlik doğrulama için HTTP Basic Auth veya API Token kullanılabilir. Otomasyon pipeline'larında API Token tercih edilir çünkü parola rotasyonundan bağımsızdır ve belirli izinlerle sınırlandırılabilir. Aşağıdaki örnekler Python ile kapsamlı bir OMIVV otomasyon iskeleti sunar.
import requests, json, sys
from datetime import datetime
class OMIVVClient:
def __init__(self, host, user="admin", password=""):
self.base = f"https://{host}"
self.auth = (user, password)
self.headers = {"Content-Type": "application/json",
"Accept": "application/json"}
requests.packages.urllib3.disable_warnings()
def get(self, path):
r = requests.get(f"{self.base}{path}", auth=self.auth,
headers=self.headers, verify=False)
r.raise_for_status()
return r.json()
def post(self, path, data):
r = requests.post(f"{self.base}{path}", auth=self.auth,
headers=self.headers, json=data, verify=False)
r.raise_for_status()
return r.json()
def compliance_report(self, baseline_id):
"""Baseline uyumluluk raporunu döndür"""
return self.get(f"/FirmwareBaseline/{baseline_id}/ComplianceReport")
def non_compliant_hosts(self, baseline_id):
"""Uyumsuz host'ları listele"""
report = self.compliance_report(baseline_id)
return [h for h in report.get("hosts", [])
if h.get("complianceStatus") != "COMPLIANT"]
def schedule_update(self, baseline_id, host_ids, maintenance=True):
"""Güncelleme job'u oluştur"""
return self.post("/FirmwareBaseline/UpdateJob", {
"baselineId": baseline_id,
"hostIds": host_ids,
"updateSchedule": {
"type": "IMMEDIATE",
"maintenanceMode": maintenance,
"evacuateVMs": True
}
})
# Kullanım
client = OMIVVClient("10.10.5.50", "admin", "OMIVVAdm!n2026")
non_compliant = client.non_compliant_hosts("base-001")
print(f"\n{datetime.now()} - Uyumsuz Host Raporu")
print("=" * 50)
for host in non_compliant:
print(f"HOST: {host['hostName']}")
for comp in host.get("components", []):
if comp["status"] != "OK":
print(f" {comp['name']}: {comp['currentVersion']} → {comp['targetVersion']}")
if non_compliant and "--update" in sys.argv:
host_ids = [h["hostId"] for h in non_compliant]
job = client.schedule_update("base-001", host_ids)
print(f"\nGüncelleme job oluşturuldu: {job.get('jobId')}")
OMIVV, iDRAC'tan aldığı donanım olaylarını vCenter olay sistemine çevirir. Bu olaylar Dell.Hardware.Critical, Dell.Hardware.Warning gibi custom event type'lar olarak vCenter log'larına yazılır. Bu event'lere dayalı vCenter alarm kuralları oluşturarak IT operasyon ekibini anlık bilgilendirebilirsiniz.
vSphere alarmlarını OMIVV olaylarıyla eşleştirmek, e-posta bildirimi, SNMP trap ve webhook tetiklemesini mümkün kılar. Özellikle disk arızaları, PSU (güç kaynağı) hataları ve ısınma uyarıları için ayrı alarm tanımlamaları oluşturulması önerilir; böylece farklı seviyede müdahale prosedürleri otomatik tetiklenebilir.
Connect-VIServer vcenter.example.com
$alarmMgr = Get-View AlarmManager
# Dell disk arızası alarmı
$alarmSpec = New-Object VMware.Vim.AlarmSpec
$alarmSpec.Name = "Dell - Disk Arızası Kritik"
$alarmSpec.Description = "PowerEdge fiziksel disk arızası tespit edildi"
$alarmSpec.Enabled = $true
# Alarm koşulu - OMIVV Dell event
$eventAlarm = New-Object VMware.Vim.EventAlarmExpression
$eventAlarm.EventType = "EventEx"
$eventAlarm.EventTypeId = "com.dell.openmanage.diskFailure"
$eventAlarm.Status = "red"
$alarmSpec.Expression = New-Object VMware.Vim.OrAlarmExpression
$alarmSpec.Expression.Expression = @($eventAlarm)
# E-posta aksiyonu
$emailAction = New-Object VMware.Vim.SendEmailAction
$emailAction.ToList = "ops-team@example.com"
$emailAction.Subject = "KRITIK: Dell PowerEdge Disk Arizasi - {host.name}"
$emailAction.Body = "Sunucu: {host.name}`nOlay: Fiziksel disk arizasi"
$alarmMgr.CreateAlarm((Get-Datacenter).Id, $alarmSpec)
curl -s -k -u admin:OMIVVAdm!n2026 \
-X POST \
-H "Content-Type: application/json" \
-d '{
"trapDestinations": [
{
"host": "snmp-manager.example.com",
"port": 162,
"community": "dell-traps",
"version": "V3",
"userName": "dell-snmpv3",
"authProtocol": "SHA",
"authPassword": "SNMPAuth!2026",
"privProtocol": "AES",
"privPassword": "SNMPPriv!2026"
}
],
"eventFilters": {
"minSeverity": "WARNING",
"categories": ["HARDWARE", "STORAGE", "FIRMWARE"]
}
}' \
"https://10.10.5.50/AlertSettings/SNMP"
- ✓ OMIVV OVA deploy edildi ve yapılandırıldı
- ✓ vCenter'a kayıt yapıldı, eklenti görünüyor
- ✓ iDRAC Connection Profile'ları oluşturuldu
- ✓ Firmware Baseline tanımlandı ve uyumluluk raporu alındı
- ✓ vCenter alarmları Dell olaylarıyla eşleştirildi
- ✓ SNMP trap hedefi yapılandırıldı
- ✓ OMIVV API token oluşturuldu ve otomasyon test edildi