Skip to content

Add p_role_tart_worker blueprint - #320

Merged
rcurranmoz merged 1 commit into
mozilla-platform-ops:masterfrom
rcurranmoz:add-p-role-tart-worker-pkg
Aug 19, 2026
Merged

Add p_role_tart_worker blueprint#320
rcurranmoz merged 1 commit into
mozilla-platform-ops:masterfrom
rcurranmoz:add-p-role-tart-worker-pkg

Conversation

@rcurranmoz

Copy link
Copy Markdown
Contributor

Adds a munki-pkg blueprint delivering /etc/puppet_role = tart_worker, so tart VM hosts get their role from MDM instead of by hand.

Why

The SimpleMDM Tart assignment group (2105807) carries only Passwordless Sudo for Admins and Command Line Tools — no role pkg, unlike the m4 bootstrap group's p_role_1500. So the role file was set by hand on all 16 pre-existing tart hosts, with no record of how, and it does not survive a wipe.

That matters more than it first looks. hiera keys per-role data on the puppet_role fact (roles/%{facts.puppet_role}.yaml), and run-puppet.sh:216 derives that fact from /etc/puppet_role. A host without the file silently falls back to builder defaults — a noop apply on macmini-m4-245 planned:

  • ~/Library/LaunchAgents instead of /Library/LaunchDaemons for the worker jobs
  • Exec[pull_initial_image], which manage_image: false explicitly forbids
  • no macos_step_cert at all, so no renewing client cert and no vault fetch

With the role file present, the catalog is correct. The failure is silent, and it would have produced eight subtly-wrong hosts.

Contents

Byte-identical to p_role_gecko_t_osx_1500_m4 apart from the role name:

identifier com.github.munki.pkg.p_role_tart_worker
payload /etc/puppet_roletart_worker
size 11 bytes, no trailing newline (the m4 blueprint's is 19, also unterminated)

The absent newline is deliberate, matching the existing convention. This repo has no end-of-file-fixer pre-commit hook so it survives commit — worth knowing before one gets added.

Already in production

This lands the source for something already deployed: signed with Developer ID Installer: Mozilla Corporation (43AQ936H96), uploaded as SimpleMDM app 690299, attached to group 2105807, and verified installed on all 24 members — the 8 newly-onboarded tart hosts plus the 16 existing ones, where it replaced the hand-set file with a receipt-backed one.

Build and sign with the documented flow:

munkipkg p_role_tart_worker
./scripts/sign.sh p_role_tart_worker/build/p_role_tart_worker-1.0.pkg

Note: this repo's blueprints are not the source of truth for what is deployed

The deployed m4 role pkg is SimpleMDM app 'Puppet Role 1500 Prod' / com.github.munki.pkg.p_role_1500, but this repo's blueprint is p_role_gecko_t_osx_1500_m4 — a different identifier, so the deployed pkg was not built from here. The new blueprint follows the repo's own convention. Worth reconciling separately.

🤖 Generated with Claude Code

Tart VM hosts need /etc/puppet_role = tart_worker, and until now nothing delivered it. The
SimpleMDM Tart assignment group (2105807) carries only Sudoers and Command Line Tools -- no
role pkg, unlike the m4 bootstrap group's p_role_1500 -- so the role file was set by hand on
every one of the 16 pre-existing tart hosts, with no record of how.

That matters more than it looks: hiera keys per-role data on the puppet_role FACT
(roles/%{facts.puppet_role}.yaml), and run-puppet.sh derives that fact from /etc/puppet_role.
A host missing the file silently falls back to builder defaults -- a noop apply on
macmini-m4-245 planned LaunchAgents instead of LaunchDaemons, an image pull that
manage_image: false forbids, and omitted macos_step_cert entirely.

Byte-identical to p_role_gecko_t_osx_1500_m4 apart from the role name, including the payload's
lack of a trailing newline (11 bytes, matching that blueprint's 19).

Already signed and in production: uploaded as SimpleMDM app 690299
(com.github.munki.pkg.p_role_tart_worker), attached to group 2105807, and verified installed on
all 24 members -- the 8 new hosts plus the 16 existing ones, where it replaced the hand-set file
with a receipt-backed one. This commit lands the source for what is already deployed.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@rcurranmoz
rcurranmoz merged commit f984630 into mozilla-platform-ops:master Aug 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant