Dell’s Integrated Dell Remote Access Controller (iDRAC) provides powerful out-of-band management capabilities for PowerEdge servers. While Dell only officially supports RHEL and SUSE distributions, this guide demonstrates how to successfully install and utilize iDRAC tools, particularly RACADM, on Ubuntu and Debian systems through RPM-to-DEB conversion.

Overview

Dell’s iDRAC tools suite provides command-line utilities for managing PowerEdge servers remotely. The RACADM (Remote Access Controller Admin) utility enables administrators to configure iDRAC settings, update firmware, manage certificates, and perform various maintenance tasks programmatically. Despite lacking official Debian/Ubuntu packages, the RHEL binaries function perfectly when properly installed.

Key Components

The iDRAC tools package includes:

  • RACADM: Primary command-line interface for iDRAC management
  • IPMItool: Standard IPMI interface tool with Dell enhancements
  • Supporting Libraries: Required dependencies for tool operation

Installation Process

Prerequisites

Before beginning installation, ensure your system has the following packages:

sudo apt update
sudo apt install -y wget alien dpkg-dev

Download iDRAC Tools

Current stable version: Dell EMC iDRAC Tools for Linux v9.4.0

# Download the latest iDRAC tools package
wget https://dl.dell.com/FOLDER05920767M/1/DellEMC-iDRACTools-Web-LX-9.4.0-3732_A00.tar.gz

# Extract the archive
tar xvf DellEMC-iDRACTools-Web-LX-9.4.0-3732_A00.tar.gz

# Navigate to the extracted directory
cd iDRACTools

Package Structure Analysis

The extracted archive contains:

iDRACTools/
├── gpl.txt
├── ipmitool/
├── license.txt
├── racadm/
│   ├── install_racadm.sh
│   ├── RHEL7/
│   ├── RHEL8/
│   ├── SLES15/
│   └── uninstall_racadm.sh
└── readme.txt

RPM to DEB Conversion

Navigate to the appropriate RHEL directory based on your Ubuntu/Debian version:

# For Ubuntu 18.04+ or Debian 10+
cd racadm/RHEL8/x86_64

# List available RPM packages
ls -la *.rpm

Convert RPM packages to DEB format using alien:

# Convert all srvadmin RPM packages
sudo alien --scripts --to-deb srvadmin-*.rpm

# Verify DEB package creation
ls -la *.deb

Package Installation

Install all converted packages simultaneously to resolve dependencies:

# Install the converted DEB packages
sudo dpkg -i *.deb

# Fix any dependency issues
sudo apt-get install -f

For convenient system-wide access:

# Create symbolic link in PATH
sudo ln -sf /opt/dell/srvadmin/bin/idracadm7 /usr/local/bin/racadm

# Verify installation
racadm --version

RACADM Command Reference

Connection Syntax

Basic remote connection format:

racadm -r <iDRAC_IP> -u <username> -p <password> <command> [options]

System Information Commands

Get Comprehensive System Information

racadm -r 10.10.10.25 -u root -p "SecurePass123!" getsysinfo

Output includes:

  • iDRAC firmware version and MAC address
  • System model and service tag
  • BIOS version
  • Network configuration (IPv4/IPv6)
  • Thermal information
  • NIC MAC addresses

Query Specific Configuration Groups

# Network configuration
racadm -r 10.10.10.25 -u root -p "SecurePass123!" getconfig -g cfgLanNetworking

# User configuration
racadm -r 10.10.10.25 -u root -p "SecurePass123!" getconfig -g cfgUserAdmin -i 2

# System information
racadm -r 10.10.10.25 -u root -p "SecurePass123!" getconfig -g cfgServerInfo

iDRAC Management Commands

Reset iDRAC Controller

Soft reset (graceful restart):

racadm -r 10.10.10.25 -u root -p "SecurePass123!" racreset soft

Hard reset (complete power cycle):

racadm -r 10.10.10.25 -u root -p "SecurePass123!" racreset hard -f

Network Configuration

Configure static IP:

racadm -r 10.10.10.25 -u root -p "SecurePass123!" setniccfg -s 192.168.1.100 255.255.255.0 192.168.1.1

Enable DHCP:

racadm -r 10.10.10.25 -u root -p "SecurePass123!" setniccfg -d

Firmware Update Operations

Local File Update

# Update with automatic reboot
racadm -r 10.10.10.25 -u root -p "SecurePass123!" update -f /path/to/iDRAC-with-Lifecycle-Controller_Firmware_XXXXX_LN_4.00.00.00.EXE --reboot

# Update without reboot
racadm -r 10.10.10.25 -u root -p "SecurePass123!" update -f /path/to/firmware.EXE -a FALSE

Network Share Updates

CIFS/SMB share:

racadm -r 10.10.10.25 -u root -p "SecurePass123!" update -f firmware.EXE -l //fileserver/share/path -u shareuser -p sharepass --reboot

NFS share:

racadm -r 10.10.10.25 -u root -p "SecurePass123!" update -f firmware.EXE -l nfsserver:/export/path -t NFS --reboot

Repository-Based Updates

# FTP repository update
racadm -r 10.10.10.25 -u root -p "SecurePass123!" update -f Catalog.xml -e ftp.dell.com/catalog/repository -a TRUE -t FTP

# HTTP repository update
racadm -r 10.10.10.25 -u root -p "SecurePass123!" update -f Catalog.xml -e http://repository.dell.com/catalog -a TRUE -t HTTP

Job Queue Management

View current jobs:

racadm -r 10.10.10.25 -u root -p "SecurePass123!" jobqueue view

Delete a specific job:

racadm -r 10.10.10.25 -u root -p "SecurePass123!" jobqueue delete -i JID_123456789

Certificate Management

Upload SSL Certificate

# Upload server certificate
racadm -r 10.10.10.25 -u root -p "SecurePass123!" sslcertupload -t 1 -f /path/to/certificate.pem

# Upload CA certificate
racadm -r 10.10.10.25 -u root -p "SecurePass123!" sslcertupload -t 2 -f /path/to/ca-cert.pem

View Current Certificate

racadm -r 10.10.10.25 -u root -p "SecurePass123!" sslcertview -t 1

Power Management

Server Power Control

# Power on server
racadm -r 10.10.10.25 -u root -p "SecurePass123!" serveraction powerup

# Graceful shutdown
racadm -r 10.10.10.25 -u root -p "SecurePass123!" serveraction powerdown

# Hard power off
racadm -r 10.10.10.25 -u root -p "SecurePass123!" serveraction hardreset

# Power cycle
racadm -r 10.10.10.25 -u root -p "SecurePass123!" serveraction powercycle

Virtual Media Management

Connect Virtual Media

# Connect ISO from network share
racadm -r 10.10.10.25 -u root -p "SecurePass123!" remoteimage -c -l //server/share/image.iso

# Disconnect virtual media
racadm -r 10.10.10.25 -u root -p "SecurePass123!" remoteimage -d

User Management

Create New User

# Add user with admin privileges
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgUserAdmin -o cfgUserAdminUserName -i 3 newadmin
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgUserAdmin -o cfgUserAdminPassword -i 3 "NewPass123!"
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgUserAdmin -o cfgUserAdminPrivilege -i 3 0x1ff
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgUserAdmin -o cfgUserAdminEnable -i 3 1

Modify User Privileges

# Grant full admin rights
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgUserAdmin -o cfgUserAdminPrivilege -i 2 0x1ff

# Read-only access
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgUserAdmin -o cfgUserAdminPrivilege -i 2 0x001

Advanced Configuration

SNMP Configuration

Enable SNMP and configure community string:

# Enable SNMP
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgOobSnmp -o cfgOobSnmpAgentEnable 1

# Set community string
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgOobSnmp -o cfgOobSnmpAgentCommunity "monitoring"

# Configure trap destination
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgTraps -o cfgTrapsAlertDestIPAddr -i 1 192.168.1.50

Email Alert Configuration

# Enable email alerts
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgEmailAlert -o cfgEmailAlertEnable -i 1 1

# Configure SMTP server
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgRemoteHosts -o cfgRhostsSmtpServerIpAddr smtp.example.com

# Set email destination
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgEmailAlert -o cfgEmailAlertAddress -i 1 "alerts@example.com"

LDAP/Active Directory Integration

# Enable LDAP authentication
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgLdap -o cfgLdapEnable 1

# Configure LDAP server
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgLdap -o cfgLdapServer ldap.example.com

# Set base DN
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgLdap -o cfgLdapBaseDN "dc=example,dc=com"

Troubleshooting

Common Issues and Solutions

Library Dependencies

If encountering missing library errors:

# Install required libraries
sudo apt install libargtable2-0 libncurses5 libssl1.0.0

# For newer systems with libssl1.1
sudo ln -s /usr/lib/x86_64-linux-gnu/libssl.so.1.1 /usr/lib/x86_64-linux-gnu/libssl.so.1.0.0

Connection Failures

Test connectivity:

# Verify network connectivity
ping -c 4 <iDRAC_IP>

# Test SSH access (if enabled)
ssh root@<iDRAC_IP>

# Check iDRAC web interface
curl -k https://<iDRAC_IP>

Certificate Errors

For self-signed certificate issues:

# Export iDRAC certificate
echo | openssl s_client -connect <iDRAC_IP>:443 2>/dev/null | openssl x509 > idrac.crt

# Add to system trust store
sudo cp idrac.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Performance Optimization

Concurrent Operations

Execute multiple commands efficiently:

#!/bin/bash
IDRAC_IP="10.10.10.25"
IDRAC_USER="root"
IDRAC_PASS="SecurePass123!"

# Create base command
RACADM="racadm -r $IDRAC_IP -u $IDRAC_USER -p $IDRAC_PASS"

# Execute commands in parallel
$RACADM getsysinfo > sysinfo.txt &
$RACADM getconfig -g cfgLanNetworking > network.txt &
$RACADM hwinventory > inventory.txt &

# Wait for completion
wait

Batch Configuration

Apply multiple settings efficiently:

# Create configuration file
cat > idrac_config.txt << EOF
config -g cfgLanNetworking -o cfgNicEnable 1
config -g cfgLanNetworking -o cfgNicUseDHCP 0
config -g cfgLanNetworking -o cfgNicIpAddress 192.168.1.100
config -g cfgLanNetworking -o cfgNicNetmask 255.255.255.0
config -g cfgLanNetworking -o cfgNicGateway 192.168.1.1
EOF

# Apply configuration
racadm -r 10.10.10.25 -u root -p "SecurePass123!" -f idrac_config.txt

Security Considerations

Credential Management

Store credentials securely:

# Use environment variables
export IDRAC_USER="root"
export IDRAC_PASS="SecurePass123!"
racadm -r 10.10.10.25 -u $IDRAC_USER -p $IDRAC_PASS getsysinfo

# Use credential file
echo "SecurePass123!" > ~/.idrac_pass
chmod 600 ~/.idrac_pass
racadm -r 10.10.10.25 -u root -p $(cat ~/.idrac_pass) getsysinfo

Network Security

Implement secure practices:

  • Use dedicated management networks for iDRAC access
  • Configure firewall rules to restrict iDRAC access
  • Enable TLS/SSL for all communications
  • Regularly update iDRAC firmware
  • Implement strong password policies
  • Enable account lockout policies

Audit Logging

Enable comprehensive logging:

# Enable audit logging
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgRacSecurity -o cfgRacSecurityAuditEnable 1

# Configure syslog destination
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgRemoteHosts -o cfgRhostsSyslogEnable 1
racadm -r 10.10.10.25 -u root -p "SecurePass123!" config -g cfgRemoteHosts -o cfgRhostsSyslogServer1 syslog.example.com

Automation Examples

Health Check Script

#!/bin/bash
# iDRAC Health Check Script

IDRAC_LIST="idrac-list.txt"
OUTPUT_DIR="health-reports"
DATE=$(date +%Y%m%d_%H%M%S)

mkdir -p $OUTPUT_DIR

while IFS=',' read -r ip user pass; do
    echo "Checking iDRAC at $ip..."
    
    # Create report file
    REPORT="$OUTPUT_DIR/${ip}_${DATE}.txt"
    
    # Collect system information
    echo "=== System Information ===" >> $REPORT
    racadm -r $ip -u $user -p "$pass" getsysinfo >> $REPORT 2>&1
    
    # Check hardware status
    echo -e "\n=== Hardware Status ===" >> $REPORT
    racadm -r $ip -u $user -p "$pass" getsensorinfo >> $REPORT 2>&1
    
    # Check SEL logs
    echo -e "\n=== Recent SEL Entries ===" >> $REPORT
    racadm -r $ip -u $user -p "$pass" getsel -i 10 >> $REPORT 2>&1
    
done < $IDRAC_LIST

Firmware Update Automation

#!/bin/bash
# Automated Firmware Update Script

FIRMWARE_DIR="/mnt/firmware"
IDRAC_LIST="idrac-list.txt"
LOG_FILE="firmware_update_$(date +%Y%m%d).log"

update_firmware() {
    local ip=$1
    local user=$2
    local pass=$3
    local fw_file=$4
    
    echo "[$(date)] Starting update for $ip with $fw_file" | tee -a $LOG_FILE
    
    # Create update job
    racadm -r $ip -u $user -p "$pass" update -f $fw_file -l $FIRMWARE_DIR --reboot 2>&1 | tee -a $LOG_FILE
    
    # Monitor job status
    while true; do
        STATUS=$(racadm -r $ip -u $user -p "$pass" jobqueue view -i 1 2>/dev/null | grep "Status" | awk '{print $3}')
        
        case $STATUS in
            "Completed")
                echo "[$(date)] Update completed successfully for $ip" | tee -a $LOG_FILE
                break
                ;;
            "Failed")
                echo "[$(date)] Update failed for $ip" | tee -a $LOG_FILE
                break
                ;;
            *)
                echo "[$(date)] Update in progress for $ip: $STATUS" | tee -a $LOG_FILE
                sleep 60
                ;;
        esac
    done
}

# Process each iDRAC
while IFS=',' read -r ip user pass fw_file; do
    update_firmware $ip $user "$pass" $fw_file &
done < $IDRAC_LIST

# Wait for all updates to complete
wait

Best Practices

Regular Maintenance Tasks

  1. Firmware Updates: Maintain current firmware versions for security and stability
  2. Certificate Renewal: Implement automated certificate renewal processes
  3. Log Collection: Regularly export and archive system event logs
  4. Configuration Backup: Periodically backup iDRAC configurations
  5. Health Monitoring: Implement proactive hardware health monitoring

Integration with Configuration Management

Example Ansible playbook for RACADM operations:

---
- name: Configure iDRAC Settings
  hosts: idrac_hosts
  gather_facts: no
  tasks:
    - name: Set iDRAC network configuration
      shell: |
        racadm -r {{ ansible_host }} -u {{ idrac_user }} -p {{ idrac_pass }} \
        setniccfg -s {{ idrac_ip }} {{ idrac_netmask }} {{ idrac_gateway }}
      
    - name: Configure SNMP settings
      shell: |
        racadm -r {{ ansible_host }} -u {{ idrac_user }} -p {{ idrac_pass }} \
        config -g cfgOobSnmp -o cfgOobSnmpAgentEnable 1
        
    - name: Update iDRAC firmware
      shell: |
        racadm -r {{ ansible_host }} -u {{ idrac_user }} -p {{ idrac_pass }} \
        update -f {{ firmware_file }} -l {{ firmware_share }} --reboot
      when: update_firmware | default(false)

This comprehensive guide provides the foundation for effectively managing Dell PowerEdge servers through iDRAC on Ubuntu and Debian systems. The techniques and commands presented enable full remote management capabilities despite the lack of official distribution support.