Files
calypso/installer/alpha/scripts/components.sh
2026-01-04 15:39:19 +07:00

111 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
#
# Component installation (ZFS, SCST, MHVTL, Bacula)
#
install_zfs() {
if command_exists zpool && command_exists zfs; then
log_info "ZFS already installed"
return 0
fi
log_info "Installing ZFS..."
# Check if ZFS module is loaded
if lsmod | grep -q zfs; then
log_info "ZFS kernel module already loaded"
return 0
fi
# Install ZFS
apt-get install -y \
zfsutils-linux \
zfs-dkms || {
log_warn "ZFS installation failed. You may need to install manually."
return 1
}
# Load ZFS module
modprobe zfs || true
log_info "✓ ZFS installed"
return 0
}
install_scst() {
if [[ -f /etc/scst.conf ]] || lsmod | grep -q scst; then
log_info "SCST appears to be installed"
return 0
fi
log_info "Installing SCST..."
log_warn "SCST requires building from source. This may take a while..."
# Check if SCST source is available
if [[ -d "$PROJECT_ROOT/src/scst" ]] || [[ -d "/usr/src/scst" ]]; then
log_info "SCST source found, building..."
# SCST build would go here
# This is a placeholder - actual SCST installation is complex
log_warn "SCST installation requires manual steps. See documentation."
return 1
else
log_warn "SCST source not found. Please install SCST manually."
log_info "See: docs/on-progress/scst-installation.md"
return 1
fi
}
install_mhvtl() {
if command_exists vtlcmd || systemctl is-active --quiet mhvtl 2>/dev/null; then
log_info "MHVTL already installed"
return 0
fi
log_info "Installing MHVTL..."
# Install MHVTL from package or source
if apt-cache show mhvtl &>/dev/null; then
apt-get install -y mhvtl mhvtl-utils || {
log_warn "MHVTL package installation failed"
return 1
}
else
log_warn "MHVTL package not available. Building from source..."
# MHVTL build from source would go here
log_warn "MHVTL installation requires manual steps. See documentation."
return 1
fi
# Enable and start MHVTL service
systemctl enable mhvtl || true
systemctl start mhvtl || true
log_info "✓ MHVTL installed"
return 0
}
install_bacula() {
log_info "Installing Bacula (optional)..."
# Check if Bacula is already installed
if command_exists bconsole || systemctl is-active --quiet bacula-sd 2>/dev/null; then
log_info "Bacula already installed"
return 0
fi
# Install Bacula packages
apt-get install -y \
bacula-common \
bacula-sd \
bacula-client \
bacula-console || {
log_warn "Bacula installation failed or packages not available"
log_info "Bacula can be installed separately if needed"
return 1
}
log_info "✓ Bacula installed (configuration required separately)"
return 0
}