This guide assumes you have already installed Dell iDRAC Tools with the RACADM utility on your system. Here are the minimum commands required to successfully configure Directory Authentication on Dell iDRAC.
Configuration for one server
In this section, we’ll walk through the step-by-step process of enabling Active Directory authentication on a single Dell iDRAC.
Step 1. Run the following commands for your target server iDRAC IP address
For all the commands below, replace domain.local with your own domain.
# Enable Global Catalog lookup (so iDRAC can query AD via GC)
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ActiveDirectory.GCLookupEnable Enabled
# Set the root domain for Global Catalog
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ActiveDirectory.GCRootDomain domain.local
# Enable Domain Controller (DC) lookup
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ActiveDirectory.DCLookupEnable Enabled
# Allow DC lookup by user domain
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ActiveDirectory.DCLookupByUserDomain Enabled
# Specify the AD domain name for DC lookup
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ActiveDirectory.DCLookupDomainName domain.local
# Disable certificate validation (useful if your DC uses self-signed certs)
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ActiveDirectory.CertValidationEnable Disabled
# Define the first user domain entry
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.UserDomain.1.Name domain.local
# Map AD group "iDRAC-ReadOnly" to the domain and assign minimal privileges (0x1 = login only)
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ADGroup.1.Domain domain.local
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ADGroup.1.Name iDRAC-ReadOnly
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ADGroup.1.Privilege 0x1
# Map AD group "iDRAC-Administrator" to the domain and assign full privileges (0x1ff = administrator)
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ADGroup.2.Domain domain.local
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ADGroup.2.Name iDRAC-Administrator
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ADGroup.2.Privilege 0x1ff
# Enable Active Directory authentication on iDRAC
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ActiveDirectory.Enable Enabled
# Set schema type: 2 = Standard Schema (no AD schema extensions)
racadm --nocertwarn -r 192.168.10.1 -u root -p 'pass' set iDRAC.ActiveDirectory.Schema 2
What all those commands do? First of all, let’s explain the parameters used.
- — nocertwarn – suppresses security warnings about invalid/self-signed certificates.
- -r <ip_address> – target iDRAC IP address
- -u <username> -p <password> – credentials for the remote iDRAC.
- To avoid passing credentials in clear text, replace these with -i to enter them interactively after each command.
Step 2. Create Active Directory Groups
In your active directory, create the groups we used in the commands above: iDRAC-ReadOnly and iDRAC-Administrator. Then, add desired users to their corresponding group.
Automating configuration for multiple servers
We now know how to configure Active Directory Authentication on a single Dell iDRAC. But what if you need to configure 20, 30, or even 100 servers? Running the same commands repeatedly would be tedious. The fastest and simplest way is to automate the process with a bash script.
Step 1. Create a the .sh file
Create idrac_config_ad.sh file, either by using command touch, or by editing it with your favorite text editor. I’ll go in this example with vi.
[root@adi-rocky-a01 ~]# vi idrac_config_ad.sh
#!/usr/bin/env bash
# Set credentials and domain
USER="root"
PASS='pass'
DOMAIN="domain.local"
# Loop through IPs listed in idrac_list.txt
while read -r ip; do
[[ -z "$ip" ]] && continue
echo "[$ip] configuring AD"
# Configure Global Catalog
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ActiveDirectory.GCLookupEnable Enabled || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ActiveDirectory.GCRootDomain "$DOMAIN" || true
# Configure Domain Controllers
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ActiveDirectory.DCLookupEnable Enabled || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ActiveDirectory.DCLookupByUserDomain Enabled || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ActiveDirectory.DCLookupDomainName "$DOMAIN" || true
# Disable certificate validation (for self-signed certs)
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ActiveDirectory.CertValidationEnable Disabled || true
# Configure user domain
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.UserDomain.1.Name "$DOMAIN" || true
# Map AD groups and privileges
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ADGroup.1.Domain "$DOMAIN" || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ADGroup.1.Name iDRAC-ReadOnly || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ADGroup.1.Privilege 0x1 || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ADGroup.2.Domain "$DOMAIN" || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ADGroup.2.Name iDRAC-Administrator || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ADGroup.2.Privilege 0x1ff || true
# Enable AD authentication and set schema
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ActiveDirectory.Enable Enabled || true
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" set iDRAC.ActiveDirectory.Schema 2 || true
# Verify configuration
racadm --nocertwarn -r "$ip" -u "$USER" -p "$PASS" get iDRAC.ActiveDirectory | egrep 'Enable=|Schema=|GCRootDomain=|DCLookup|GCLookup' || true
echo "+---------------------------------------------------------+"
done < idrac_list.txt
Replace credentials and domain name with your own.
As you can see, there is a while loop, that reads the IP addresses from the idrac_list.txt file and performs all the required commands. This points us to the next step.
The last command is used just for verifying if the values were set correctly.
Step 2. Create a file containing all iDAC IP addresses
This is a simple step. Just create idrac_list.txt file and fill all your IP addresses, one per line.
[root@adi-rocky-a01 ~]# vi idrac_list.txt
192.168.10.11
192.168.10.12
192.168.10.13
192.168.10.14
192.168.10.15
172.16.15.101
172.16.15.102
172.16.15.103
172.16.15.104
172.16.15.105
Step 3. Change the .sh file to executable
[root@adi-rocky-a01 ~]# chmod +x idrac_config_ad.sh
Step 4. Run the script
Run the script and let the magic happen!
[root@adi-rocky-a01 ~]# ./idrac_config_ad.sh
[192.168.10.11] configuring AD
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#UserDomain.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.2]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.2]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.2]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
CertValidationEnable=Disabled
DCLookupByUserDomain=Enabled
DCLookupDomainName=domain.local
DCLookupEnable=Enabled
Enable=Enabled
GCLookupEnable=Enabled
GCRootDomain=domain.local
Schema=2
SSOEnable=Disabled
+---------------------------------------------------------+
[192.168.10.11] configuring AD
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#UserDomain.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.2]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.2]
Object value modified successfully
[Key=iDRAC.Embedded.1#ADGroup.2]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
[Key=iDRAC.Embedded.1#ActiveDirectory.1]
Object value modified successfully
CertValidationEnable=Disabled
DCLookupByUserDomain=Enabled
DCLookupDomainName=domain.local
DCLookupEnable=Enabled
Enable=Enabled
GCLookupEnable=Enabled
GCRootDomain=domain.local
Schema=2
SSOEnable=Disabled
+---------------------------------------------------------+
[root@adi-rocky-a01 ~]#
💡 Bonus tip! If you are running the script over SSH and expect it to take time, use screen to keep it running even if your session disconnects.
# Start a new screen session
[root@adi-rocky-a01 ~]# screen -S idrac-configure
# You can verify that you are attached to that session
[root@adi-rocky-a01 ~]# screen -ls
There are screens on:
109261.idrac-configure (Attached)
109224.pts-1.adi-rocky-a01 (Detached)
2 Sockets in /run/screen/S-root.
[root@adi-rocky-a01 ~]#
# Now you can run the script. If the session interrupts, the script will continue to run until it finishes.
[root@adi-rocky-a01 ~]# ./idrac_config_ad.sh