70 lines
2.0 KiB
Bash
Executable File
70 lines
2.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -xe # Added -e to stop execution if a command fails
|
|
|
|
|
|
# Defaults
|
|
FIRST_INTERFACE="${1:-enp1s0}"
|
|
|
|
# enentually will be physnet1 in open stack networks
|
|
EXTERNAL_INTERFACE="${2:-enp3s0}"
|
|
|
|
|
|
# this should not be pingable in the installtion
|
|
INTERNAL_IP="${3:-192.168.1.210}"
|
|
|
|
echo "--- Running Pre-flight Checks ---"
|
|
|
|
# 1. Check if the user is root
|
|
if [[ $EUID -ne 0 ]]; then
|
|
echo "ERROR: This script must be run as root (use sudo)."
|
|
exit 1
|
|
fi
|
|
|
|
# 2. Check if the network interfaces actually exist
|
|
for iface in "$FIRST_INTERFACE" "$EXTERNAL_INTERFACE"; do
|
|
if ! ip link show "$iface" > /dev/null 2>&1; then
|
|
echo "ERROR: Interface $iface not found. Check your 'ip link' output."
|
|
# exit 1
|
|
fi
|
|
done
|
|
|
|
# 3. Ensure the VIP is NOT pingable (must be free)
|
|
echo "Checking if VIP $INTERNAL_IP is available..."
|
|
if ping -c 1 -W 1 "$INTERNAL_IP" > /dev/null 2>&1; then
|
|
echo "ERROR: VIP $INTERNAL_IP is already responding to pings!"
|
|
echo "Choose an unused IP in the same subnet as $FIRST_INTERFACE."
|
|
exit 1
|
|
fi
|
|
|
|
# 4. Check for enough RAM (Kolla-Ansible usually needs 8GB+ for All-in-One)
|
|
TOTAL_RAM=$(free -g | awk '/^Mem:/{print $2}')
|
|
if [ "$TOTAL_RAM" -lt 8 ]; then
|
|
echo "WARNING: You only have ${TOTAL_RAM}GB of RAM. OpenStack might be very slow or fail to deploy."
|
|
fi
|
|
|
|
echo "--- Pre-flight Checks Passed! Starting Installation ---"
|
|
|
|
|
|
# 1. Install System Dependencies
|
|
dnf install -y git python3-devel libffi-devel gcc openssl-devel python3-libselinux plocate
|
|
|
|
KOLLA_VENV="/opt/ansible-kolla-venv"
|
|
KOLLA_WORKING="/opt/ansible-kolla"
|
|
|
|
mkdir -p "${KOLLA_VENV}" "${KOLLA_WORKING}" /etc/kolla
|
|
|
|
# 2. Virtual Environment Setup
|
|
python3 -m venv "${KOLLA_VENV}"
|
|
source "${KOLLA_VENV}/bin/activate"
|
|
|
|
pip install -U pip
|
|
pip install git+https://opendev.org/openstack/kolla-ansible@stable/2025.2
|
|
|
|
# 3. Configuration Setup
|
|
cp -r ${KOLLA_VENV}/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
|
|
cd "${KOLLA_WORKING}"
|
|
stat multinode || cp ${KOLLA_VENV}/share/kolla-ansible/ansible/inventory/multinode .
|
|
|
|
set +xe
|