aipackage/autoinstall/user-data
2026-06-24 21:03:16 +05:30

105 lines
3.5 KiB
Plaintext

#cloud-config
autoinstall:
version: 1
interactive-sections:
- network
# ── Locale & keyboard ──────────────────────────
locale: en_IN.UTF-8
keyboard:
layout: us
# ── Network: stop on installer network screen ─
# Subiquity will show the network UI and use the values below as defaults.
# This lets the operator set the final static IP from the VM console before
# installation completes.
network:
network:
version: 2
ethernets:
any-en:
dhcp4: true
match:
name: "en*"
any-eth:
dhcp4: true
match:
name: "eth*"
# ── Storage: LVM using ALL disk space ─────────
storage:
layout:
name: lvm
match:
size: largest
# ── Identity ──────────────────────────────────
identity:
hostname: aiserver
username: cezen
# Password: cezen@123
password: "$6$I5VA.42G1xTeVhCv$KCLzqIKg/kbNHZyiTEMAY4FZsJMDDwoS90k6Ffb9VEwmcK.wuzlJNe3ceiEfLrzYzXEvqjYsLc7klAbeGPGab."
# ── SSH ───────────────────────────────────────
ssh:
install-server: true
allow-pw: true
# ── Base packages ─────────────────────────────
packages:
- git
- curl
- wget
- python3
- avahi-daemon
# ── Late commands ─────────────────────────────
late-commands:
# Extend LVM to use 100% of available disk space
- lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv || true
- resize2fs /dev/ubuntu-vg/ubuntu-lv || true
# Allow cezen passwordless sudo (needed for install.sh)
- echo "cezen ALL=(ALL) NOPASSWD:ALL" > /target/etc/sudoers.d/cezen
- chmod 440 /target/etc/sudoers.d/cezen
# Install the Cezen AI payload from the ISO first. Fall back to Git only
# when building from older media that does not contain /cdrom/cezen-aipackage.
- mkdir -p /target/opt/aipackage
- cp -a /cdrom/cezen-aipackage/. /target/opt/aipackage/ || git clone https://cgit.cezentech.com/jinojose/aipackage.git /target/opt/aipackage
# Deploy the web setup server
- mkdir -p /target/opt/cezen
- cp /target/opt/aipackage/autoinstall/websetup/server.py /target/opt/cezen/websetup.py
- chmod +x /target/opt/cezen/websetup.py
# Set hostname to cezenai so it's reachable as cezenai.local via mDNS
- echo "cezenai" > /target/etc/hostname
- sed -i 's/aiserver/cezenai/g' /target/etc/hosts || true
# Create cezen-setup web UI systemd service
- |
cat > /target/etc/systemd/system/cezen-setup.service << 'EOF'
[Unit]
Description=Cezen AI Suite — Web Setup UI
After=network-online.target avahi-daemon.service
Wants=network-online.target
ConditionPathExists=!/opt/cezen/.setup-done
[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/cezen/websetup.py
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
- curtin in-target -- systemctl enable cezen-setup.service
- curtin in-target -- systemctl enable avahi-daemon.service
# ── Skip confirmations ─────────────────────────
user-data:
disable_root: false