> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fastfoundation.nimble.la/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting Started

> Set up your environment and deploy Fast Foundation infrastructure

## Prerequisites

### Required Tools

You will need to install some cli-tools. If you've set these up before, double-check that your versions meet the requirements.

<CardGroup cols={3}>
  <Card title="AWS CLI" icon="aws" href="https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html">
    The AWS Command Line Interface.
  </Card>

  <Card title="Terragrunt" icon="code" href="https://terragrunt.gruntwork.io/docs/getting-started/install/">
    A thin wrapper for Terraform.
  </Card>

  <Card title="Terraform" icon="cube" href="https://developer.hashicorp.com/terraform/install">
    **Min. version:** `1.11.3`
  </Card>

  <Card title="Kubectl" icon="dharmachakra" href="https://kubernetes.io/docs/tasks/tools/">
    For interacting with Kubernetes clusters
  </Card>

  <Card title="Helm" icon="dharmachakra" href="https://helm.sh/docs/intro/install/">
    Package manager for Kubernetes
  </Card>
</CardGroup>

***

## Reduce Disk Usage

Fast Foundation modules are sourced from a dedicated git repository. Each `terragrunt init` clones modules and downloads provider plugins. Without caching, the AWS provider alone (\~762 MB) gets duplicated in every unit's `.terraform/` directory -- with 40+ units this adds up to **tens of gigabytes** of wasted disk space.

### Provider Plugin Cache (Required)

The provider plugin cache stores provider binaries once and hardlinks them into each unit, reducing per-unit storage overhead to effectively **zero**.

**Step 1:** Create the cache directory:

```bash theme={null}
mkdir -p ~/.terraform.d/plugin-cache
```

**Step 2:** Create or edit `~/.terraformrc` with these two lines:

```hcl theme={null}
plugin_cache_dir = "$HOME/.terraform.d/plugin-cache"
plugin_cache_may_break_dependency_lock_file = true
```

<Warning>
  Both lines are required. Without `plugin_cache_may_break_dependency_lock_file`, Terraform copies provider binaries instead of hardlinking them, negating the disk savings.
</Warning>

More information: [Terraform Provider Plugin Cache documentation](https://developer.hashicorp.com/terraform/cli/config/config-file#provider-plugin-cache)

### Additional Tips

<Check>
  * **Use `--provider-cache` flag** when running `terragrunt run --all init --provider-cache` to leverage the cache during bulk initialization
  * **Clean up `.terraform/` directories** periodically if disk space is a concern: `find . -name ".terraform" -type d -exec rm -rf {} +` (then re-run `terragrunt init`)
  * **Avoid initializing the entire repo** if you only work on a few accounts -- run `terragrunt init` from the specific account or region folder instead
</Check>
