Skip to content

Instantly share code, notes, and snippets.

@jlengelbrecht
Last active June 2, 2025 07:35
Show Gist options
  • Select an option

  • Save jlengelbrecht/380df457eaf5321e217c5515a08d00d5 to your computer and use it in GitHub Desktop.

Select an option

Save jlengelbrecht/380df457eaf5321e217c5515a08d00d5 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
# ---------------------------------------------------------------------------
# install-ism54_pve.sh – RACADM 11.0 + iSM 5.4.0.0 for Proxmox 8 (root only)
# ---------------------------------------------------------------------------
set -euo pipefail
# --------------------------- CONSTANTS -------------------------------------
DELL_KEY_URL=https://linux.dell.com/repo/pgp_pubkeys/0x1285491434D8786F.asc
OPENMANAGE_REPO=http://linux.dell.com/repo/community/openmanage/11000/jammy
ISM_REPO=http://linux.dell.com/repo/community/openmanage/iSM/5400/bullseye
BULLSEYE_BASE=http://deb.debian.org/debian
BULLSEYE_SEC=http://security.debian.org/debian-security
EXTRA_PKGS=(usbutils curl libcurl4 libssh2-1 openssl ca-certificates)
ISM_PKGS=(dcism dcism-osc)
RACADM_PKG=srvadmin-idracadm8
GPG_DIR=/etc/apt/trusted.gpg.d
SRC_DIR=/etc/apt/sources.list.d
PIN_DIR=/etc/apt/preferences.d
DELL_KEY=${GPG_DIR}/dell-apt-key.gpg
# --------------------------- HELPERS ---------------------------------------
log() { printf '\e[1;34m[+] %s\e[0m\n' "$*"; }
warn() { printf '\e[1;33m[!] %s\e[0m\n' "$*"; }
die() { printf '\e[1;31m[x] %s\e[0m\n' "$*" >&2; exit 1; }
tee_cfg() { tee "$1" >/dev/null; }
# --------------------------- 1. Dell key -----------------------------------
log "Importing Dell GPG key"
mkdir -p "$GPG_DIR"
curl -fsSL "$DELL_KEY_URL" | gpg --dearmor -o "$DELL_KEY"
# --------------------------- 2. Repos --------------------------------------
log "Adding APT sources"
tee_cfg "${SRC_DIR}/dell-openmanage.list" <<EOF
deb [signed-by=${DELL_KEY}] ${OPENMANAGE_REPO} jammy main
EOF
tee_cfg "${SRC_DIR}/dell-ism.list" <<EOF
deb [signed-by=${DELL_KEY}] ${ISM_REPO} bullseye main
EOF
tee_cfg "${SRC_DIR}/debian-bullseye.list" <<EOF
deb ${BULLSEYE_BASE} bullseye main
deb ${BULLSEYE_SEC} bullseye-security main
EOF
# --------------------------- 3. Pinning ------------------------------------
log "Setting APT pin priorities"
tee_cfg "${PIN_DIR}/00-ism-block-all.pref" <<'EOF'
Package: *
Pin: release n=bullseye
Pin-Priority: -1
EOF
tee_cfg "${PIN_DIR}/01-ism-allow.pref" <<'EOF'
Package: libssl1.1 dcism dcism-osc ismcore ismconfig
Pin: release n=bullseye
Pin-Priority: 501
EOF
# --------------------------- 4. Install ------------------------------------
log "apt update"
apt-get update -qq
log "Installing libssl1.1"
apt-get install -y -t bullseye libssl1.1
log "Installing runtime dependencies"
apt-get install -y "${EXTRA_PKGS[@]}"
log "Installing iSM 5.4 and RACADM"
apt-get install -y -t bullseye "${ISM_PKGS[@]}"
apt-get install -y "${RACADM_PKG}"
# --------------------------- 5. Service enable -----------------------------
log "Enabling & starting iSM services"
systemctl daemon-reload
for svc in dcismeng dcismcomponents dcismetl; do
if systemctl list-unit-files | grep -q "^${svc}.service"; then
systemctl enable --now "${svc}.service"
fi
done
# --------------------------- 6. Hold libssl1.1 -----------------------------
if ! dpkg --get-selections | grep -qE '^libssl1.1\s+hold'; then
log "Holding libssl1.1 to prevent accidental removal"
apt-mark hold libssl1.1
fi
# --------------------------- 7. Verify -------------------------------------
sleep 5 # give engine a moment
ISMCLI=/opt/dell/srvadmin/iSM/bin/dcismcfg
if $ISMCLI --getismstatus 2>/dev/null | grep -q "service is running and connected"; then
log "iSM is running and connected ✔"
exit 0
else
systemctl status dcismeng --no-pager
$ISMCLI --getismstatus || true
die "iSM did not start correctly"
fi
@jlengelbrecht
Copy link
Author

jlengelbrecht commented Apr 25, 2025

This script will install IDSM 5.4.0.0 on proxmox 8.X it has been tested against Dell R740xd servers. I am not sure if it can be repurposed to work with other dell servers. Installing on anything but a dell R740 or R740xd will require testing.
To install run the following in a root shell on your proxmox server.

curl -sSL https://gist.githubusercontent.com/jlengelbrecht/380df457eaf5321e217c5515a08d00d5/raw/install-ism54_hold.sh \
  | sudo bash

@CaptnDc
Copy link

CaptnDc commented Jun 2, 2025

It works on the Dell T440 but did not automatically start the service, so I did: systemctl start dcismeng.service and it works with no problem! 10/10

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment