From d4097d7f033c975df6e4fb50a69e6fed1ead09b3 Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 16:36:26 +0000 Subject: [PATCH 01/16] feat: replace systemd with supervisord in coder image --- images/homelab-workspace/Dockerfile | 37 ++----------------- .../coder/entrypoint-prepare.sh | 1 + images/homelab-workspace/etc/supervisord.conf | 31 ++++++++++++++++ .../agent-init-script.sh.tftpl | 3 ++ templates/docker/homelab-workspace/main.tf | 28 +++++++------- 5 files changed, 54 insertions(+), 46 deletions(-) create mode 100644 images/homelab-workspace/etc/supervisord.conf create mode 100644 templates/docker/homelab-workspace/agent-init-script.sh.tftpl diff --git a/images/homelab-workspace/Dockerfile b/images/homelab-workspace/Dockerfile index 44617eac..a2df4e3c 100644 --- a/images/homelab-workspace/Dockerfile +++ b/images/homelab-workspace/Dockerfile @@ -105,35 +105,6 @@ RUN --mount=type=cache,target=/var/cache/apt,id=sysbase1-cache-apt-${TARGETARCH} sed -i 's|xargs dpkg -S|xargs -r dpkg -S|g' /usr/local/sbin/unminimize && \ echo -e 'y\ny' | unminimize -# systemd requirements (from https://github.com/nestybox/dockerfiles/blob/master/ubuntu-jammy-systemd/Dockerfile) -RUN --mount=type=cache,target=/var/cache/apt,id=sysbase2-cache-apt-${TARGETARCH} \ - --mount=type=cache,target=/var/cache/debconf,id=sysbase2-cache-debconf-${TARGETARCH} \ - --mount=type=cache,target=/var/lib/apt,id=sysbase2-lib-apt-${TARGETARCH} \ - --mount=type=tmpfs,target=/var/cache/python \ - --mount=type=tmpfs,target=/tmp \ - --mount=type=tmpfs,target=/var/log \ - --mount=type=tmpfs,target=/var/tmp \ - apt-get update && \ - DEBIAN_FRONTEND="noninteractive" apt-get install -yq --no-install-recommends \ - dbus \ - iptables \ - iproute2 \ - kmod \ - libsystemd0 \ - systemd \ - systemd-sysv \ - udev \ - && \ - # Prevents journald from reading kernel messages from /dev/kmsg - echo "ReadKMsg=no" >> /etc/systemd/journald.conf && \ - # Disable systemd services/units that are unnecessary within a container. - systemctl mask systemd-udevd.service \ - systemd-udevd-kernel.socket \ - systemd-udevd-control.socket \ - systemd-modules-load.service \ - sys-kernel-debug.mount \ - sys-kernel-tracing.mount - # install docker-engine # hadolint ignore=SC1091 RUN --mount=type=cache,target=/var/cache/apt,id=sysbase3-cache-apt-${TARGETARCH} \ @@ -231,7 +202,6 @@ RUN --mount=type=cache,target=/var/cache/apt,id=sysbase4-cache-apt-${TARGETARCH} python3 \ python3-pip \ python3-venv \ - qemu-user-static \ ripgrep \ rsync \ screen \ @@ -239,6 +209,7 @@ RUN --mount=type=cache,target=/var/cache/apt,id=sysbase4-cache-apt-${TARGETARCH} sshpass \ ssh-askpass \ strace \ + supervisor \ sysstat \ traceroute \ tmux \ @@ -249,9 +220,6 @@ RUN --mount=type=cache,target=/var/cache/apt,id=sysbase4-cache-apt-${TARGETARCH} zsh \ zstd -# enables docker starting with systemd -RUN systemctl enable docker - # ======================================================================================================== FROM --platform=$TARGETPLATFORM base AS packages @@ -531,6 +499,9 @@ COPY --link --chown=root:root --chmod=644 shell/bashrc.extra /etc/skel/.bashrc.e RUN mkdir -p /opt/coder/bin COPY --link --chown=root:root --chmod=755 coder/*.sh /opt/coder/bin/ +# supervisord configuration for docker and coder agent +COPY --link --chown=root:root --chmod=644 etc/supervisord.conf /etc/supervisord.conf + RUN rm -f /etc/apt/apt.conf.d/keep-cache # Add `coder` user (coder platform will connect the user in as this user) diff --git a/images/homelab-workspace/coder/entrypoint-prepare.sh b/images/homelab-workspace/coder/entrypoint-prepare.sh index 3280e8a4..5673b309 100755 --- a/images/homelab-workspace/coder/entrypoint-prepare.sh +++ b/images/homelab-workspace/coder/entrypoint-prepare.sh @@ -44,6 +44,7 @@ maintain_directories() { echo "- Creating directories..." mkdir -p $home_dir + ln -s $home_dir /home/coder mkdir -p $home_dir/.log/ echo "- Updating directory permissions..." chown $username:coder $home_dir diff --git a/images/homelab-workspace/etc/supervisord.conf b/images/homelab-workspace/etc/supervisord.conf new file mode 100644 index 00000000..b6330efb --- /dev/null +++ b/images/homelab-workspace/etc/supervisord.conf @@ -0,0 +1,31 @@ +[unix_http_server] +file=/var/run/supervisor.sock + +[supervisord] +logfile=/dev/fd/1 +logfile_maxbytes=0 +loglevel=info +pidfile=/var/run/supervisord.pid +nodaemon=true +silent=false + +[rpcinterface:supervisor] +supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface + +[supervisorctl] +serverurl=unix:///var/run/supervisor.sock + +[program:docker] +command=/usr/bin/dockerd +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 + +[program:coder] +command=/tmp/coder-agent-wrapper.sh +process_name=coder +directory=/tmp +environment=CODER_AGENT_TOKEN="%(ENV_CODER_AGENT_TOKEN)" +redirect_stderr=true +stdout_logfile=/dev/fd/1 +stdout_logfile_maxbytes=0 diff --git a/templates/docker/homelab-workspace/agent-init-script.sh.tftpl b/templates/docker/homelab-workspace/agent-init-script.sh.tftpl new file mode 100644 index 00000000..85c7148e --- /dev/null +++ b/templates/docker/homelab-workspace/agent-init-script.sh.tftpl @@ -0,0 +1,3 @@ +sudo -u ${username} --preserve-env=CODER_AGENT_TOKEN /bin/bash -- <<-'EOT' +${replace(init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")} +EOT diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 95aa16bf..3e53fc9a 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -44,6 +44,14 @@ locals { docker_volumes = local.test_mode ? ["home", "docker"] : [] # create bind mounts otherwise bind_mounts = local.test_mode ? [] : ["home", "docker"] + + agent_init_script = templatefile( + "${path.module}/agent-init-script.sh.tftpl", + { + init_script = coder_agent.main.init_script + username = local.username + } + ) } @@ -131,25 +139,19 @@ resource "docker_container" "workspace" { entrypoint = ["/bin/bash", "-c", < /tmp/coder-agent-wrapper.sh + chmod 700 /tmp/coder-agent-wrapper.sh + # start supervisord (which in turn will start docker and coder agent) + exec /usr/bin/supervisord fi EOF , From 8164b62f02250c88642a4b7470942982ea005178 Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 16:38:31 +0000 Subject: [PATCH 02/16] feat: replace systemd with supervisord in coder image --- images/homelab-workspace/coder/entrypoint-prepare.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/homelab-workspace/coder/entrypoint-prepare.sh b/images/homelab-workspace/coder/entrypoint-prepare.sh index 5673b309..9579d6cc 100755 --- a/images/homelab-workspace/coder/entrypoint-prepare.sh +++ b/images/homelab-workspace/coder/entrypoint-prepare.sh @@ -44,7 +44,7 @@ maintain_directories() { echo "- Creating directories..." mkdir -p $home_dir - ln -s $home_dir /home/coder + ln -sf $home_dir /home/coder mkdir -p $home_dir/.log/ echo "- Updating directory permissions..." chown $username:coder $home_dir From 6b5d482d8983827b17a1b232675f91ae317d7f3d Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 16:50:13 +0000 Subject: [PATCH 03/16] feat: replace systemd with supervisord in coder image --- images/homelab-workspace/Dockerfile | 5 ++++- templates/docker/homelab-workspace/main.tf | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/images/homelab-workspace/Dockerfile b/images/homelab-workspace/Dockerfile index a2df4e3c..4a5cac7a 100644 --- a/images/homelab-workspace/Dockerfile +++ b/images/homelab-workspace/Dockerfile @@ -242,6 +242,7 @@ ENV FNM_ROOT=/opt/fnm # renovate: datasource=node depName=node versioning=node ARG NODE_VERSION="20.15.1" ENV PATH="$PATH:${FNM_ROOT}" +# hadolint ignore=SC2086 RUN --mount=type=tmpfs,target=/tmp \ --mount=type=tmpfs,target=/var/log \ --mount=type=tmpfs,target=/var/tmp \ @@ -428,7 +429,7 @@ RUN --mount=type=bind,from=packages,source=/packages/${TARGETARCH},target=/packa echo "$PIPX_BIN_DIR" > /env/pipx.path # ansible and its dependencies, related apps and collections -# hadolint ignore=SC2046 +# hadolint ignore=SC2046,SC2016 RUN --mount=type=bind,from=packages,source=/packages/${TARGETARCH},target=/packages \ --mount=type=cache,target=/root/.cache/pip,id=ansible-cache-${TARGETARCH} \ --mount=type=tmpfs,target=/var/cache/python \ @@ -472,6 +473,7 @@ COPY --from=sdk-rust-cargo /usr/local/bin/* /usr/local/sbin/ COPY --from=sdk-golang /usr/local/bin/* /usr/local/sbin/ # copy environment variables +# hadolint ignore=SC2086 RUN --mount=type=bind,from=sdk-nodejs,source=/env,target=/env/sdk-nodejs \ --mount=type=bind,from=sdk-golang,source=/env,target=/env/sdk-golang \ --mount=type=bind,from=sdk-terraform,source=/env,target=/env/sdk-terraform \ @@ -505,6 +507,7 @@ COPY --link --chown=root:root --chmod=644 etc/supervisord.conf /etc/supervisord. RUN rm -f /etc/apt/apt.conf.d/keep-cache # Add `coder` user (coder platform will connect the user in as this user) +# hadolint ignore=DL3059 RUN useradd coder --no-create-home --shell /bin/bash -g coder --groups sudo,docker USER coder WORKDIR / diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 3e53fc9a..b4a56e82 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -46,7 +46,7 @@ locals { bind_mounts = local.test_mode ? [] : ["home", "docker"] agent_init_script = templatefile( - "${path.module}/agent-init-script.sh.tftpl", + "agent-init-script.sh.tftpl", { init_script = coder_agent.main.init_script username = local.username From db00b04519fca6eea845ea9c8ccf52c05d34706f Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 16:55:42 +0000 Subject: [PATCH 04/16] feat: replace systemd with supervisord in coder image --- .../agent-init-script.sh.tftpl | 3 --- templates/docker/homelab-workspace/main.tf | 18 +++++++----------- 2 files changed, 7 insertions(+), 14 deletions(-) diff --git a/templates/docker/homelab-workspace/agent-init-script.sh.tftpl b/templates/docker/homelab-workspace/agent-init-script.sh.tftpl index 85c7148e..e69de29b 100644 --- a/templates/docker/homelab-workspace/agent-init-script.sh.tftpl +++ b/templates/docker/homelab-workspace/agent-init-script.sh.tftpl @@ -1,3 +0,0 @@ -sudo -u ${username} --preserve-env=CODER_AGENT_TOKEN /bin/bash -- <<-'EOT' -${replace(init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")} -EOT diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index b4a56e82..9fa92b96 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -44,14 +44,6 @@ locals { docker_volumes = local.test_mode ? ["home", "docker"] : [] # create bind mounts otherwise bind_mounts = local.test_mode ? [] : ["home", "docker"] - - agent_init_script = templatefile( - "agent-init-script.sh.tftpl", - { - init_script = coder_agent.main.init_script - username = local.username - } - ) } @@ -127,6 +119,12 @@ resource "docker_image" "workspace_image" { keep_locally = true } +locals { + agent_init_script = < Date: Sat, 13 Jul 2024 16:57:34 +0000 Subject: [PATCH 05/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/agent-init-script.sh.tftpl | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 templates/docker/homelab-workspace/agent-init-script.sh.tftpl diff --git a/templates/docker/homelab-workspace/agent-init-script.sh.tftpl b/templates/docker/homelab-workspace/agent-init-script.sh.tftpl deleted file mode 100644 index e69de29b..00000000 From ff838680bfb5e350d639c8a0a2207f43f080526c Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 17:02:36 +0000 Subject: [PATCH 06/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/main.tf | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 9fa92b96..badd6da9 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -139,12 +139,14 @@ resource "docker_container" "workspace" { echo if [[ "$TEST_MODE" == "1" ]]; then - ${local.agent_init_script} + sudo -u ${local.username} --preserve-env=CODER_AGENT_TOKEN /bin/bash -- <<-' EOT' + ${replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")} + EOT else # prepare user, filesystem and other configuration /opt/coder/bin/entrypoint-prepare.sh --username ${local.username} # write out coder agent init script to file that acts as a wrapper script - echo "${local.agent_init_script}" > /tmp/coder-agent-wrapper.sh + echo "sudo -u ${local.username} --preserve-env=CODER_AGENT_TOKEN /bin/bash -- ${replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal")}" > /tmp/coder-agent-wrapper.sh chmod 700 /tmp/coder-agent-wrapper.sh # start supervisord (which in turn will start docker and coder agent) exec /usr/bin/supervisord From 8695b377e571cac5165b9b504e643e0ed7f0d2fc Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 17:04:40 +0000 Subject: [PATCH 07/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/main.tf | 6 ------ 1 file changed, 6 deletions(-) diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index badd6da9..01140969 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -119,12 +119,6 @@ resource "docker_image" "workspace_image" { keep_locally = true } -locals { - agent_init_script = < Date: Sat, 13 Jul 2024 17:07:03 +0000 Subject: [PATCH 08/16] feat: replace systemd with supervisord in coder image --- .../homelab-workspace/.terraform.lock.hcl | 60 ------------------- templates/docker/homelab-workspace/main.tf | 2 +- 2 files changed, 1 insertion(+), 61 deletions(-) delete mode 100644 templates/docker/homelab-workspace/.terraform.lock.hcl diff --git a/templates/docker/homelab-workspace/.terraform.lock.hcl b/templates/docker/homelab-workspace/.terraform.lock.hcl deleted file mode 100644 index 531094c1..00000000 --- a/templates/docker/homelab-workspace/.terraform.lock.hcl +++ /dev/null @@ -1,60 +0,0 @@ -# This file is maintained automatically by "terraform init". -# Manual edits may be lost in future updates. - -provider "registry.terraform.io/coder/coder" { - version = "1.0.1" - constraints = "~> 1.0.0" - hashes = [ - "h1:/zNbekgRrw9A4VYXsB0e2de8D3NNQ8Q9st8XNlskrMg=", - "h1:1TNtcFcb6kiEYcBFnaBLetWUy3MB6g4N9M2SHFzVpKg=", - "h1:2Ar9iBygwpBPIxYsQQ59nsVJX72omZBI1k5YOL/nGwc=", - "h1:2bVsUDbwHGz3azfWmqduPwFjLmyYX9fLvG4vtzY+zkE=", - "h1:6j3Rbu5TkJgLqINc2LFq5tvIdsaruoU66ohuJKeDhWA=", - "h1:EPEuK5Cx9Hg25AwYzaoZxo6A48tztTMrVSrjq0GriYY=", - "h1:HlyI+eJ8d7FD+WEAr4BJJxnVlDdZwr8tSxn1llQe8Fw=", - "h1:NmQcWN7x2OuEDGIzCuwQFNOy0MDY4blaBDyBLOEyO/Y=", - "h1:ZBtniOxmaFj42gnybvslEuHhN1RCCpr/IrrE4GFVxC4=", - "h1:a8sOpKpZd8qCU4zjgbeBADjhZWFKPNdcd+NXOCyOp10=", - "h1:i9P2IbsUrSKlJqCVDy/rc9xd/glAASQEMMb7OE3INVs=", - "h1:j17qhRuCg3V9taF3eXGEIuCTsNjX4s6EpqY07Tlqsp8=", - "h1:k300Waq6c+qn4gsjhlVy3HxibcMRPSve7q1Z46sgMsk=", - "h1:v1Z6NbpbmNo7kjPHWGT4VeFWK3HwRz9dN85MdZqhqsE=", - "zh:0e45b1c78ecb3fd0d73e083ec1a61e699cc74abcb95a715287eff0993f66456f", - "zh:1cf6ea16e9c6b932f23a605cb7afbbfc8039f8539e13c1b74e30df47667faa83", - "zh:22c7b6a9b109a7bd609a49ce5b396b6bff06164eaa20a404e31256955b7a1702", - "zh:26aae2860f485ff679c0c64fca249ed8584d174db1ce9bb2b5f04280513f3b6d", - "zh:4250857f9eca00916a5faf119f521d0deae572dbd436c9f125e492dd7a16ea74", - "zh:56b59bfe211bca9352710ea5ec944ce9ae666c5f2df030b579ee4dbbf4607e1c", - "zh:6ecf20508fa7ea34dcd849f6037aae24a7eaef1d21d594c72a1219194e5da6a5", - "zh:94aac5e4c298c842692aca96129bd1798e9f0560d343a174c3417fd916dee203", - "zh:c10fb9a37862724f8261dfa04960375847f659be73a9e5ea0543c2b5156bc494", - "zh:c450f20fa14a421bb15ed14b324efc2d6052449aba1e76971f967b66bbbfa791", - "zh:d3e4cebf708e56eea51f0f418e072e16da6f1c319afb4408338c618bab933650", - "zh:e8872137b42d2bcb1615587fd6b79a3276c94ea80b1918a58cff21be7cdd7cb5", - "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", - "zh:f97d77c7cb8576ba08dc8f815c10e51ad73e28375620d8d28785feeed2c2c364", - "zh:fbda97bc5c142760d9fc8d973cba6143346c303a172c85318f1219f1abe4bd8d", - ] -} - -provider "registry.terraform.io/kreuzwerker/docker" { - version = "3.0.2" - constraints = "~> 3.0.2" - hashes = [ - "h1:cT2ccWOtlfKYBUE60/v2/4Q6Stk1KYTNnhxSck+VPlU=", - "zh:15b0a2b2b563d8d40f62f83057d91acb02cd0096f207488d8b4298a59203d64f", - "zh:23d919de139f7cd5ebfd2ff1b94e6d9913f0977fcfc2ca02e1573be53e269f95", - "zh:38081b3fe317c7e9555b2aaad325ad3fa516a886d2dfa8605ae6a809c1072138", - "zh:4a9c5065b178082f79ad8160243369c185214d874ff5048556d48d3edd03c4da", - "zh:5438ef6afe057945f28bce43d76c4401254073de01a774760169ac1058830ac2", - "zh:60b7fadc287166e5c9873dfe53a7976d98244979e0ab66428ea0dea1ebf33e06", - "zh:61c5ec1cb94e4c4a4fb1e4a24576d5f39a955f09afb17dab982de62b70a9bdd1", - "zh:a38fe9016ace5f911ab00c88e64b156ebbbbfb72a51a44da3c13d442cd214710", - "zh:c2c4d2b1fd9ebb291c57f524b3bf9d0994ff3e815c0cd9c9bcb87166dc687005", - "zh:d567bb8ce483ab2cf0602e07eae57027a1a53994aba470fa76095912a505533d", - "zh:e83bf05ab6a19dd8c43547ce9a8a511f8c331a124d11ac64687c764ab9d5a792", - "zh:e90c934b5cd65516fbcc454c89a150bfa726e7cf1fe749790c7480bbeb19d387", - "zh:f05f167d2eaf913045d8e7b88c13757e3cf595dd5cd333057fdafc7c4b7fed62", - "zh:fcc9c1cea5ce85e8bcb593862e699a881bd36dffd29e2e367f82d15368659c3d", - ] -} diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 01140969..6cdaf76f 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "~> 1.0.0" + version = "~> 0.23.0" } docker = { source = "kreuzwerker/docker" From 9679f13431004713ee2be2aa6389e3b4a0f12e69 Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 17:19:09 +0000 Subject: [PATCH 09/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/main.tf | 45 ++++++++++++---------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 6cdaf76f..36e58554 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -119,6 +119,10 @@ resource "docker_image" "workspace_image" { keep_locally = true } +locals { + agent_init_script = replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal") +} + resource "docker_container" "workspace" { count = data.coder_workspace.me.start_count @@ -128,26 +132,27 @@ resource "docker_container" "workspace" { runtime = "sysbox-runc" user = "0:0" - entrypoint = ["/bin/bash", "-c", < /tmp/coder-agent-wrapper.sh - chmod 700 /tmp/coder-agent-wrapper.sh - # start supervisord (which in turn will start docker and coder agent) - exec /usr/bin/supervisord - fi - EOF - , - ] + entrypoint = ["/bin/bash", "-c", local.agent_init_script] + # entrypoint = ["/bin/bash", "-c", < /tmp/coder-agent-wrapper.sh + # chmod 700 /tmp/coder-agent-wrapper.sh + # # start supervisord (which in turn will start docker and coder agent) + # exec /usr/bin/supervisord + # fi + # EOF + # , + # ] env = [ "CODER_AGENT_TOKEN=${coder_agent.main.token}", From 49dbcfecb634b96cf41ea2511dafbb0f3a0335fc Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 17:23:11 +0000 Subject: [PATCH 10/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/main.tf | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 36e58554..9c256e25 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -120,7 +120,12 @@ resource "docker_image" "workspace_image" { } locals { - agent_init_script = replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal") + test_mode_init_script = replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal") + standard_init_script = < Date: Sat, 13 Jul 2024 17:28:17 +0000 Subject: [PATCH 11/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/main.tf | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 9c256e25..dd591635 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -120,12 +120,12 @@ resource "docker_image" "workspace_image" { } locals { - test_mode_init_script = replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal") - standard_init_script = < /tmp/coder-agent-wrapper.sh # chmod 700 /tmp/coder-agent-wrapper.sh From f1348aa034e60c87b5124f0bdf695dce79a9a841 Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 17:29:55 +0000 Subject: [PATCH 12/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/main.tf | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index dd591635..1ddf2135 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -122,10 +122,13 @@ resource "docker_image" "workspace_image" { locals { standard_init_script = replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal") supervised_init_script = < /tmp/coder-agent-wrapper.sh; + chmod 700 /tmp/coder-agent-wrapper.sh; exec /usr/bin/supervisord EOF - agent_init_script = (local.test_mode) ? standard_init_script : supervised_init_script + agent_init_script = (local.test_mode) ? local.standard_init_script : local.supervised_init_script } resource "docker_container" "workspace" { From 812bd3330803c3fa0f4dc6da03d05b6044df7fc1 Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 17:31:51 +0000 Subject: [PATCH 13/16] feat: replace systemd with supervisord in coder image --- .../homelab-workspace/.terraform.lock.hcl | 47 +++++++++++++++++++ templates/docker/homelab-workspace/main.tf | 22 +-------- 2 files changed, 48 insertions(+), 21 deletions(-) create mode 100644 templates/docker/homelab-workspace/.terraform.lock.hcl diff --git a/templates/docker/homelab-workspace/.terraform.lock.hcl b/templates/docker/homelab-workspace/.terraform.lock.hcl new file mode 100644 index 00000000..01b66630 --- /dev/null +++ b/templates/docker/homelab-workspace/.terraform.lock.hcl @@ -0,0 +1,47 @@ +# This file is maintained automatically by "terraform init". +# Manual edits may be lost in future updates. + +provider "registry.terraform.io/coder/coder" { + version = "1.0.1" + constraints = "~> 1.0.0" + hashes = [ + "h1:NmQcWN7x2OuEDGIzCuwQFNOy0MDY4blaBDyBLOEyO/Y=", + "zh:0e45b1c78ecb3fd0d73e083ec1a61e699cc74abcb95a715287eff0993f66456f", + "zh:1cf6ea16e9c6b932f23a605cb7afbbfc8039f8539e13c1b74e30df47667faa83", + "zh:22c7b6a9b109a7bd609a49ce5b396b6bff06164eaa20a404e31256955b7a1702", + "zh:26aae2860f485ff679c0c64fca249ed8584d174db1ce9bb2b5f04280513f3b6d", + "zh:4250857f9eca00916a5faf119f521d0deae572dbd436c9f125e492dd7a16ea74", + "zh:56b59bfe211bca9352710ea5ec944ce9ae666c5f2df030b579ee4dbbf4607e1c", + "zh:6ecf20508fa7ea34dcd849f6037aae24a7eaef1d21d594c72a1219194e5da6a5", + "zh:94aac5e4c298c842692aca96129bd1798e9f0560d343a174c3417fd916dee203", + "zh:c10fb9a37862724f8261dfa04960375847f659be73a9e5ea0543c2b5156bc494", + "zh:c450f20fa14a421bb15ed14b324efc2d6052449aba1e76971f967b66bbbfa791", + "zh:d3e4cebf708e56eea51f0f418e072e16da6f1c319afb4408338c618bab933650", + "zh:e8872137b42d2bcb1615587fd6b79a3276c94ea80b1918a58cff21be7cdd7cb5", + "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c", + "zh:f97d77c7cb8576ba08dc8f815c10e51ad73e28375620d8d28785feeed2c2c364", + "zh:fbda97bc5c142760d9fc8d973cba6143346c303a172c85318f1219f1abe4bd8d", + ] +} + +provider "registry.terraform.io/kreuzwerker/docker" { + version = "3.0.2" + constraints = "~> 3.0.2" + hashes = [ + "h1:cT2ccWOtlfKYBUE60/v2/4Q6Stk1KYTNnhxSck+VPlU=", + "zh:15b0a2b2b563d8d40f62f83057d91acb02cd0096f207488d8b4298a59203d64f", + "zh:23d919de139f7cd5ebfd2ff1b94e6d9913f0977fcfc2ca02e1573be53e269f95", + "zh:38081b3fe317c7e9555b2aaad325ad3fa516a886d2dfa8605ae6a809c1072138", + "zh:4a9c5065b178082f79ad8160243369c185214d874ff5048556d48d3edd03c4da", + "zh:5438ef6afe057945f28bce43d76c4401254073de01a774760169ac1058830ac2", + "zh:60b7fadc287166e5c9873dfe53a7976d98244979e0ab66428ea0dea1ebf33e06", + "zh:61c5ec1cb94e4c4a4fb1e4a24576d5f39a955f09afb17dab982de62b70a9bdd1", + "zh:a38fe9016ace5f911ab00c88e64b156ebbbbfb72a51a44da3c13d442cd214710", + "zh:c2c4d2b1fd9ebb291c57f524b3bf9d0994ff3e815c0cd9c9bcb87166dc687005", + "zh:d567bb8ce483ab2cf0602e07eae57027a1a53994aba470fa76095912a505533d", + "zh:e83bf05ab6a19dd8c43547ce9a8a511f8c331a124d11ac64687c764ab9d5a792", + "zh:e90c934b5cd65516fbcc454c89a150bfa726e7cf1fe749790c7480bbeb19d387", + "zh:f05f167d2eaf913045d8e7b88c13757e3cf595dd5cd333057fdafc7c4b7fed62", + "zh:fcc9c1cea5ce85e8bcb593862e699a881bd36dffd29e2e367f82d15368659c3d", + ] +} diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 1ddf2135..377d5778 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -4,7 +4,7 @@ terraform { required_providers { coder = { source = "coder/coder" - version = "~> 0.23.0" + version = "~> 1.0.0" } docker = { source = "kreuzwerker/docker" @@ -141,26 +141,6 @@ resource "docker_container" "workspace" { user = "0:0" entrypoint = ["/bin/bash", "-c", local.agent_init_script] - # entrypoint = ["/bin/bash", "-c", < /tmp/coder-agent-wrapper.sh - # chmod 700 /tmp/coder-agent-wrapper.sh - # # start supervisord (which in turn will start docker and coder agent) - # exec /usr/bin/supervisord - # fi - # EOF - # , - # ] env = [ "CODER_AGENT_TOKEN=${coder_agent.main.token}" From 333b3997e57afca145ccc664e1d050edda7ffeae Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 17:39:23 +0000 Subject: [PATCH 14/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/main.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index 377d5778..aca2d2e1 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -123,7 +123,8 @@ locals { standard_init_script = replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal") supervised_init_script = < /tmp/coder-agent-wrapper.sh; + echo ${local.standard_init_script} > /tmp/coder-agent-init-script.sh + echo "sudo -u ${local.username} --preserve-env=CODER_AGENT_TOKEN /bin/bash /tmp/coder-agent-init-script.sh" > /tmp/coder-agent-wrapper.sh; chmod 700 /tmp/coder-agent-wrapper.sh; exec /usr/bin/supervisord EOF From 2392f828750184a6336012d1af134452430ef466 Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sat, 13 Jul 2024 17:46:22 +0000 Subject: [PATCH 15/16] feat: replace systemd with supervisord in coder image --- templates/docker/homelab-workspace/main.tf | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/templates/docker/homelab-workspace/main.tf b/templates/docker/homelab-workspace/main.tf index aca2d2e1..dc9888d6 100644 --- a/templates/docker/homelab-workspace/main.tf +++ b/templates/docker/homelab-workspace/main.tf @@ -120,16 +120,19 @@ resource "docker_image" "workspace_image" { } locals { - standard_init_script = replace(coder_agent.main.init_script, "/localhost|127\\.0\\.0\\.1/", "host.docker.internal") - supervised_init_script = < /tmp/coder-agent-init-script.sh - echo "sudo -u ${local.username} --preserve-env=CODER_AGENT_TOKEN /bin/bash /tmp/coder-agent-init-script.sh" > /tmp/coder-agent-wrapper.sh; - chmod 700 /tmp/coder-agent-wrapper.sh; - exec /usr/bin/supervisord + if [[ "${local.supervised_mode}" == "1" ]]; then + sudo -u ${local.username} --preserve-env=CODER_AGENT_TOKEN /bin/bash /tmp/coder-agent-init-script.sh + else + /opt/coder/bin/entrypoint-prepare.sh --username ${local.username} + echo "sudo -u ${local.username} --preserve-env=CODER_AGENT_TOKEN /bin/bash /tmp/coder-agent-init-script.sh" > /tmp/coder-agent-wrapper.sh + chmod 700 /tmp/coder-agent-wrapper.sh + exec /usr/bin/supervisord + fi EOF - - agent_init_script = (local.test_mode) ? local.standard_init_script : local.supervised_init_script } resource "docker_container" "workspace" { From 6b9cb946c5f6f81bb01126082ab8119488036645 Mon Sep 17 00:00:00 2001 From: Peter Pathirana Date: Sun, 14 Jul 2024 16:14:49 +0000 Subject: [PATCH 16/16] fix: fix --- images/homelab-workspace/coder/agent-startup.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/images/homelab-workspace/coder/agent-startup.sh b/images/homelab-workspace/coder/agent-startup.sh index b91bbc55..fd2468e4 100755 --- a/images/homelab-workspace/coder/agent-startup.sh +++ b/images/homelab-workspace/coder/agent-startup.sh @@ -43,6 +43,7 @@ install_node() { } install_npm_packages() { + eval "$(fnm env --shell bash --use-on-cd --fnm-dir $HOME/.fnm)" for i in $(jq -r '.devDependencies | to_entries | map([.key, .value] | join("@")) | .[]' /opt/fnm/npm-packages.json); do npm install --global --no-audit $i done