Skip to content

Conversation

yhakbar
Copy link
Contributor

@yhakbar yhakbar commented Sep 25, 2025

Breaking down Pipelines architecture concepts so that we aren't assuming AWS only.

Copy link

vercel bot commented Sep 25, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
docs Ready Ready Preview Comment Sep 26, 2025 6:30pm

Copy link
Contributor

coderabbitai bot commented Sep 25, 2025

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch yousif/dev-1096-break-down-architecture-to-avoid-assuming-aws

Comment @coderabbitai help to get the list of available commands and usage tips.

@yhakbar yhakbar force-pushed the yousif/dev-1088-break-down-authenticating-to-the-cloud-to-avoid-assuming-aws branch from ce4a816 to 99522a4 Compare September 26, 2025 17:09
@yhakbar yhakbar changed the base branch from yousif/dev-1088-break-down-authenticating-to-the-cloud-to-avoid-assuming-aws to pipelines-v4 September 26, 2025 18:22
@yhakbar yhakbar force-pushed the yousif/dev-1096-break-down-architecture-to-avoid-assuming-aws branch from 9405d3e to 81af9f6 Compare September 26, 2025 18:24
Copy link
Contributor

@josh-padnick josh-padnick left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is fantastic content! Most of comments are around context and organization, but the core is great.

@@ -0,0 +1,143 @@
# Repository Topology

Gruntwork Account Factory provides an opinionated (but flexible) repository structure that supports organizations as they scale their infrastructure management across multiple AWS accounts. This approach is designed to help teams graduate from managing a handful of accounts with difficulty to being able to conveniently manage hundreds of accounts, all while maintaining high standards for security, compliance, and developer productivity.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gruntwork Account Factory provides an opinionated (but flexible) repository structure...

It might be worth clarifying what we mean by "provides" here. Is it more accurate to say that Gruntwork Account Factory assumes that you set up the following repo structure and is designed to work within that structure?

Alternatively, when I do my own docs update in a few weeks (hopefully soon), I plan to create a whole section on the AWS Platform Architecture. I'm wondering if the three-repo structure discussion belongs there, and then here we say that Account Factory assumes that structure?

If that resonates, then we should leave this as is for now, and I can just adjust that (via reviewable PR) later on.


Think of `infrastructure-live-root` as your organization's infrastructure command center. This repository, built from the [infrastructure-live-root-template](https://github.com/gruntwork-io/infrastructure-live-root-template), is where your platform team manages the foundational elements that every other AWS account depends on, and where your Account Factory workflow lives.

This repository is the only repository with access to the management account, and is granted access to all AWS accounts for your platform team to provision infrastructure in as necessary. This is also where your platform team can provision new AWS accounts with consistent baselines whenever teams need them. You'll also manage critical organization-wide infrastructure like your AWS Landing Zone, central logging, and security services in this repository.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This repository is the only repository with access to the management account, and is granted access to all AWS accounts for your platform team to provision infrastructure in as necessary. This is also where your platform team can provision new AWS accounts with consistent baselines whenever teams need them. You'll also manage critical organization-wide infrastructure like your AWS Landing Zone, central logging, and security services in this repository.
This repository is the only repository with access to the AWS management account, and is granted access to all AWS accounts for your platform team to provision infrastructure in as necessary. This is also where your platform team can provision new AWS accounts with consistent baselines whenever teams need them. You'll also manage critical organization-wide infrastructure like your AWS Landing Zone, central logging, and security services in this repository.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...and is granted access to all AWS accounts...

Can you clarify what this means? Does it mean that that we recommend configuring an OIDC role for this repo that has access to all AWS accounts? Or something else?


Access to this repository is intentionally restricted to your most trusted platform team members. Every other piece of infrastructure in your organization can trace back to the foundational services configured here.

### `infrastructure-live-root` workflows
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we're using "workflows" in a GitHub Actions sense here? Can we use more general language to talk about GitLab as well? Or if you want to split that into a separate PR, at least make explicit that these are specific GitHub Actions workflows that will live in this repo.


You can learn more about this in the ["Using the Account Factory Workflow" guide](/2.0/docs/accountfactory/guides/vend-aws-account).

:::
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's worth clarifying what the end user workflow is:

  • Launch the form
  • Generate the JSON
  • Pass it to the workflow


:::

- **Pipelines:** This is where Account Factory integrates with the Gruntwork Pipelines product to drive infrastructure changes via GitOps workflows. Every infrastructure change goes through a proper review process with pull requests, approvals, and controlled deployments. Your platform team gets the confidence of peer review while maintaining the ability to rapidly deploy critical infrastructure changes.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Pipelines:** This is where Account Factory integrates with the Gruntwork Pipelines product to drive infrastructure changes via GitOps workflows. Every infrastructure change goes through a proper review process with pull requests, approvals, and controlled deployments. Your platform team gets the confidence of peer review while maintaining the ability to rapidly deploy critical infrastructure changes.
- **Pipelines:** This is where Account Factory integrates with Gruntwork Pipelines to drive infrastructure changes via GitOps workflows. With Gruntwork Pipelines, every infrastructure change goes through a proper review process with pull requests, approvals, and controlled deployments. Your platform team gets the confidence of peer review while maintaining the ability to rapidly deploy critical infrastructure changes.


Unlike the infrastructure-live-root repository, this repository focuses on managing access control rather than defining infrastructure. You might grant write access to a broader group for managing access while maintaining tight control over the main branch. Encourage collaboration between platform teams and application engineers to review and refine access control continuously.

## Token Strategy
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we call this "CI/CD Token Strategy"?


Refer to [Configuring OpenId Connect in Amazon Web Services](https://docs.github.com/en/actions/deployment/security-hardening-your-deployments/configuring-openid-connect-in-amazon-web-services) for additional details.

### Roles provisioned by DevOps Foundations
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We've moved away from the "DevOps Foundations" term.


## Executor

The executor receives a pipeline action and an infrastructure change as input and executes the specified action on the change. For example, when responding to `AccountsAdded` events on merge, the executor may create a follow-up pull request in the `infrastructure-live-root` repository to include additional IaC code for baselining the newly added accounts.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It'd be helpful to clarify where these things run. For example, in the first paragraph, we say "The orchestrator determines..." But I think many users will wonder: "What is this orchestrator? Where does it run?"

Perhaps you could clarify that you define a core GitHub Actions workflow and then that calls other GitHub Actions workflows defined by Gruntwork which call a Go binary that we call the Pipelines binary. We could then further clarify that the orchestrator runs in a GitHub Actions workflow and calls the binary to figure out what to do.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, I realize now that you do clarify this in the architecture index. Might be worth referencing that directly.

## CI/CD pipelines

## `infrastructure-live-root`
Due to the way in which Pipelines is designed, customers run the binary as part of their CI/CD pipelines (e.g. GitHub Actions, GitLab CI, etc.). As such, Gruntwork provides Out of the Box CI/CD configurations for supported platforms when customers sign up for Gruntwork Pipelines in addition to [Gruntwork Account Factory](https://docs.gruntwork.io/account-factory/overview).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Due to the way in which Pipelines is designed, customers run the binary as part of their CI/CD pipelines (e.g. GitHub Actions, GitLab CI, etc.). As such, Gruntwork provides Out of the Box CI/CD configurations for supported platforms when customers sign up for Gruntwork Pipelines in addition to [Gruntwork Account Factory](https://docs.gruntwork.io/account-factory/overview).
By design, customers run the binary as part of their CI/CD pipelines (e.g. GitHub Actions, GitLab CI, etc.). As such, Gruntwork provides Out of the Box CI/CD configurations for supported platforms when customers sign up for Gruntwork Pipelines in addition to [Gruntwork Account Factory](https://docs.gruntwork.io/account-factory/overview).

class GDP,GMU,GLMU gruntwork
class Binary runtime
class OIDC,Cloud cloud
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Whoah, these diagrams are great! They clarify so much that I wonder if we should put them first, rather than at the bottom?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants