Skip to content

Commit 07a5729

Browse files
committed
Enhance unifi-on-boot deployment and sync logic
- Expand .deb search locations in postinst to include /root and /home - Exclude temporary, backup, and hidden files from rsync syncs - Upgrade shadow gateway when its version mismatches the primary - Remove unnecessary Ansible backup flag
1 parent cf57982 commit 07a5729

3 files changed

Lines changed: 25 additions & 8 deletions

File tree

ansible/tasks/main.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,6 @@
135135
owner: root
136136
group: root
137137
mode: "{{ item.mode | default('0755') }}"
138-
backup: true
139138
loop: "{{ unifi_on_boot_scripts }}"
140139
when: unifi_on_boot_scripts | length > 0
141140

debian/postinst

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ setup_self_restore() {
8989
backup_deb=$(find /tmp/ -maxdepth 1 -name "${PACKAGE_NAME}_*.deb" -type f 2>/dev/null | sort -V | tail -1)
9090
fi
9191

92+
# 4. Check common manual install locations (/root, /home)
93+
if [ -z "${backup_deb}" ]; then
94+
backup_deb=$(find /root/ /home/ -maxdepth 2 -name "${PACKAGE_NAME}_*.deb" -type f 2>/dev/null | sort -V | tail -1)
95+
fi
96+
9297
if [ -n "${backup_deb}" ] && [ -f "${backup_deb}" ]; then
9398
cp "${backup_deb}" "${DATA_DIR}/${PACKAGE_NAME}.deb"
9499
echo "${PACKAGE_NAME}: backed up .deb to ${DATA_DIR} (from ${backup_deb})"

debian/unifi-on-boot

Lines changed: 20 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -92,33 +92,46 @@ sync_shadow_gateway() {
9292

9393
# Sync /data/on_boot.d/ to shadow (--delete ensures exact mirror)
9494
log "Syncing /data/on_boot.d/ to shadow gateway..."
95-
if timeout "$SYNC_TIMEOUT" rsync -avz --delete -e "ssh $SSH_OPTS" \
95+
if timeout "$SYNC_TIMEOUT" rsync -avz --delete --delete-excluded \
96+
--exclude='*~' --exclude='*.bak' --exclude='*.orig' \
97+
--exclude='*.dpkg-*' --exclude='.*' \
98+
-e "ssh $SSH_OPTS" \
9699
"${BOOT_DIR}/" "${shadow_user}@${shadow_ip}:${BOOT_DIR}/" 2>&1 | tee -a "$LOG_FILE"; then
97100
log "Successfully synced /data/on_boot.d/ to shadow gateway"
98101
else
99102
log "ERROR: Failed to rsync /data/on_boot.d/ to shadow gateway"
100103
return 1
101104
fi
102105

103-
# Ensure unifi-on-boot is installed on shadow
104-
if ! timeout "$SYNC_TIMEOUT" ssh $SSH_OPTS "${shadow_user}@${shadow_ip}" \
105-
"dpkg -l unifi-on-boot 2>/dev/null | grep -q '^ii'" 2>/dev/null; then
106-
log "Installing unifi-on-boot on shadow gateway..."
106+
# Ensure unifi-on-boot on shadow matches primary version
107+
local primary_version
108+
primary_version=$(dpkg-query -W -f='${Version}' unifi-on-boot 2>/dev/null || echo "unknown")
109+
110+
local shadow_version
111+
shadow_version=$(timeout "$SYNC_TIMEOUT" ssh $SSH_OPTS "${shadow_user}@${shadow_ip}" \
112+
"dpkg-query -W -f='\${Version}' unifi-on-boot 2>/dev/null" 2>/dev/null || echo "not-installed")
113+
114+
if [ "$primary_version" != "$shadow_version" ]; then
115+
log "Shadow version mismatch (primary: ${primary_version}, shadow: ${shadow_version}), upgrading..."
107116

108117
local deb_path="/data/unifi-on-boot/unifi-on-boot.deb"
109118
if [ -f "$deb_path" ]; then
110119
if timeout "$SYNC_TIMEOUT" scp $SSH_OPTS \
111120
"$deb_path" "${shadow_user}@${shadow_ip}:/tmp/unifi-on-boot.deb" 2>/dev/null && \
112121
timeout "$SYNC_TIMEOUT" ssh $SSH_OPTS "${shadow_user}@${shadow_ip}" \
113-
"dpkg -i /tmp/unifi-on-boot.deb && rm -f /tmp/unifi-on-boot.deb" 2>&1 | tee -a "$LOG_FILE"; then
114-
log "Successfully installed unifi-on-boot on shadow gateway"
122+
"dpkg -i /tmp/unifi-on-boot.deb && \
123+
mkdir -p /data/unifi-on-boot && \
124+
mv /tmp/unifi-on-boot.deb /data/unifi-on-boot/unifi-on-boot.deb" 2>&1 | tee -a "$LOG_FILE"; then
125+
log "Successfully upgraded unifi-on-boot on shadow gateway to ${primary_version}"
115126
else
116127
log "ERROR: Failed to install unifi-on-boot on shadow gateway"
117128
return 1
118129
fi
119130
else
120131
log "WARNING: No .deb found at ${deb_path}, cannot install unifi-on-boot on shadow"
121132
fi
133+
else
134+
log "Shadow version matches primary (${primary_version})"
122135
fi
123136

124137
# Run unifi-on-boot on shadow with --skip-shadow to prevent recursion

0 commit comments

Comments
 (0)