Add various scripts for MinIO and Restic backup management
This commit is contained in:
74
scripts/kvm-bridge-setup.sh
Executable file
74
scripts/kvm-bridge-setup.sh
Executable file
@@ -0,0 +1,74 @@
|
||||
#!/bin/bash
|
||||
# configure-bridge.sh
|
||||
# This script configures a network bridge interface for KVM on Arch Linux
|
||||
# using systemd-networkd. It creates configuration files for:
|
||||
# - the bridge interface (default: br0)
|
||||
# - the physical interface to be enslaved to the bridge
|
||||
#
|
||||
# Usage:
|
||||
# sudo ./configure-bridge.sh <physical_interface> [bridge_name]
|
||||
#
|
||||
# Example:
|
||||
# sudo ./configure-bridge.sh enp2s0 br0
|
||||
#
|
||||
# Reference: Arch Linux Wiki, "Bridge networking" https://wiki.archlinux.org/title/Bridge_networking
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "$#" -lt 1 ]; then
|
||||
echo "Usage: $0 <physical_interface> [bridge_name]"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
PHYS_IF="$1"
|
||||
BRIDGE_IF="${2:-br0}"
|
||||
|
||||
NETWORK_DIR="/etc/systemd/network"
|
||||
if [ ! -d "$NETWORK_DIR" ]; then
|
||||
echo "Directory $NETWORK_DIR does not exist. Please ensure systemd-networkd is installed."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "Configuring bridge interface '${BRIDGE_IF}' for physical interface '${PHYS_IF}'..."
|
||||
|
||||
# Create the .netdev file for the bridge
|
||||
BRIDGE_NETDEV_FILE="${NETWORK_DIR}/25-${BRIDGE_IF}.netdev"
|
||||
cat > "$BRIDGE_NETDEV_FILE" <<EOF
|
||||
[NetDev]
|
||||
Name=${BRIDGE_IF}
|
||||
Kind=bridge
|
||||
EOF
|
||||
echo "Created ${BRIDGE_NETDEV_FILE}"
|
||||
|
||||
# Create the .network file for the bridge (using DHCP)
|
||||
BRIDGE_NETWORK_FILE="${NETWORK_DIR}/30-${BRIDGE_IF}.network"
|
||||
cat > "$BRIDGE_NETWORK_FILE" <<EOF
|
||||
[Match]
|
||||
Name=${BRIDGE_IF}
|
||||
|
||||
[Network]
|
||||
DHCP=yes
|
||||
EOF
|
||||
echo "Created ${BRIDGE_NETWORK_FILE}"
|
||||
|
||||
# Create the .network file for the physical interface to attach it to the bridge
|
||||
PHYS_NETWORK_FILE="${NETWORK_DIR}/20-${PHYS_IF}.network"
|
||||
cat > "$PHYS_NETWORK_FILE" <<EOF
|
||||
[Match]
|
||||
Name=${PHYS_IF}
|
||||
|
||||
[Network]
|
||||
Bridge=${BRIDGE_IF}
|
||||
EOF
|
||||
echo "Created ${PHYS_NETWORK_FILE}"
|
||||
|
||||
echo "Restarting systemd-networkd to apply changes..."
|
||||
systemctl restart systemd-networkd
|
||||
|
||||
echo "Bridge configuration complete. The bridge '${BRIDGE_IF}' should now be up."
|
||||
echo "You can check the status with: networkctl status ${BRIDGE_IF}"
|
||||
Reference in New Issue
Block a user