51 lines
1.7 KiB
Bash
51 lines
1.7 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
echo "Installing Infrastructure Controller..."
|
|
|
|
python_version=$(python3 --version | awk '{print $2}')
|
|
required_version="3.11"
|
|
|
|
if [ "$(printf '%s\n' "$required_version" "$python_version" | sort -V | head -n1)" != "$required_version" ]; then
|
|
echo "Error: Python 3.11+ required, found $python_version"
|
|
exit 1
|
|
fi
|
|
|
|
if ! id infractl >/dev/null 2>&1; then
|
|
echo "Creating infractl user..."
|
|
sudo useradd -r -s /bin/false -d /opt/infra-controller infractl
|
|
fi
|
|
|
|
sudo mkdir -p /opt/infra-controller
|
|
sudo mkdir -p /etc/infra-controller
|
|
sudo mkdir -p /var/lib/infra-controller
|
|
sudo mkdir -p /var/log/infra-controller
|
|
|
|
echo "Installing Python package..."
|
|
sudo python3 -m venv /opt/infra-controller/venv
|
|
sudo /opt/infra-controller/venv/bin/pip install --upgrade pip
|
|
sudo /opt/infra-controller/venv/bin/pip install -e .
|
|
|
|
if [ ! -f /etc/infra-controller/config.toml ]; then
|
|
echo "Installing default configuration..."
|
|
sudo cp config/controller.toml.example /etc/infra-controller/config.toml
|
|
fi
|
|
|
|
if [ ! -f /etc/infra-controller/controller.env ]; then
|
|
sudo cp systemd/infra-controller.env /etc/infra-controller/controller.env
|
|
fi
|
|
|
|
echo "Installing systemd service..."
|
|
sudo cp systemd/infra-controller.service /etc/systemd/system/
|
|
sudo cp systemd/infra-controller-once.service /etc/systemd/system/
|
|
sudo cp systemd/infra-controller-watch.service /etc/systemd/system/
|
|
sudo systemctl daemon-reload
|
|
|
|
echo "Enabling infra-controller watch service..."
|
|
sudo systemctl enable infra-controller-watch.service
|
|
|
|
sudo chown -R infractl:infractl /opt/infra-controller
|
|
sudo chown -R infractl:infractl /var/lib/infra-controller
|
|
sudo chown -R infractl:infractl /var/log/infra-controller
|
|
|
|
echo "Installation complete!"
|