From ac41e7c017bb0abd85caae0d6f981dce83d38222 Mon Sep 17 00:00:00 2001 From: Viktor Barzin Date: Thu, 2 Jul 2026 05:21:47 +0000 Subject: [PATCH] nvidia: run advertise-gpumem provisioner under bash (dash rejects pipefail) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First apply of ADR-0016 failed: terraform local-exec defaults to /bin/sh, which on Ubuntu is dash — 'set -euo pipefail' exits 2 before running kubectl. Pin the interpreter to bash. Everything else in the gpumem apply succeeded. Co-Authored-By: Claude Opus 4.8 --- stacks/nvidia/modules/nvidia/gpu_memory_budget.tf | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/stacks/nvidia/modules/nvidia/gpu_memory_budget.tf b/stacks/nvidia/modules/nvidia/gpu_memory_budget.tf index 054327de..3ea5e33c 100644 --- a/stacks/nvidia/modules/nvidia/gpu_memory_budget.tf +++ b/stacks/nvidia/modules/nvidia/gpu_memory_budget.tf @@ -57,7 +57,9 @@ locals { # unschedulable (extended resource not advertised by any node). resource "null_resource" "advertise_gpumem" { provisioner "local-exec" { - command = <<-EOT + # bash, not the default /bin/sh: dash (Ubuntu sh) rejects `set -o pipefail` + interpreter = ["/bin/bash", "-c"] + command = <<-EOT set -euo pipefail for node in $(kubectl get nodes -l nvidia.com/gpu.present=true -o jsonpath='{.items[*].metadata.name}'); do echo "advertising ${var.gpumem_resource}=${var.gpumem_total_mib} on $node"