soft guideINFRASTRUCTURE & ADVISORY

Note 11

Nobody applies from a laptop

Infrastructure delivery through Atlantis: a plan for every changed stack on the pull request, checked against security policy, applied only after approval, nightly drift detection, and a supply chain signed end to end.

In the platform
Launch package · CI/CD module, also sold on its own
Experience behind it
Designed the CI roles and the reusable pipeline library with its versioning. The baseline adds Atlantis with policy checks, image signing and admission-time verification.
Pull requestfmt · lint · scans · testsAtlantis planchanged stacks onlyPolicy checkconftest on the planApprove, applythe reviewed planNightly drift checkplan every stack · issue per drifted stack

What CI applies were missing

Moving applies from laptops to CI removes credentials from laptops. It does not guarantee that the plan a reviewer approved is the plan that runs, and security rules live only in reviewers' heads.

How the platform applies

deny contains msg if {
  some rc in input.resource_changes
  rc.type in protected
  "delete" in rc.change.actions
  object.get(object.get(rc.change.before, "tags", {}), "allow-destroy", "false") != "true"
  msg := sprintf("%s would be destroyed; tag it allow-destroy=true in a reviewed change first", [rc.address])
}

The policies live in the image

If the policies were read from the repository, a pull request could change the policy that checks it. They are baked into the Atlantis image instead, built and signed by CI; a policy change is a new image, reviewed like any other change. Overrides exist, but only the policy owners can approve one, and the approval is recorded on the pull request.

What it changes

The plan a reviewer approves is the plan that runs, and security rules are enforced on the plan itself rather than remembered by reviewers. Drift is found the next morning instead of during the next incident.

Start a conversation

Bring your infrastructure
into focus.

Tell me what you are building, operating, or trying to improve.

Let’s talk