(abra install initiated, fails on missing wget)
This commit is contained in:
39
common.nix
39
common.nix
@@ -148,10 +148,11 @@ isoConfig // {
|
|||||||
];
|
];
|
||||||
|
|
||||||
# Workshop Setup Service - REFACTORED
|
# Workshop Setup Service - REFACTORED
|
||||||
systemd.services.workshop-abra-setup = {
|
systemd.services.workshop-abra-setup = {
|
||||||
wantedBy = [ "multi-user.target" ];
|
wantedBy = [ "multi-user.target" ];
|
||||||
after = [ "network-online.target" "docker.service" "dnsmasq.service" ];
|
after = [ "network-online.target" "docker.service" "dnsmasq.service" ];
|
||||||
wants = [ "network-online.target" ];
|
wants = [ "network-online.target" ];
|
||||||
|
path = with pkgs; [ bash curl dnsutils docker gnugrep shadow coreutils ];
|
||||||
script = ''
|
script = ''
|
||||||
# Wait for network and services
|
# Wait for network and services
|
||||||
echo "Waiting for services to start..."
|
echo "Waiting for services to start..."
|
||||||
@@ -162,6 +163,7 @@ isoConfig // {
|
|||||||
fi
|
fi
|
||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
# Test DNS resolution
|
# Test DNS resolution
|
||||||
for i in {1..20}; do
|
for i in {1..20}; do
|
||||||
if nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then
|
if nslookup test.workshop.local 127.0.0.1 >/dev/null 2>&1; then
|
||||||
@@ -171,6 +173,7 @@ isoConfig // {
|
|||||||
echo "🔄 Waiting for DNS... (attempt $i)"
|
echo "🔄 Waiting for DNS... (attempt $i)"
|
||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
|
|
||||||
# Test Docker
|
# Test Docker
|
||||||
for i in {1..10}; do
|
for i in {1..10}; do
|
||||||
if docker info >/dev/null 2>&1; then
|
if docker info >/dev/null 2>&1; then
|
||||||
@@ -179,11 +182,15 @@ isoConfig // {
|
|||||||
fi
|
fi
|
||||||
sleep 2
|
sleep 2
|
||||||
done
|
done
|
||||||
# Install abra for workshop user
|
|
||||||
|
# Install abra for workshop user (as root, but install to user home)
|
||||||
if [ ! -f /home/workshop/.local/bin/abra ]; then
|
if [ ! -f /home/workshop/.local/bin/abra ]; then
|
||||||
echo "🚀 Installing abra for user workshop..."
|
echo "🚀 Installing abra for user workshop..."
|
||||||
sudo -u workshop bash -c "mkdir -p /home/workshop/.local/bin"
|
mkdir -p /home/workshop/.local/bin
|
||||||
sudo -u workshop bash -c "curl -fsSL https://install.abra.coopcloud.tech | bash"
|
# Download and install as root, but to user directory
|
||||||
|
HOME=/home/workshop curl -fsSL https://install.abra.coopcloud.tech | bash
|
||||||
|
# Fix ownership
|
||||||
|
chown -R workshop:workshop /home/workshop/.local
|
||||||
if [ -f /home/workshop/.local/bin/abra ]; then
|
if [ -f /home/workshop/.local/bin/abra ]; then
|
||||||
echo "✅ abra installed successfully."
|
echo "✅ abra installed successfully."
|
||||||
else
|
else
|
||||||
@@ -192,6 +199,7 @@ isoConfig // {
|
|||||||
else
|
else
|
||||||
echo "✅ abra already installed."
|
echo "✅ abra already installed."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Initialize Docker Swarm
|
# Initialize Docker Swarm
|
||||||
echo "🔄 Checking Docker Swarm status..."
|
echo "🔄 Checking Docker Swarm status..."
|
||||||
if ! docker info | grep -q "Swarm: active"; then
|
if ! docker info | grep -q "Swarm: active"; then
|
||||||
@@ -205,7 +213,8 @@ isoConfig // {
|
|||||||
else
|
else
|
||||||
echo "✅ Docker Swarm already active."
|
echo "✅ Docker Swarm already active."
|
||||||
fi
|
fi
|
||||||
# Ensure workshop user is in docker group
|
|
||||||
|
# Ensure workshop user is in docker group (we are root, can use usermod directly)
|
||||||
echo "🔄 Ensuring workshop user is in docker group..."
|
echo "🔄 Ensuring workshop user is in docker group..."
|
||||||
usermod -aG docker workshop
|
usermod -aG docker workshop
|
||||||
if id -nG workshop | grep -q "docker"; then
|
if id -nG workshop | grep -q "docker"; then
|
||||||
@@ -213,15 +222,15 @@ isoConfig // {
|
|||||||
else
|
else
|
||||||
echo "❌ Failed to add workshop user to docker group."
|
echo "❌ Failed to add workshop user to docker group."
|
||||||
fi
|
fi
|
||||||
# Set up autocomplete
|
|
||||||
if command -v abra &> /dev/null; then
|
# Set up autocomplete (skip this for now since we can't run as user easily)
|
||||||
sudo -u workshop bash -c "source <(/home/workshop/.local/bin/abra autocomplete bash)"
|
# The bash init script will handle abra autocomplete on login
|
||||||
fi
|
|
||||||
# Test final DNS resolution
|
# Test final DNS resolution
|
||||||
if nslookup test.workshop.local 127.0.0.1; then
|
if nslookup test.workshop.local 127.0.0.1; then
|
||||||
echo "🎉 All services ready!"
|
echo "🎉 All services ready!"
|
||||||
else
|
else
|
||||||
echo "⚠️ DNS may need manual restart: sudo systemctl restart dnsmasq"
|
echo "⚠️ DNS may need manual restart: systemctl restart dnsmasq"
|
||||||
fi
|
fi
|
||||||
'';
|
'';
|
||||||
serviceConfig = {
|
serviceConfig = {
|
||||||
@@ -435,12 +444,14 @@ isoConfig // {
|
|||||||
}
|
}
|
||||||
|
|
||||||
abra-status() {
|
abra-status() {
|
||||||
echo "🔍 Workshop setup service status:"
|
systemctl status workshop-abra-setup
|
||||||
systemctl status workshop-abra-setup --no-pager
|
|
||||||
echo ""
|
|
||||||
echo "💡 Commands: which abra | abra --version"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
abra-logs() {
|
||||||
|
journalctl -u workshop-abra-setup -f
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
help() {
|
help() {
|
||||||
echo "🚀 CODE CRISPIES Workshop Commands:"
|
echo "🚀 CODE CRISPIES Workshop Commands:"
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
Reference in New Issue
Block a user