# terraform-data-engineering-infrastructure

A skill with Terraform patterns for data engineering: S3 data lake buckets, EC2 processing nodes, IAM roles. Useful when AWS infrastructure has to be described in code, not clicked together.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1800 installs · ★ 5
- Author: reason-machines
- License: LicenseRef-Unknown · policy=link-only · description only; the file stays with the author
- Source: https://github.com/reason-machines/data-skills/tree/HEAD/skills/terraform-data-engineering-infrastructure/SKILL.md
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/skills/terraform-data-engineering-infrastructure

## What it does

The skill gives your agent ready HCL blocks for data infrastructure on AWS. It covers an S3 bucket for raw data with versioning and public access blocked, an EC2 instance for ETL work with its security group, plus an IAM role and policy that let that instance read and write the bucket.

You need an AWS account with admin access, Terraform 1.0 or newer, a configured AWS CLI, and an IAM user holding full S3, EC2 and IAM permissions. The source is explicit that this permission set is meant for development and learning, and that production should use least-privilege policies. Worth heeding before you copy the templates into a live account.

From there it is the usual Terraform loop: `terraform -chdir=terraform init`, `validate`, `plan`, `apply`. State lands in `terraform.tfstate`, so `destroy` removes everything the configuration describes. The project layout marks `variables.tf` and `outputs.tf` as optional, so don't be surprised if they aren't there.

## Requirements
- Works with: Terraform, AWS

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill terraform-data-engineering-infrastructure -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/terraform-data-engineering-infrastructure/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/terraform-data-engineering-infrastructure/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill terraform-data-engineering-infrastructure -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/terraform-data-engineering-infrastructure/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill terraform-data-engineering-infrastructure -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/terraform-data-engineering-infrastructure/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install reason-machines/data-skills terraform-data-engineering-infrastructure
```

2. **Manually: put the files in place**
- File: `.github/skills/terraform-data-engineering-infrastructure/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill terraform-data-engineering-infrastructure -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/reason-machines/data-skills --path skills/terraform-data-engineering-infrastructure
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/terraform-data-engineering-infrastructure/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add reason-machines/data-skills --skill terraform-data-engineering-infrastructure -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/reason-machines/data-skills/tree/HEAD/skills/terraform-data-engineering-infrastructure/SKILL.md

## When to use it
- describe an S3 data lake bucket with versioning
- spin up an EC2 instance for ETL jobs
- grant a processing node access to S3 through an IAM role
- reproduce the same stack in dev and prod
- tear down a test environment with one command

## Example prompts
- Write Terraform for an S3 bucket holding raw data, with versioning and public access blocked
- Create an EC2 instance for data processing and an IAM role that can reach the bucket
- Run terraform -chdir=terraform validate and show me the plan

## Similar
- [terraform-infrastructure](https://affpapa.org/en/nevibecode/skills/terraform-infrastructure.md) — skill · 1200 installs
- [terraform-generator](https://affpapa.org/en/nevibecode/skills/terraform-generator.md) — skill · 639 installs
- [setting-up-ec2-instance-profiles](https://affpapa.org/en/nevibecode/skills/setting-up-ec2-instance-profiles.md) — skill · 6200 installs
- [managing-amazon-kinesis-data-streams](https://affpapa.org/en/nevibecode/skills/managing-amazon-kinesis-data-streams.md) — skill · 1800 installs
- [terraform-aws](https://affpapa.org/en/nevibecode/skills/terraform-aws.md) — skill · 387 installs
- [terraform-module-library](https://affpapa.org/en/nevibecode/skills/terraform-module-library.md) — skill · 15615 installs

From the same set: [reason-machines/data-skills](https://affpapa.org/en/nevibecode/by/reason-machines/data-skills.md) — 22 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
