DLPX-97162 Add internal-claude variant for Claude Code developer environments#865
Merged
Conversation
14a3db4 to
8bf86fe
Compare
lyriclake
approved these changes
May 8, 2026
71fe86d to
606b841
Compare
…ronments Adds a new internal-claude appliance variant (AWS-only) that provisions a ready-to-use Claude Code developer environment on boot. The variant layers a claude-internal Ansible role on top of minimal-common + minimal-internal + minimal-development. The role: - Installs Claude CLI via npm (avoids Bun SIGILL crash in live-build chroot) - Pre-clones six product repos (dlpx-app-gate, dlpx-qa-gate, dms-core-gate, zfs, cd-aidlc, git-utils) under ~delphix/src/ using a build-time GITHUB_TOKEN; rewrites remote URLs to SSH form after cloning - Adds delphix to a support-tools group (gid 4000) - Mounts the support-tools NFS share at /nas via a systemd nas.mount unit (After/Wants=network-online.target) rather than /etc/fstab, since 90-raw-disk-image.binary overwrites fstab after the ansible chroot stage - Overrides the cloud-init apt source preservation setting so that apt sources can be modified post-boot - Adds git-utils/bin to the login shell PATH via /etc/profile.d/ Also fixes 80-build-configuration.binary to use trap cleanup EXIT so /proc, /sys, and /dev bind mounts are always cleaned up even when the ansible playbook fails mid-run.
31ad307 to
b04395b
Compare
prakashsurya
commented
May 8, 2026
sebroy
approved these changes
May 8, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Developers working with Claude Code need a pre-configured appliance image that
is ready to use on first boot — with the Claude CLI installed, product repos
pre-cloned, and standard tooling wired up. Today there is no such image; each
developer must manually install and configure everything on a stock internal VM.
Solution
Add a new
internal-claudeappliance variant (AWS-only) that layers aclaude-internalAnsible role on top ofminimal-common + minimal-internal + minimal-development. On first boot the VM provides:/usr/local/bin/claude)~delphix/src/at their configuredbranches, with remote URLs rewritten to SSH form (no build-time token on disk):
delphix/dlpx-app-gate@developdelphix/dlpx-qa-gate@developdelphix/dms-core-gate@developdelphix/zfs@developdelphix/cd-aidlc@maindelphix/git-utils@maindelphixas a member/nasvia a systemdnas.mountunit(
After/Wants=network-online.target); uses a unit file rather than/etc/fstabbecause90-raw-disk-image.binaryoverwrites fstab after theansible chroot stage
/etc/cloud/cloud.cfg.d/99-delphix-claude.cfg)/etc/profile.d/Also fixes
80-build-configuration.binaryto usetrap cleanup EXITso/proc,/sys, and/devbind mounts are always torn down even when theansible playbook fails mid-run.
The build requires
GITHUB_TOKENto be set (asserted at the top of the role);without it the build fails fast with a clear message.
Testing Done
./gradlew buildInternalClaudeAwssucceeds withGITHUB_TOKENset —produces
internal-claude-aws.{vmdk,debs.tar.gz,packages.list}./gradlew buildInternalClaudeAwswithoutGITHUB_TOKENfails fast at theassertion task with the expected
fail_msggit-ab-pre-push -v internal-claude --no-testspassed CI(appliance-build pre-push #13984, stage1 #62229)
claude --version→2.1.132 (Claude Code)support-toolsgid 4000,delphixin groupnas.mountenabled, unit file correct99-delphix-claude.cfgpresent with correct contentgit-utils/binin PATH~/.claude/settings.jsonFuture Work
~/.claude/settings.jsonwith "Generated with Claude" attributiondefaults (deferred to a follow-on spec)
JIRA: https://perforce.atlassian.net/browse/DLPX-97162