@@ -37,29 +37,16 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
3737export NEEDRESTART_MODE=a
3838export DEBIAN_FRONTEND=noninteractive
3939
40- # Wait for any existing apt locks (e.g. Brev's own provisioning on boot)
41- wait_for_apt () {
42- local max_wait=300 # 5 minutes
43- local waited=0
44- while fuser /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock /var/cache/apt/archives/lock > /dev/null 2>&1 ; do
45- if [ $waited -ge $max_wait ]; then
46- fail " apt lock still held after ${max_wait} s — another process is stuck"
47- fi
48- info " Waiting for apt lock to be released... (${waited} s)"
49- sleep 10
50- waited=$(( waited + 10 ))
51- done
52- # Wait for any apt processes to fully exit — locks can be released
53- # momentarily between apt operations in a multi-step provisioning sequence
54- while pgrep -Ex " apt-get|apt|dpkg" > /dev/null 2>&1 ; do
55- info " Waiting for apt/dpkg processes to finish..."
56- sleep 5
57- done
58- }
40+ # Wait for cloud-init to finish — Brev instances run apt provisioning on boot.
41+ # This is the standard way to wait for all boot-time setup to complete.
42+ if command -v cloud-init > /dev/null 2>&1 ; then
43+ info " Waiting for cloud-init to finish..."
44+ cloud-init status --wait > /dev/null 2>&1 || true
45+ info " cloud-init done"
46+ fi
5947
6048# --- 0. Node.js (needed for services) ---
6149if ! command -v node > /dev/null 2>&1 ; then
62- wait_for_apt
6350 info " Installing Node.js..."
6451 NODESOURCE_URL=" https://deb.nodesource.com/setup_22.x"
6552 NODESOURCE_SHA256=" 575583bbac2fccc0b5edd0dbc03e222d9f9dc8d724da996d22754d6411104fd1"
@@ -78,32 +65,17 @@ if ! command -v node >/dev/null 2>&1; then
7865 fi
7966 sudo -E bash " $tmpdir /setup_node.sh"
8067 )
81- # Retry apt-get install — Brev provisioning can grab the lock between operations
82- for attempt in 1 2 3 4 5; do
83- wait_for_apt
84- if sudo apt-get install -y -qq nodejs 2>&1 ; then
85- break
86- fi
87- info " apt-get install nodejs failed (attempt $attempt /5), retrying..."
88- sleep 10
89- done
68+ sudo apt-get install -y -qq nodejs
9069 info " Node.js $( node --version) installed"
9170else
9271 info " Node.js already installed: $( node --version) "
9372fi
9473
9574# --- 1. Docker ---
9675if ! command -v docker > /dev/null 2>&1 ; then
97- wait_for_apt
9876 info " Installing Docker..."
99- for attempt in 1 2 3 4 5; do
100- wait_for_apt
101- if sudo apt-get update -qq > /dev/null 2>&1 && sudo apt-get install -y -qq docker.io > /dev/null 2>&1 ; then
102- break
103- fi
104- info " Docker install failed (attempt $attempt /5), retrying..."
105- sleep 10
106- done
77+ sudo apt-get update -qq > /dev/null 2>&1
78+ sudo apt-get install -y -qq docker.io > /dev/null 2>&1
10779 sudo usermod -aG docker " $( whoami) "
10880 info " Docker installed"
10981else
0 commit comments