Include profile::boot_security_upgrade in role::openvpn_server - #297
Merged
Conversation
Takes the default fail_on_error => false: like the jumphost and unlike a runner, the VPN server is long-lived, so an unpatched-but-reachable server beats an ABANDONed one. role/ lives only in global modules/, so this one file covers all three environments. Verification is thinner than #296 by necessity: role::openvpn_server does not compile locally, and does not at HEAD either without this change (exit 1, no output, unrelated to it) -- profile::openvpn_server needs provisioning-time inputs this laptop cannot supply. Checked instead: puppet-lint, puppet parser validate, and that neither cloud-guest-utils nor awscli is declared by profile::openvpn_server, which was the only plausible duplicate-declaration collision.
infrahouse8
approved these changes
Aug 22, 2026
akuzminsky
added a commit
that referenced
this pull request
Aug 22, 2026
The prerequisite half for BookStack. Nothing tags these instances yet: the tag comes from website-pod's defer_inspector_findings_until_patched (infrahouse/terraform-aws-website-pod#132), which must not be enabled until this is deployed. The tag is fail-open -- an instance that launches tagged with nothing to remove it is permanently invisible to Inspector -- so Puppet leads and Terraform follows. Takes the default fail_on_error => false: the wiki is a long-lived stateful singleton, so an unpatched-but-serving host beats an ABANDONed one. Also fixes the role's @summary, which said "Puppet role for a jumphost". Verification is the same tier as #297 and for the same reason: role::bookstack does not compile locally, and does not at HEAD either without this change (exit 1, no output) -- profile::bookstack::config needs provisioning-time inputs this laptop cannot supply. Confirmed by compiling both ways rather than assuming. Checked instead: puppet-lint, puppet parser validate, and that neither cloud-guest-utils nor awscli is declared anywhere in the bookstack profile tree, which was the only plausible duplicate-declaration collision.
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.
Next service after
role::jumphost(#296). Same one-line shape:role/lives only in globalmodules/— environments carry justprofile/— so this one file covers all three environments.Why openvpn next
Checked the sandbox account before picking. The
jumphostandactions-runnerASGs are currently the only two stampingInspectorEc2Exclusion, and no running instance carries the tag — every launched instance got tagged and Puppet removed it. The mechanism is working, so extending it is low risk.openvpn is ASG-backed, exists in both sandbox and prod so it can be rehearsed, and runs two instances — which matters for the cohort-relative coverage detector proposed in the reconciliation-lag writeup, since that check needs a same-AMI sibling to compare against.
Works without the Terraform side
No
InspectorEc2Exclusiontag is set on the openvpn ASG yet. That is fine and deliberate:delete-tagsignores a key that is not present, and every failure path in the script logs and returns 0. Until the Terraform change lands this simply patches at boot, which is worth having on its own.Verification
Thinner than #296, by necessity.
role::openvpn_serverdoes not compile on a laptop — and does not compile at HEAD either, without this change (exit 1, no output).profile::openvpn_serverneeds provisioning-time inputs that cannot be stubbed here, so the failure is pre-existing and unrelated. I confirmed that by compiling both with and without the change rather than assuming it.What was checked:
puppet-lint --fail-on-warnings modules/role— cleanpuppet parser validate— cleancloud-guest-utilsnorawscliis declared byprofile::openvpn_serveror its sub-manifests, which was the only plausible duplicate-declaration collision (profile::boot_security_upgradedeclares the first and includesprofile::packagesfor the second, while the role already pullsprofile::base)Worth a real check on the first sandbox apply, since CI does not compile catalogs.
Not in scope
InspectorEc2Exclusiontag andec2:DeleteTagsinterraform-aws-openvpn— follows separately, same shape asterraform-aws-jumphost🤖 Generated with Claude Code
https://claude.ai/code/session_01KLGAXtoyoakLXUjaJSL4M3