mirror of
https://github.com/Security-Onion-Solutions/securityonion.git
synced 2025-12-06 17:22:49 +01:00
handle mounting vdb as nsm when nsm set in soc grid config
This commit is contained in:
@@ -4,10 +4,17 @@
|
|||||||
# Elastic License 2.0.
|
# Elastic License 2.0.
|
||||||
|
|
||||||
|
|
||||||
{% set nvme_devices = salt['cmd.shell']("find /dev -name 'nvme*n1' 2>/dev/null") %}
|
{% set nvme_devices = salt['cmd.shell']("ls /dev/nvme*n1 2>/dev/null || echo ''") %}
|
||||||
|
{% set virtio_devices = salt['cmd.shell']("test -b /dev/vdb && echo '/dev/vdb' || echo ''") %}
|
||||||
|
|
||||||
{% if nvme_devices %}
|
{% if nvme_devices %}
|
||||||
|
|
||||||
include:
|
include:
|
||||||
- storage.nsm_mount
|
- storage.nsm_mount_nvme
|
||||||
|
|
||||||
|
{% elif virtio_devices %}
|
||||||
|
|
||||||
|
include:
|
||||||
|
- storage.nsm_mount_virtio
|
||||||
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|||||||
@@ -22,8 +22,8 @@ storage_nsm_mount_logdir:
|
|||||||
# Install the NSM mount script
|
# Install the NSM mount script
|
||||||
storage_nsm_mount_script:
|
storage_nsm_mount_script:
|
||||||
file.managed:
|
file.managed:
|
||||||
- name: /usr/sbin/so-nsm-mount
|
- name: /usr/sbin/so-nsm-mount-nvme
|
||||||
- source: salt://storage/tools/sbin/so-nsm-mount
|
- source: salt://storage/tools/sbin/so-nsm-mount-nvme
|
||||||
- mode: 755
|
- mode: 755
|
||||||
- user: root
|
- user: root
|
||||||
- group: root
|
- group: root
|
||||||
@@ -34,7 +34,7 @@ storage_nsm_mount_script:
|
|||||||
# Execute the mount script if not already mounted
|
# Execute the mount script if not already mounted
|
||||||
storage_nsm_mount_execute:
|
storage_nsm_mount_execute:
|
||||||
cmd.run:
|
cmd.run:
|
||||||
- name: /usr/sbin/so-nsm-mount
|
- name: /usr/sbin/so-nsm-mount-nvme
|
||||||
- unless: mountpoint -q /nsm
|
- unless: mountpoint -q /nsm
|
||||||
- require:
|
- require:
|
||||||
- file: storage_nsm_mount_script
|
- file: storage_nsm_mount_script
|
||||||
39
salt/storage/nsm_mount_virtio.sls
Normal file
39
salt/storage/nsm_mount_virtio.sls
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
|
||||||
|
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
|
||||||
|
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||||
|
# Elastic License 2.0.
|
||||||
|
|
||||||
|
# Install required packages
|
||||||
|
storage_nsm_mount_virtio_packages:
|
||||||
|
pkg.installed:
|
||||||
|
- pkgs:
|
||||||
|
- xfsprogs
|
||||||
|
|
||||||
|
# Ensure log directory exists
|
||||||
|
storage_nsm_mount_virtio_logdir:
|
||||||
|
file.directory:
|
||||||
|
- name: /opt/so/log
|
||||||
|
- makedirs: True
|
||||||
|
- user: root
|
||||||
|
- group: root
|
||||||
|
- mode: 755
|
||||||
|
|
||||||
|
# Install the NSM mount script
|
||||||
|
storage_nsm_mount_virtio_script:
|
||||||
|
file.managed:
|
||||||
|
- name: /usr/sbin/so-nsm-mount-virtio
|
||||||
|
- source: salt://storage/tools/sbin/so-nsm-mount-virtio
|
||||||
|
- mode: 755
|
||||||
|
- user: root
|
||||||
|
- group: root
|
||||||
|
- require:
|
||||||
|
- pkg: storage_nsm_mount_virtio_packages
|
||||||
|
- file: storage_nsm_mount_virtio_logdir
|
||||||
|
|
||||||
|
# Execute the mount script if not already mounted
|
||||||
|
storage_nsm_mount_virtio_execute:
|
||||||
|
cmd.run:
|
||||||
|
- name: /usr/sbin/so-nsm-mount-virtio
|
||||||
|
- unless: mountpoint -q /nsm
|
||||||
|
- require:
|
||||||
|
- file: storage_nsm_mount_virtio_script
|
||||||
@@ -81,7 +81,7 @@
|
|||||||
|
|
||||||
set -e
|
set -e
|
||||||
|
|
||||||
LOG_FILE="/opt/so/log/so-nsm-mount.log"
|
LOG_FILE="/opt/so/log/so-nsm-mount-nvme.log"
|
||||||
VG_NAME=""
|
VG_NAME=""
|
||||||
LV_NAME="nsm"
|
LV_NAME="nsm"
|
||||||
MOUNT_POINT="/nsm"
|
MOUNT_POINT="/nsm"
|
||||||
171
salt/storage/tools/sbin/so-nsm-mount-virtio
Normal file
171
salt/storage/tools/sbin/so-nsm-mount-virtio
Normal file
@@ -0,0 +1,171 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Copyright Security Onion Solutions LLC and/or licensed to Security Onion Solutions LLC under one
|
||||||
|
# or more contributor license agreements. Licensed under the Elastic License 2.0 as shown at
|
||||||
|
# https://securityonion.net/license; you may not use this file except in compliance with the
|
||||||
|
# Elastic License 2.0.
|
||||||
|
|
||||||
|
# Usage:
|
||||||
|
# so-nsm-mount-virtio
|
||||||
|
#
|
||||||
|
# Options:
|
||||||
|
# None - script automatically configures /dev/vdb
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
# 1. Configure and mount virtio-blk device:
|
||||||
|
# ```bash
|
||||||
|
# sudo so-nsm-mount-virtio
|
||||||
|
# ```
|
||||||
|
#
|
||||||
|
# Notes:
|
||||||
|
# - Requires root privileges
|
||||||
|
# - Mounts /dev/vdb as /nsm
|
||||||
|
# - Creates XFS filesystem if needed
|
||||||
|
# - Configures persistent mount via /etc/fstab
|
||||||
|
# - Safe to run multiple times
|
||||||
|
#
|
||||||
|
# Description:
|
||||||
|
# This script automates the configuration and mounting of virtio-blk devices
|
||||||
|
# as /nsm in Security Onion virtual machines. It performs these steps:
|
||||||
|
#
|
||||||
|
# Dependencies:
|
||||||
|
# - xfsprogs: Required for XFS filesystem operations
|
||||||
|
#
|
||||||
|
# 1. Safety Checks:
|
||||||
|
# - Verifies root privileges
|
||||||
|
# - Checks if /nsm is already mounted
|
||||||
|
# - Verifies /dev/vdb exists
|
||||||
|
#
|
||||||
|
# 2. Filesystem Creation:
|
||||||
|
# - Creates XFS filesystem on /dev/vdb if not already formatted
|
||||||
|
#
|
||||||
|
# 3. Mount Configuration:
|
||||||
|
# - Creates /nsm directory if needed
|
||||||
|
# - Adds entry to /etc/fstab for persistence
|
||||||
|
# - Mounts the filesystem as /nsm
|
||||||
|
#
|
||||||
|
# Exit Codes:
|
||||||
|
# 0: Success conditions:
|
||||||
|
# - Device configured and mounted
|
||||||
|
# - Already properly mounted
|
||||||
|
# 1: Error conditions:
|
||||||
|
# - Must be run as root
|
||||||
|
# - Device /dev/vdb not found
|
||||||
|
# - Filesystem creation failed
|
||||||
|
# - Mount operation failed
|
||||||
|
#
|
||||||
|
# Logging:
|
||||||
|
# - All operations logged to /opt/so/log/so-nsm-mount-virtio.log
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
LOG_FILE="/opt/so/log/so-nsm-mount-virtio.log"
|
||||||
|
DEVICE="/dev/vdb"
|
||||||
|
MOUNT_POINT="/nsm"
|
||||||
|
|
||||||
|
# Function to log messages
|
||||||
|
log() {
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') $1" | tee -a "$LOG_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to log errors
|
||||||
|
log_error() {
|
||||||
|
echo "$(date '+%Y-%m-%d %H:%M:%S') ERROR: $1" | tee -a "$LOG_FILE" >&2
|
||||||
|
}
|
||||||
|
|
||||||
|
# Function to check if running as root
|
||||||
|
check_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
log_error "Must be run as root"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Main execution
|
||||||
|
main() {
|
||||||
|
log "=========================================="
|
||||||
|
log "Starting virtio-blk NSM mount process"
|
||||||
|
log "=========================================="
|
||||||
|
|
||||||
|
# Check root privileges
|
||||||
|
check_root
|
||||||
|
|
||||||
|
# Check if already mounted
|
||||||
|
if mountpoint -q "$MOUNT_POINT"; then
|
||||||
|
log "$MOUNT_POINT is already mounted"
|
||||||
|
log "=========================================="
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if device exists
|
||||||
|
if [ ! -b "$DEVICE" ]; then
|
||||||
|
log_error "Device $DEVICE not found"
|
||||||
|
log "=========================================="
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "Found device: $DEVICE"
|
||||||
|
|
||||||
|
# Get device size
|
||||||
|
local size=$(lsblk -dbn -o SIZE "$DEVICE" 2>/dev/null | numfmt --to=iec)
|
||||||
|
log "Device size: $size"
|
||||||
|
|
||||||
|
# Check if device has filesystem
|
||||||
|
if ! blkid "$DEVICE" | grep -q 'TYPE="xfs"'; then
|
||||||
|
log "Creating XFS filesystem on $DEVICE"
|
||||||
|
if ! mkfs.xfs -f "$DEVICE" 2>&1 | tee -a "$LOG_FILE"; then
|
||||||
|
log_error "Failed to create filesystem"
|
||||||
|
log "=========================================="
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
log "Filesystem created successfully"
|
||||||
|
else
|
||||||
|
log "Device already has XFS filesystem"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create mount point
|
||||||
|
if [ ! -d "$MOUNT_POINT" ]; then
|
||||||
|
log "Creating mount point $MOUNT_POINT"
|
||||||
|
mkdir -p "$MOUNT_POINT"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Add to fstab if not present
|
||||||
|
if ! grep -q "$DEVICE.*$MOUNT_POINT" /etc/fstab; then
|
||||||
|
log "Adding entry to /etc/fstab"
|
||||||
|
echo "$DEVICE $MOUNT_POINT xfs defaults 0 0" >> /etc/fstab
|
||||||
|
log "Entry added to /etc/fstab"
|
||||||
|
else
|
||||||
|
log "Entry already exists in /etc/fstab"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Mount the filesystem
|
||||||
|
log "Mounting $DEVICE to $MOUNT_POINT"
|
||||||
|
if mount "$MOUNT_POINT" 2>&1 | tee -a "$LOG_FILE"; then
|
||||||
|
log "Successfully mounted $DEVICE to $MOUNT_POINT"
|
||||||
|
|
||||||
|
# Verify mount
|
||||||
|
if mountpoint -q "$MOUNT_POINT"; then
|
||||||
|
log "Mount verified successfully"
|
||||||
|
|
||||||
|
# Display mount information
|
||||||
|
log "Mount details:"
|
||||||
|
df -h "$MOUNT_POINT" | tail -n 1 | tee -a "$LOG_FILE"
|
||||||
|
else
|
||||||
|
log_error "Mount verification failed"
|
||||||
|
log "=========================================="
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
log_error "Failed to mount $DEVICE"
|
||||||
|
log "=========================================="
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
log "=========================================="
|
||||||
|
log "Virtio-blk NSM mount process completed successfully"
|
||||||
|
log "=========================================="
|
||||||
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run main function
|
||||||
|
main
|
||||||
Reference in New Issue
Block a user