add new installer for alpha
This commit is contained in:
223
installer/alpha/scripts/dependencies.sh
Executable file
223
installer/alpha/scripts/dependencies.sh
Executable file
@@ -0,0 +1,223 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# System dependencies installation
|
||||
#
|
||||
|
||||
install_system_dependencies() {
|
||||
log_info "Installing system dependencies..."
|
||||
|
||||
# Update package lists
|
||||
log_info "Updating package lists..."
|
||||
apt-get update -qq
|
||||
|
||||
# Install base tools
|
||||
log_info "Installing base build tools..."
|
||||
apt-get install -y \
|
||||
build-essential \
|
||||
curl \
|
||||
wget \
|
||||
git \
|
||||
ca-certificates \
|
||||
gnupg \
|
||||
lsb-release \
|
||||
jq \
|
||||
uuid-runtime \
|
||||
net-tools \
|
||||
iproute2 \
|
||||
systemd \
|
||||
chrony \
|
||||
ufw \
|
||||
sudo
|
||||
|
||||
# Install Go
|
||||
install_go
|
||||
|
||||
# Install Node.js
|
||||
install_nodejs
|
||||
|
||||
# Install PostgreSQL
|
||||
install_postgresql
|
||||
|
||||
# Install storage tools
|
||||
install_storage_tools
|
||||
|
||||
# Install tape tools
|
||||
install_tape_tools
|
||||
|
||||
# Install SCST prerequisites
|
||||
install_scst_prerequisites
|
||||
|
||||
# Install file sharing services
|
||||
install_file_sharing_services
|
||||
|
||||
# Install antivirus
|
||||
install_antivirus
|
||||
|
||||
log_info "✓ System dependencies installed"
|
||||
}
|
||||
|
||||
install_go() {
|
||||
if command_exists go; then
|
||||
local installed_ver=$(get_installed_version go)
|
||||
log_info "Go already installed: $installed_ver"
|
||||
return 0
|
||||
fi
|
||||
|
||||
log_info "Installing Go 1.22..."
|
||||
local GO_VERSION="1.22.0"
|
||||
local GO_ARCH="linux-amd64"
|
||||
|
||||
cd /tmp
|
||||
wget -q "https://go.dev/dl/go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||
rm -rf /usr/local/go
|
||||
tar -C /usr/local -xzf "go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||
rm "go${GO_VERSION}.${GO_ARCH}.tar.gz"
|
||||
|
||||
# Add to PATH
|
||||
if ! grep -q "/usr/local/go/bin" /etc/profile; then
|
||||
echo 'export PATH=$PATH:/usr/local/go/bin' >> /etc/profile
|
||||
fi
|
||||
export PATH=$PATH:/usr/local/go/bin
|
||||
|
||||
log_info "✓ Go installed"
|
||||
}
|
||||
|
||||
install_nodejs() {
|
||||
if command_exists node; then
|
||||
local installed_ver=$(get_installed_version node)
|
||||
log_info "Node.js already installed: $installed_ver"
|
||||
return 0
|
||||
fi
|
||||
|
||||
log_info "Installing Node.js 20.x LTS..."
|
||||
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
|
||||
apt-get install -y nodejs
|
||||
|
||||
# Install pnpm
|
||||
if ! command_exists pnpm; then
|
||||
npm install -g pnpm
|
||||
fi
|
||||
|
||||
log_info "✓ Node.js and pnpm installed"
|
||||
}
|
||||
|
||||
install_postgresql() {
|
||||
if command_exists psql; then
|
||||
local installed_ver=$(get_installed_version psql)
|
||||
log_info "PostgreSQL already installed: $installed_ver"
|
||||
systemctl start postgresql || true
|
||||
return 0
|
||||
fi
|
||||
|
||||
log_info "Installing PostgreSQL..."
|
||||
apt-get install -y \
|
||||
postgresql \
|
||||
postgresql-contrib \
|
||||
libpq-dev
|
||||
|
||||
systemctl enable postgresql
|
||||
systemctl start postgresql
|
||||
|
||||
wait_for_service postgresql
|
||||
|
||||
log_info "✓ PostgreSQL installed and started"
|
||||
}
|
||||
|
||||
install_storage_tools() {
|
||||
log_info "Installing storage tools..."
|
||||
apt-get install -y \
|
||||
lvm2 \
|
||||
xfsprogs \
|
||||
thin-provisioning-tools \
|
||||
smartmontools \
|
||||
nvme-cli \
|
||||
parted \
|
||||
gdisk
|
||||
|
||||
log_info "✓ Storage tools installed"
|
||||
}
|
||||
|
||||
install_tape_tools() {
|
||||
log_info "Installing tape tools..."
|
||||
apt-get install -y \
|
||||
lsscsi \
|
||||
sg3-utils \
|
||||
mt-st \
|
||||
mtx
|
||||
|
||||
log_info "✓ Tape tools installed"
|
||||
}
|
||||
|
||||
install_scst_prerequisites() {
|
||||
log_info "Installing SCST prerequisites..."
|
||||
apt-get install -y \
|
||||
dkms \
|
||||
linux-headers-$(uname -r) \
|
||||
build-essential
|
||||
|
||||
log_info "✓ SCST prerequisites installed"
|
||||
}
|
||||
|
||||
install_file_sharing_services() {
|
||||
log_info "Installing file sharing services (NFS and SMB)..."
|
||||
|
||||
# Install NFS server
|
||||
if ! systemctl is-active --quiet nfs-server 2>/dev/null; then
|
||||
log_info "Installing NFS server..."
|
||||
apt-get install -y \
|
||||
nfs-kernel-server \
|
||||
nfs-common
|
||||
|
||||
# Enable NFS services
|
||||
systemctl enable nfs-server || true
|
||||
systemctl enable rpcbind || true
|
||||
|
||||
log_info "✓ NFS server installed"
|
||||
else
|
||||
log_info "NFS server already installed"
|
||||
fi
|
||||
|
||||
# Install Samba (SMB/CIFS)
|
||||
if ! systemctl is-active --quiet smbd 2>/dev/null; then
|
||||
log_info "Installing Samba (SMB/CIFS)..."
|
||||
apt-get install -y \
|
||||
samba \
|
||||
samba-common-bin
|
||||
|
||||
# Enable Samba services
|
||||
systemctl enable smbd || true
|
||||
systemctl enable nmbd || true
|
||||
|
||||
log_info "✓ Samba installed"
|
||||
else
|
||||
log_info "Samba already installed"
|
||||
fi
|
||||
}
|
||||
|
||||
install_antivirus() {
|
||||
log_info "Installing ClamAV antivirus..."
|
||||
|
||||
if ! command_exists clamscan; then
|
||||
apt-get install -y \
|
||||
clamav \
|
||||
clamav-daemon \
|
||||
clamav-freshclam \
|
||||
clamav-unofficial-sigs || {
|
||||
log_warn "ClamAV installation failed"
|
||||
return 1
|
||||
}
|
||||
|
||||
# Update virus definitions
|
||||
log_info "Updating ClamAV virus definitions (this may take a while)..."
|
||||
freshclam || log_warn "Virus definition update failed, will update on first service start"
|
||||
|
||||
# Enable ClamAV daemon
|
||||
systemctl enable clamav-daemon || true
|
||||
systemctl enable clamav-freshclam || true
|
||||
|
||||
log_info "✓ ClamAV installed"
|
||||
else
|
||||
log_info "ClamAV already installed"
|
||||
fi
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user