-
Notifications
You must be signed in to change notification settings - Fork 36
mac maintenance
This document describes the manual steps required to maintain the Mac signers.
Until we fully automate setup and maintenance, maintenance must be performed by SSHing into each Mac.
The list of available machines can be found here. Please keep the machine statuses up to date on that page.
Before performing maintenance, consider quarantining the machine to prevent jobs from being scheduled on it.
Scriptworkers are currently installed to /usr/local/builds. See modules/roles_profiles/manifests/profiles/mac_v3_signing.pp for more information.
We use Duo for authentication on the Mac signers. To access a Mac via SSH, your account must be added to the Duo allowlist.
If you’d like to cache your ssh authentication for 10 minutes per host, add the following to your ~/.ssh/config:
Host dep-mac-v4-signing* adhoc-mac-v4-signing* fx-mac-v4-signing* tb-mac-v4-signing* vpn-mac-v4-signing*
ControlMaster auto
ControlPath ~/.ssh/ssh-%C
ControlPersist 10m
To update Python packages on the Mac signers:
-
In the ronin_puppet repository, run:
data/update-scriptworker-revisions.py
This updates the workers to point to the latest
scriptworker-scriptsmaster revision. -
Create a pull request and merge it into the
masterbranch. -
After merging, push
masterto themacos-signer-latestbranch:git fetch && git push origin origin/master:macos-signer-latest -
The Mac signers automatically self-update every 15 minutes based on the
macos-signer-latestbranch.
The Widevine repository is not revision-pinned and is not updated automatically. To update it manually:
-
Update the Widevine repository.
-
Remove the existing Widevine directory on the signing workers:
# ff-prod or tb-prod rm -rf /usr/local/builds/scriptworker/widevine # dep environments rm -rf /usr/local/builds/{dep1,dep2,tb-dep,etc}/widevine
-
When you run Puppet (see below), it will repopulate and reinstall Widevine with the latest code.
If you’re performing maintenance on a Mac (remember to quarantine it first!), you may want to temporarily disable periodic Puppet runs.
You can do this in one of two ways:
- Modify
/usr/local/bin/periodic-puppet.shto exit early before running Puppet. - Unload the
com.mozilla.periodic.plistLaunchDaemon (see below).
Ensure Puppet is not already running before unloading it, otherwise it may revert your changes.
There are two types of LaunchDaemons on the signers:
-
Puppet periodic daemon:
/Library/LaunchDaemons/com.mozilla.periodic.plist -
Scriptworker daemons:
/Library/LaunchDaemons/org.mozilla.scriptworker.*.plist
To unload the Puppet periodic daemon:
launchctl unload /Library/LaunchDaemons/com.mozilla.periodic.plistTo unload all Scriptworker daemons:
for d in /Library/LaunchDaemons/org.mozilla.scriptworker.*.plist; do launchctl unload "$d"; doneSecrets must be wiped whenever a machine is being moved, repurposed, or retired — or if there’s any chance it may have been compromised.
Secrets are stored in the certs/ directory inside the scriptworker install location.
When wiping secrets, remove the following files (using rm -P to securely overwrite them):
-
ed25519_privkey(production only) *.keychainwidevine*.crt