Skip to main content
Latest Documentation
This is the latest documentation for the Cloud Posse Reference Architecture. To determine which version you're currently using, please see Version Identification.
Version: Latest

Determine Your Reference Architecture Version

The Cloud Posse Reference Architecture has evolved significantly over time. This guide helps you identify which version of the architecture your infrastructure uses, so you can follow the appropriate documentation.

Quick Version Check

The easiest way to determine your version is to check which components exist in your infrastructure repository.

Version 1

You are using Version 1 if your infrastructure includes any of the following components:

ComponentPurpose
account-mapDynamically looks up AWS account IDs via Terraform remote state
aws-teamsCreates IAM roles for teams in the identity account
aws-team-rolesCreates assumable IAM roles in each account

Check for these components:

# Check if you have the account-map component
ls components/terraform/account-map/

# Check for aws-teams and aws-team-roles
ls components/terraform/aws-teams/
ls components/terraform/aws-team-roles/

If these directories exist and are actively used in your stack configurations, you are on Version 1.

Version 2

You are using Version 2 if your infrastructure:

  1. Does not have account-map, aws-teams, or aws-team-roles components
  2. Uses Atmos Auth profiles for identity management
  3. Uses static account mappings in stack configuration
  4. Uses the iam-role component for machine (CI/CD) access

Check for these indicators:

# Check for Atmos profiles directory
ls profiles/

# Check for static account_map in org defaults
grep -r "account_map:" stacks/orgs/

# Check for iam-role component
ls components/terraform/iam-role/

Detailed Comparison

Identity and Authentication

AspectVersion 1Version 2
Account ID Lookupaccount-map component with Terraform remote stateStatic account_map variable in stack config
Human AccessIAM roles via aws-teams/aws-team-rolesAWS SSO Permission Sets via Atmos Auth profiles
Machine Accessgithub-oidc-role componentiam-role component with GitHub OIDC support
Cross-Account RolesDynamic provider configuration from account-mapAtmos Auth profiles with Permission Sets
Identity AccountDedicated core-identity accountUses core-root for identity management

Configuration Patterns

PatternVersion 1Version 2
Terraform Remote StateUsed extensively for account lookupsMinimized; uses YAML and Atmos functions
Provider ConfigurationDynamic via account-map outputsStatic via Atmos Auth profiles
Cross-Component Dataterraform_remote_state data sources!terraform.output Atmos function or YAML
Account MappingTerraform outputs from account-mapStatic YAML in stacks/orgs/<namespace>/_defaults.yaml

File Structure Differences

Version 1 typically includes:

components/terraform/
├── account-map/
├── aws-teams/
├── aws-team-roles/
└── github-oidc-role/

stacks/catalog/
├── account-map/
├── aws-teams/
└── aws-team-roles/

Version 2 typically includes:

profiles/
├── superadmin/
├── managers/
├── devops/
├── developers/
└── github/

components/terraform/
└── iam-role/

stacks/catalog/
└── iam-role/
├── terraform.yaml
├── planner.yaml
└── gitops.yaml

Why the Architecture Changed

Version 2 simplifies the reference architecture by:

  1. Reducing Terraform Dependencies — Removing account-map eliminates a critical dependency that had to be deployed before most other components and required careful ordering. This also better supports brownfield deployments and alternate architectures.
  2. Simplifying Authentication — Atmos Auth profiles provide a cleaner, more maintainable approach to identity management than the complex web of IAM roles. This also removes usage of Leapp, which is deprecated.
  3. Better Separation of Concerns — Static account mappings in YAML keep configuration visible and auditable without requiring Terraform state access.

Migration Path

If you are on Version 1 and want to migrate to Version 2, this is a significant undertaking that requires careful planning. The migration involves:

  1. Set up AWS SSO Permission Sets — Configure Identity Center with appropriate permission sets for your teams.
  2. Create Atmos Auth profiles — Define profiles for different user roles (managers, devops, developers, github).
  3. Deploy iam-role components — Set up IAM roles for machine (CI/CD) access via GitHub OIDC.
  4. Remove Version 1 components — Delete account-map, aws-teams, and aws-team-roles from your infrastructure.
  5. Update component provider configurations — Migrate all components to use the new mixin-based provider pattern.

Contact Cloud Posse for assistance with migration planning.

Documentation Versions

This documentation site provides versioned documentation:

  1. Latest — Current documentation for Version 2 architecture
  2. v1 — Documentation for Version 1 architecture with account-map

Use the version selector in the navigation bar to switch between documentation versions.