mirror of
https://github.com/coder/registry.git
synced 2026-06-02 20:48:14 +00:00
Fix(registry/Excellencedev/templates/hetzner-linux): Correctly select coder agent arch on Hetzner CAX ARM Instances (#672)
## Description hetzner-linux template allows CAX (ARM) instances but hardcodes coder agent to amd64 causing the wrong coder-agent to be pulled on CAX instance causing provisioning failure. Adding `architecture` to server_types response and mapping this to correct agent arch, with defaults back to amd64 for if this fails. No Fix, CAX Instance ``` Jan 25 16:03:48 coder-test-nofix-dev systemd[1]: Starting coder-agent.service - Coder Agent... Jan 25 16:03:53 coder-test-nofix-dev systemd[1]: Started coder-agent.service - Coder Agent. Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + trap waitonexit EXIT Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2101]: + mktemp -d -t coder.XXXXXX Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_DIR=/tmp/coder.6oHHHW Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_NAME=coder Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_URL=https://coder.domain/bin/coder-linux-amd64 Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + cd /tmp/coder.6oHHHW Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + : Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + status= Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + command -v curl Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + curl -fsSL --compressed https://coder.domain/bin/coder-linux-amd64 -o coder Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + break Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + chmod +x coder Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + [ -n ] Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + export CODER_AGENT_AUTH=token Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + export CODER_AGENT_URL=https://coder.domain/ Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2133]: + ./coder --version Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2134]: + head -n1 Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2133]: /opt/coder/init: 90: ./coder: Exec format error Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + output= Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2136]: + echo Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2137]: + grep -q Coder Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo ERROR: Downloaded agent binary returned unexpected version output Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: ERROR: Downloaded agent binary returned unexpected version output Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo coder --version output: "" Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: coder --version output: "" Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + exit 2 Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + waitonexit Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo === Agent script exited with non-zero code (2). Sleeping 24h to preserve logs... Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: === Agent script exited with non-zero code (2). Sleeping 24h to preserve logs... Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + sleep 86400 ``` Fix, CAX Instance ``` Jan 25 16:08:55 coder-ARM64TEST-dev systemd[1]: Starting coder-agent.service - Coder Agent... Jan 25 16:09:00 coder-ARM64TEST-dev systemd[1]: Started coder-agent.service - Coder Agent. Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + trap waitonexit EXIT Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2046]: + mktemp -d -t coder.XXXXXX Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_DIR=/tmp/coder.4j7W57 Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_NAME=coder Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_URL=https://coder.domain/bin/coder-linux-arm64 Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + cd /tmp/coder.4j7W57 Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + : Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + status= Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + command -v curl Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + curl -fsSL --compressed https://coder.domain/bin/coder-linux-arm64 -o coder Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + break Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + chmod +x coder Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + [ -n ] Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + export CODER_AGENT_AUTH=token Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + export CODER_AGENT_URL=https://coder.domain/ Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2069]: + ./coder --version Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2070]: + head -n1 Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + output=Coder v2.29.2+b5360a9 Wed Jan 21 15:45:58 UTC 2026 Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2076]: + echo Coder v2.29.2+b5360a9 Wed Jan 21 15:45:58 UTC 2026 Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2077]: + grep -q Coder Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + exec ./coder agent Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: 2026-01-25 16:09:13.467 [info] agent is starting now ``` ## Type of Change - [ ] New module - [ ] New template - [x] Bug fix - [ ] Feature/enhancement - [ ] Documentation - [ ] Other ## Template Information <!-- Delete this section if not applicable --> **Path:** `registry/Excellencedev/templates/hetzner-linux` ## Testing & Validation - [] Tests pass (`bun test`) - [] Code formatted (`bun fmt`) - [x] Changes tested locally ## Related Issues <!-- Link related issues or write "None" if not applicable -->
This commit is contained in:
@@ -137,11 +137,12 @@ locals {
|
||||
hcloud_server_types = {
|
||||
for st in jsondecode(data.http.hcloud_server_types.response_body).server_types :
|
||||
st.name => {
|
||||
cores = st.cores
|
||||
memory_gb = st.memory
|
||||
disk_gb = st.disk
|
||||
locations = [for l in st.locations : l.name]
|
||||
deprecated = st.deprecated
|
||||
cores = st.cores
|
||||
memory_gb = st.memory
|
||||
disk_gb = st.disk
|
||||
architecture = st.architecture
|
||||
locations = [for l in st.locations : l.name]
|
||||
deprecated = st.deprecated
|
||||
}
|
||||
if st.deprecated == false
|
||||
}
|
||||
@@ -162,6 +163,19 @@ locals {
|
||||
data.coder_parameter.hcloud_location.value
|
||||
)
|
||||
]
|
||||
|
||||
# Map Hetzner architecture (x86 or arm) to Coder agent architecture (amd64 or arm64)
|
||||
agent_arch = try(
|
||||
lookup(
|
||||
{
|
||||
"x86" = "amd64"
|
||||
"arm" = "arm64"
|
||||
},
|
||||
local.hcloud_server_types[data.coder_parameter.hcloud_server_type.value].architecture,
|
||||
"amd64" # Fallback if not returned
|
||||
),
|
||||
"amd64" # Fallback for template setup
|
||||
)
|
||||
}
|
||||
|
||||
data "coder_provisioner" "me" {}
|
||||
@@ -187,7 +201,7 @@ data "coder_parameter" "home_volume_size" {
|
||||
|
||||
resource "coder_agent" "main" {
|
||||
os = "linux"
|
||||
arch = "amd64"
|
||||
arch = local.agent_arch
|
||||
|
||||
metadata {
|
||||
key = "cpu"
|
||||
|
||||
Reference in New Issue
Block a user