Fix temperature monitoring for standalone Proxmox nodes and add multi-arch sensor proxy builds
Related to #571 This addresses multiple temperature monitoring issues: 1. Fix single-node Proxmox installation failure: Add '|| true' to pvecm status calls to prevent script exit on standalone (non-clustered) nodes with 'set -euo pipefail'. The script now properly falls through to standalone node configuration when cluster detection fails. 2. Build pulse-sensor-proxy for all Linux architectures (amd64, arm64, armv7) in Dockerfile to ensure binaries are available for download on all supported platforms. This resolves the missing binary issue from v4.23.0. Note: AMD Tctl sensor support was already implemented in a previous commit.
This commit is contained in:
parent
9670afe0cb
commit
8a052baa2a
3 changed files with 20 additions and 8 deletions
20
Dockerfile
20
Dockerfile
|
|
@ -105,13 +105,22 @@ RUN --mount=type=cache,id=pulse-go-mod,target=/go/pkg/mod \
|
||||||
-trimpath \
|
-trimpath \
|
||||||
-o pulse-host-agent-windows-amd64.exe ./cmd/pulse-host-agent
|
-o pulse-host-agent-windows-amd64.exe ./cmd/pulse-host-agent
|
||||||
|
|
||||||
# Build pulse-sensor-proxy
|
# Build pulse-sensor-proxy for all Linux architectures (for download endpoint)
|
||||||
RUN --mount=type=cache,id=pulse-go-mod,target=/go/pkg/mod \
|
RUN --mount=type=cache,id=pulse-go-mod,target=/go/pkg/mod \
|
||||||
--mount=type=cache,id=pulse-go-build,target=/root/.cache/go-build \
|
--mount=type=cache,id=pulse-go-build,target=/root/.cache/go-build \
|
||||||
CGO_ENABLED=0 GOOS=linux go build \
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \
|
||||||
-ldflags="-s -w" \
|
-ldflags="-s -w" \
|
||||||
-trimpath \
|
-trimpath \
|
||||||
-o pulse-sensor-proxy ./cmd/pulse-sensor-proxy
|
-o pulse-sensor-proxy-linux-amd64 ./cmd/pulse-sensor-proxy && \
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build \
|
||||||
|
-ldflags="-s -w" \
|
||||||
|
-trimpath \
|
||||||
|
-o pulse-sensor-proxy-linux-arm64 ./cmd/pulse-sensor-proxy && \
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=arm GOARM=7 go build \
|
||||||
|
-ldflags="-s -w" \
|
||||||
|
-trimpath \
|
||||||
|
-o pulse-sensor-proxy-linux-armv7 ./cmd/pulse-sensor-proxy && \
|
||||||
|
cp pulse-sensor-proxy-linux-amd64 pulse-sensor-proxy
|
||||||
|
|
||||||
# Runtime image for the Docker agent (offered via --target agent_runtime)
|
# Runtime image for the Docker agent (offered via --target agent_runtime)
|
||||||
FROM alpine:3.20 AS agent_runtime
|
FROM alpine:3.20 AS agent_runtime
|
||||||
|
|
@ -188,7 +197,10 @@ COPY --from=backend-builder /app/pulse-host-agent-windows-amd64.exe /opt/pulse/b
|
||||||
# Create symlink for Windows without .exe extension
|
# Create symlink for Windows without .exe extension
|
||||||
RUN ln -s pulse-host-agent-windows-amd64.exe /opt/pulse/bin/pulse-host-agent-windows-amd64
|
RUN ln -s pulse-host-agent-windows-amd64.exe /opt/pulse/bin/pulse-host-agent-windows-amd64
|
||||||
|
|
||||||
# Copy pulse-sensor-proxy binary for download endpoint
|
# Copy multi-arch pulse-sensor-proxy binaries for download endpoint
|
||||||
|
COPY --from=backend-builder /app/pulse-sensor-proxy-linux-amd64 /opt/pulse/bin/
|
||||||
|
COPY --from=backend-builder /app/pulse-sensor-proxy-linux-arm64 /opt/pulse/bin/
|
||||||
|
COPY --from=backend-builder /app/pulse-sensor-proxy-linux-armv7 /opt/pulse/bin/
|
||||||
COPY --from=backend-builder /app/pulse-sensor-proxy /opt/pulse/bin/pulse-sensor-proxy
|
COPY --from=backend-builder /app/pulse-sensor-proxy /opt/pulse/bin/pulse-sensor-proxy
|
||||||
|
|
||||||
# Create config directory
|
# Create config directory
|
||||||
|
|
|
||||||
|
|
@ -101,7 +101,7 @@ cleanup_cluster_authorized_keys_manual() {
|
||||||
if command -v pvecm >/dev/null 2>&1; then
|
if command -v pvecm >/dev/null 2>&1; then
|
||||||
while IFS= read -r node_ip; do
|
while IFS= read -r node_ip; do
|
||||||
[[ -n "$node_ip" ]] && nodes+=("$node_ip")
|
[[ -n "$node_ip" ]] && nodes+=("$node_ip")
|
||||||
done < <(pvecm status 2>/dev/null | awk '/0x[0-9a-f]+.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $3}')
|
done < <(pvecm status 2>/dev/null | awk '/0x[0-9a-f]+.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $3}' || true)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ${#nodes[@]} -eq 0 ]]; then
|
if [[ ${#nodes[@]} -eq 0 ]]; then
|
||||||
|
|
@ -841,7 +841,7 @@ if [[ -z "$HOST" ]]; then
|
||||||
|
|
||||||
# Discover cluster nodes
|
# Discover cluster nodes
|
||||||
if command -v pvecm >/dev/null 2>&1; then
|
if command -v pvecm >/dev/null 2>&1; then
|
||||||
CLUSTER_NODES=$(pvecm status 2>/dev/null | awk '/0x[0-9a-f]+.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $3}')
|
CLUSTER_NODES=$(pvecm status 2>/dev/null | awk '/0x[0-9a-f]+.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $3}' || true)
|
||||||
|
|
||||||
if [[ -n "$CLUSTER_NODES" ]]; then
|
if [[ -n "$CLUSTER_NODES" ]]; then
|
||||||
for node_ip in $CLUSTER_NODES; do
|
for node_ip in $CLUSTER_NODES; do
|
||||||
|
|
@ -1016,7 +1016,7 @@ print_info "Proxy public key: ${PROXY_PUBLIC_KEY:0:50}..."
|
||||||
# Discover cluster nodes
|
# Discover cluster nodes
|
||||||
if command -v pvecm >/dev/null 2>&1; then
|
if command -v pvecm >/dev/null 2>&1; then
|
||||||
# Extract node IPs from pvecm status
|
# Extract node IPs from pvecm status
|
||||||
CLUSTER_NODES=$(pvecm status 2>/dev/null | awk '/0x[0-9a-f]+.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $3}')
|
CLUSTER_NODES=$(pvecm status 2>/dev/null | awk '/0x[0-9a-f]+.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $3}' || true)
|
||||||
|
|
||||||
if [[ -n "$CLUSTER_NODES" ]]; then
|
if [[ -n "$CLUSTER_NODES" ]]; then
|
||||||
print_info "Discovered cluster nodes: $(echo $CLUSTER_NODES | tr '\n' ' ')"
|
print_info "Discovered cluster nodes: $(echo $CLUSTER_NODES | tr '\n' ' ')"
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ if [[ -z "$HOST" ]]; then
|
||||||
|
|
||||||
# Discover cluster nodes
|
# Discover cluster nodes
|
||||||
if command -v pvecm >/dev/null 2>&1; then
|
if command -v pvecm >/dev/null 2>&1; then
|
||||||
CLUSTER_NODES=$(pvecm status 2>/dev/null | awk '/0x[0-9a-f]+.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $3}')
|
CLUSTER_NODES=$(pvecm status 2>/dev/null | awk '/0x[0-9a-f]+.*[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/ {print $3}' || true)
|
||||||
|
|
||||||
if [[ -n "$CLUSTER_NODES" ]]; then
|
if [[ -n "$CLUSTER_NODES" ]]; then
|
||||||
for node_ip in $CLUSTER_NODES; do
|
for node_ip in $CLUSTER_NODES; do
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue