Skip to content
1 change: 0 additions & 1 deletion _docs-sources/foundations/accounts/index.md

This file was deleted.

59 changes: 0 additions & 59 deletions _docs-sources/foundations/accounts/manage-accounts.md

This file was deleted.

68 changes: 0 additions & 68 deletions _docs-sources/foundations/ci-cd/index.md

This file was deleted.

27 changes: 27 additions & 0 deletions _docs-sources/foundations/iac-foundations/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# About IaC Foundations

The IaC Foundations component is focused on:

- Teaching you the considerations to think about when coming up with your foundational Terraform/OpenTofu and Terragrunt patterns
- Giving you a fully configured set of git repositories with an initial folder structure

## What's included

- **Strategy.** We recommend core patterns your Terragrunt and Terraform/OpenTofu git repo needs to incorporate to scale effectively.
- **IaC Modules.** No IaC modules are needed for this component.
- **Tooling.** We recommend Terragrunt to effectively use Terraform/OpenTofu at scale.
- **Setup.** We grant you access to a sophisticated git repo template that includes customization options and generates your repo code.
- **Updates.** We publish ongoing updates to IaC foundational patterns and will write [patches](/patcher) if applicable to adopt those changes.

## IaC foundations considerations

When creating your initial Terraform/OpenTofu and Terragrunt infrastructure, there are a number of patterns you need to consider how to solve, including:

- How to create the backend (e.g. S3 bucket) for storing Terraform state
- How to structure your folder hierarchy
- How to handle tagging and labels
- Whether to use branches per environment
- How to handle global variables
- How to handle module default values

This component includes either pre-baked implementations that address these considerations, or written guidance on how to incorporate them yourself.
27 changes: 27 additions & 0 deletions _docs-sources/foundations/iac-foundations/initial-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Initial setup

To set up IaC Foundations, we use three pre-configured git repository templates that include best practices and also allow for customization.

For each repository below, navigate to the template repository and select **Use this template** -> **Create a new Repository**. This will initiate repository creation. You should select your org as the owner, add a description if you like, make sure you are creating a **private** repo, and click **Create repository**.

The repository template will be created, and you can follow the instructions in the `README` to bootstrap your IaC Foundations. Gruntwork is available to assist with questions around other patterns as they arise.

### Infrastructure Live Template

_[https://github.com/gruntwork-io/infrastructure-live-template](https://github.com/gruntwork-io/infrastructure-live-template)_

This template creates an infrastructure-live repository with scaffolding for a best practices Terragrunt configuration, including patterns for module defaults, global variables, and account baselines. It also configures Gruntwork Pipelines, which is easy to remove if you don't want it.

### Infrastructure Modules Template

_[https://github.com/gruntwork-io/infrastructure-modules-template](https://github.com/gruntwork-io/infrastructure-modules-template)_

This template creates an empty infrastructure-modules repository that will be used to store Terraform/OpenTofu modules that your organization has authored and intends to use within your organization.

### Infrastructure Pipelines Template

_[https://github.com/gruntwork-io/infrastructure-pipelines-template](https://github.com/gruntwork-io/infrastructure-pipelines-template)_

This template is only necessary if you plan on implementing [Gruntwork Pipelines](../pipelines).


37 changes: 0 additions & 37 deletions _docs-sources/foundations/iac/index.md

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
# Add a new account
# Add a new AWS account

This document provides instructions for provisioning a new account in a Control Tower managed organization using Gruntwork. The described workflow gives you the flexibility to require approval for all new account requests in accordance with the permissions configured in your repository.
This document provides instructions for provisioning a new AWS account using Gruntwork Landing Zone. The described workflow gives you the flexibility to require approval for all new AWS account requests in accordance with the permissions configured in your git repository.

## Prerequisites

Before proceeding, ensure you have an `infrastructure-live` repository which contains:

- The [`control-tower-multi-account-factory` module](https://GitHub.com/gruntwork-io/terraform-aws-control-tower/tree/main/modules/landingzone/control-tower-multi-account-factory) configured in the root account
<!-- Repo must include the multi-account factory module configured in the root account -->
- An installation of [Gruntwork Pipelines](https://LINK-TO-VALID-DOC)
- An installation of [Gruntwork Pipelines](/pipelines/overview)

## 1. Create an account request file
## 1. Create an AWS account request file

To initiate the process, create an `account-<AWS-ACCOUNT-NAME>.yml` file in the `_new-account-requests` folder located in the root of your `infrastructure-live` repository. This file will be used to create a pull request and add the new account to your organization. The file should have the following format:

Expand Down Expand Up @@ -40,28 +40,16 @@ requested_by: <GITHUB_USER_ID_OR_EMAIL>

:::note

If you have configured GitHub Actions in your `infrastructure-live` repository with an [Account Factory workflow](https://LINK-TO-VALID-DOC), you can invoke that workflow via the GitHub UI or programmatically. This workflow will automatically create the account request file and open a pull request on your behalf. After doing so, jump to [step 3](#3-review-and-merge-the-account-request-pr).
If you have configured GitHub Actions in your `infrastructure-live` repository with a Gruntwork Landing Zone Account Factory workflow, you can invoke that workflow via the GitHub UI or programmatically. This workflow will automatically create the account request file and open a pull request on your behalf. After doing so, jump to [step 3](#3-review-and-merge-the-account-request-pr).

:::

## 2. Create a pull request

Next, create a pull request containing the new account request file. This action will trigger the Gruntwork pipeline to `terragrunt plan` the new account and update the pull request with the plan output.

:::caution

Currently the output is still only available in the `infrastructure-pipelines` repository’ GitHub Actions logs. This will be updated shortly to be available in the pull request and this notice will be removed.

:::

## 3. Review and merge the account request PR

:::caution

Currently the output is still only available in the `infrastructure-pipelines` repository’ GitHub Actions logs. This will be updated shortly to be available in the pull request and this notice will be removed.

:::

Review the `plan` output in the pull request. Once satisfied, merge the pull request to trigger creation of the new account. Gruntwork Pipelines will run `terragrunt apply` to create the new account in Control Tower.

:::tip
Expand All @@ -88,11 +76,3 @@ After the pipeline for the new account request completes, the new account will e
- A new OIDC role required to install the baseline and enable Gruntwork Pipelines to run within the new account

When you merge this pull request, Gruntwork Pipelines will automatically deploy the Gruntwork account baselines into the new account and provision a role that Pipelines can assume to deploy resources into this account. Once this process completes, you may access your account and leverage Gruntwork Pipelines to make any further changes to the infrastructure in your new account.


<!-- ##DOCS-SOURCER-START
{
"sourcePlugin": "local-copier",
"hash": "670b3052d7a0b330e817de27ad6d29f8"
}
##DOCS-SOURCER-END -->
Loading