Skip to content

Commit e1b1932

Browse files
docs: update documentation, more readable, concise
1 parent 0eee094 commit e1b1932

File tree

1 file changed

+111
-111
lines changed

1 file changed

+111
-111
lines changed

README.md

Lines changed: 111 additions & 111 deletions
Original file line numberDiff line numberDiff line change
@@ -1,84 +1,71 @@
1+
<img src="doc/logo.png" alt="Terraform Development Environment Logo" width="200"/>
2+
13
# Terraform Development Environment
24

3-
A comprehensive VS Code Dev Container that provides a consistent, pre-configured environment for developing, testing, and deploying infrastructure as code with Terraform across AWS, Azure, and GCP.
5+
[![GitHub stars](https://img.shields.io/github/stars/awslabs/aws-terraform-dev-container?style=social)](https://github.com/awslabs/aws-terraform-dev-container/stargazers)
6+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
7+
[![Latest Release](https://img.shields.io/github/v/release/awslabs/aws-terraform-dev-container)](https://github.com/awslabs/aws-terraform-dev-container/releases)
8+
9+
A comprehensive VS Code Dev Container providing a consistent, pre-configured environment for developing, testing, and deploying infrastructure as code with Terraform across AWS, Azure, and GCP.
410

511
> **Boost your infrastructure development productivity with a ready-to-use, standardized environment that works the same way for everyone on your team, across all major cloud providers.**
612
7-
This project eliminates the pain of setting up and maintaining development environments for Terraform, allowing you to focus on writing high-quality infrastructure code instead of wrestling with tool installations and configurations.
8-
9-
## Table of Contents
10-
11-
- [The Problem We're Solving](#the-problem-were-solving)
12-
- [Why Use This Dev Container?](#why-use-this-dev-container)
13-
- [Features](#features)
14-
- [Prerequisites](#prerequisites)
15-
- [Getting Started](#getting-started)
16-
- [Included Tools](#included-tools)
17-
- [Authentication](#authentication)
18-
- [VS Code Tasks](#vs-code-tasks)
19-
- [Pre-commit Hooks](#pre-commit-hooks)
20-
- [Environment Variables](#environment-variables)
21-
- [Customization](#customization)
22-
- [Advanced Usage](#advanced-usage)
23-
- [Use Cases](#use-cases)
24-
- [Productivity Benefits](#productivity-benefits)
25-
- [Real-World Success Stories](#real-world-success-stories)
26-
- [Volume Mounts](#volume-mounts)
27-
- [Security Considerations](#security-considerations)
28-
- [Troubleshooting](#troubleshooting)
29-
- [Getting Help](#getting-help)
30-
- [Contributing](#contributing)
31-
- [License](#license)
32-
33-
## The Problem We're Solving
13+
## Quick Links
14+
15+
- [Features](#-features) | [Prerequisites](#-prerequisites) | [Getting Started](#-getting-started)
16+
- [Tools](#-tools) | [Authentication](#-authentication) | [Configuration](#️-configuration)
17+
- [Contributing](#-contributing) | [License](#-license) | [Getting Help](#-getting-help)
18+
19+
---
20+
21+
## 🔍 The Problem We're Solving
3422

3523
Infrastructure as code (IaC) development with Terraform presents several challenges:
3624

37-
- **Environment Setup Complexity**: Setting up a development environment with all necessary tools, versions, and configurations is time-consuming and error-prone
38-
- **Cross-Cloud Development**: Working across multiple cloud providers requires managing different CLIs, authentication methods, and best practices
39-
- **Security and Compliance**: Ensuring infrastructure code meets security standards and follows best practices requires specialized tools
40-
- **Team Consistency**: Maintaining consistent development environments across team members is difficult
41-
- **Onboarding Friction**: New team members often spend days configuring their environment before becoming productive
25+
- **Environment Setup Complexity**: Time-consuming and error-prone setup process
26+
- **Cross-Cloud Development**: Managing different CLIs and authentication methods
27+
- **Security and Compliance**: Ensuring code meets security standards
28+
- **Team Consistency**: Maintaining consistent environments across team members
29+
- **Onboarding Friction**: New team members often spend days configuring their environment
4230

4331
This development container solves these problems by providing a ready-to-use, standardized environment with all necessary tools pre-configured.
4432

45-
## Why Use This Dev Container?
33+
---
4634

47-
- **Instant Productivity**: Start developing Terraform code immediately without spending time on environment setup
48-
- **Standardized Tooling**: Ensures everyone on your team uses the same versions of tools and follows the same practices
49-
- **Built-in Best Practices**: Includes pre-configured security scanning, linting, and validation tools
50-
- **Multi-Cloud Ready**: Supports AWS, Azure, and GCP development out of the box
51-
- **Reduced Onboarding Time**: New team members can be productive within minutes instead of days
52-
- **Consistent Experience**: Works the same way on any operating system that supports Docker and VS Code
35+
## 🌟 Features
5336

54-
## Features
37+
- ☁️ **Multi-cloud Support**: Pre-installed CLIs and tools for AWS, Azure, and GCP
38+
- 🛠️ **Complete Terraform Ecosystem**: Comprehensive suite of tools including terraform-docs, tflint, tfsec, and more
39+
- 🔒 **Security and Compliance**: Pre-commit hooks for security scanning and compliance checking
40+
- 💻 **Enhanced Developer Experience**: VS Code integration with tasks, settings, and extensions
41+
-**Performance Optimization**: Caching strategies and optimized volume mounts
42+
- 🧪 **Testing and Validation**: Built-in tools for testing infrastructure code
43+
- 💰 **Cost Management**: Integrated cost estimation with Infracost
5544

56-
- **Multi-cloud Support**: Pre-installed CLIs and tools for AWS, Azure, and GCP with streamlined authentication
57-
- **Complete Terraform Ecosystem**: Comprehensive suite of tools including terraform-docs, tflint, tfsec, terrascan, terragrunt, terratest, and more
58-
- **Security and Compliance**: Pre-commit hooks for security scanning, compliance checking, and credential management
59-
- **Enhanced Developer Experience**: VS Code integration with tasks, settings, extensions, and snippets
60-
- **Performance Optimization**: Caching strategies and optimized volume mounts for faster operations
61-
- **Testing and Validation**: Built-in tools for testing infrastructure code and validating changes
62-
- **Cost Management**: Integrated cost estimation with Infracost
45+
---
6346

64-
## Prerequisites
47+
## 🔍 Prerequisites
6548

6649
- [Docker](https://www.docker.com/products/docker-desktop/) - Required for running containers
6750
- [Visual Studio Code](https://code.visualstudio.com/) - The recommended IDE
6851
- [VS Code Remote Development Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) - Required for Dev Containers
6952

70-
## Getting Started
53+
---
54+
55+
## 🚀 Getting Started
7156

7257
### Quick Start
7358

7459
1. Clone this repository:
7560
```bash
76-
git clone <repository-url>
61+
git clone https://github.com/awslabs/aws-terraform-dev-container.git
62+
# or with SSH
63+
git clone [email protected]:awslabs/aws-terraform-dev-container.git
7764
```
7865

7966
2. Open the folder in VS Code:
8067
```bash
81-
code .
68+
code aws-terraform-dev-container
8269
```
8370

8471
3. When prompted, click "Reopen in Container" or use the command palette (F1) and select "Remote-Containers: Reopen in Container"
@@ -87,9 +74,9 @@ This development container solves these problems by providing a ready-to-use, st
8774

8875
5. Start developing with all tools pre-configured and ready to use!
8976

90-
### Recommended Workflow
77+
<img src="doc/images/screenshot-1.gif" alt="Dev Container in Action" width="600"/>
9178

92-
For the most efficient development experience, we recommend this workflow:
79+
### Recommended Workflow
9380

9481
1. **Initialize your project**: Use VS Code tasks to run `terraform init`
9582
2. **Install pre-commit hooks**: Run `pre-commit install` to set up automated validation
@@ -125,7 +112,9 @@ project/
125112

126113
This structure promotes code reuse, environment isolation, and easier testing.
127114

128-
## Included Tools
115+
---
116+
117+
## 🔧 Tools
129118

130119
| Tool | Version | Description |
131120
|------|---------|-------------|
@@ -143,7 +132,9 @@ This structure promotes code reuse, environment isolation, and easier testing.
143132
| checkov | 3.2.439 | Static code analysis tool for IaC |
144133
| pre-commit | Latest | Framework for managing git pre-commit hooks |
145134

146-
## Authentication
135+
---
136+
137+
## 🔐 Authentication
147138

148139
The container includes helper scripts for authenticating with each cloud provider:
149140

@@ -165,7 +156,9 @@ The container includes helper scripts for authenticating with each cloud provide
165156
.devcontainer/scripts/gcp-auth.sh [--project PROJECT_ID] [--credentials FILE_PATH]
166157
```
167158

168-
## VS Code Tasks
159+
---
160+
161+
## 📋 VS Code Tasks
169162

170163
The environment includes pre-configured VS Code tasks for common operations:
171164

@@ -182,59 +175,70 @@ The environment includes pre-configured VS Code tasks for common operations:
182175

183176
To run a task, press `Ctrl+Shift+P` (or `Cmd+Shift+P` on macOS) and select "Tasks: Run Task", then choose the task you want to run.
184177

185-
## Pre-commit Hooks
178+
---
179+
180+
## 🔄 Pre-commit Hooks
186181

187182
The environment includes pre-configured pre-commit hooks for Terraform validation, formatting, and security scanning. To install the hooks:
188183

189184
```bash
190185
pre-commit install
191186
```
192187

193-
## Environment Variables
188+
---
189+
190+
## ⚙️ Configuration
191+
192+
### Environment Variables
194193

195194
Environment variables for Terraform and cloud providers can be configured in `.devcontainer/config/terraform.env`. The following variables are available:
196195

197-
### Terraform Configuration
196+
#### Terraform Configuration
198197

199198
- `TF_PLUGIN_CACHE_DIR` - Directory for caching Terraform plugins
200199
- `TF_CLI_ARGS_init` - Arguments for `terraform init`
201200
- `TF_CLI_ARGS_plan` - Arguments for `terraform plan`
202201
- `TF_CLI_ARGS_apply` - Arguments for `terraform apply`
203202
- `TF_LOG` - Terraform logging level
204203

205-
### AWS Provider Configuration
204+
#### AWS Provider Configuration
206205

207206
- `AWS_PROFILE` - AWS profile to use
208207
- `AWS_REGION` - AWS region to use
209208
- `AWS_SDK_LOAD_CONFIG` - Load config from AWS config file
210209

211-
### Azure Provider Configuration
210+
#### Azure Provider Configuration
212211

213212
- `ARM_SUBSCRIPTION_ID` - Azure subscription ID
214213
- `ARM_TENANT_ID` - Azure tenant ID
215214
- `ARM_CLIENT_ID` - Azure client ID
216215
- `ARM_CLIENT_SECRET` - Azure client secret
217216

218-
### GCP Provider Configuration
217+
#### GCP Provider Configuration
219218

220219
- `GOOGLE_APPLICATION_CREDENTIALS` - Path to GCP service account key file
221220
- `CLOUDSDK_CORE_PROJECT` - GCP project ID
222221

223-
## Customization
222+
### Customization
224223

225-
### Adding Custom Tools
224+
#### Adding Custom Tools
226225

227226
To add custom tools to the container, modify the `.devcontainer/Dockerfile` and add your installation commands.
228227

229-
### Customizing VS Code Settings
228+
#### Customizing VS Code Settings
230229

231230
VS Code settings can be customized in `.vscode/settings.json`.
232231

233-
### Customizing Pre-commit Hooks
232+
#### Customizing Pre-commit Hooks
234233

235234
Pre-commit hooks can be customized in `.pre-commit-config.yaml`.
236235

237-
## Advanced Usage
236+
---
237+
238+
## 💻 Advanced Usage
239+
240+
<details>
241+
<summary>Click to expand Advanced Usage details</summary>
238242

239243
### Tool Integration
240244

@@ -284,7 +288,14 @@ You can extend this development environment to suit your specific needs:
284288
- Export configurations from the dev container to CI/CD
285289
- Ensure consistency between development and automation
286290

287-
## Use Cases
291+
</details>
292+
293+
---
294+
295+
## 📊 Use Cases
296+
297+
<details>
298+
<summary>Click to expand Use Cases</summary>
288299

289300
### Enterprise Infrastructure Teams
290301
- Standardize development environments across large teams
@@ -310,7 +321,14 @@ You can extend this development environment to suit your specific needs:
310321
- Follow industry best practices from day one
311322
- Focus on code rather than tooling
312323

313-
## Productivity Benefits
324+
</details>
325+
326+
---
327+
328+
## 📈 Productivity Benefits
329+
330+
<details>
331+
<summary>Click to expand Productivity Benefits</summary>
314332

315333
### Time Savings
316334
- **Environment Setup**: Save 4-8 hours per developer on initial setup
@@ -330,33 +348,11 @@ You can extend this development environment to suit your specific needs:
330348
- **Knowledge Sharing**: Common toolset makes it easier to share techniques and solutions
331349
- **Cross-Platform**: Works the same way on Windows, macOS, and Linux
332350

333-
## Real-World Success Stories
334-
335-
### Enterprise Adoption
336-
337-
A Fortune 500 company implemented this development environment across their infrastructure team of 50+ engineers. Results included:
338-
- 75% reduction in environment-related issues
339-
- 40% faster onboarding for new team members
340-
- 30% increase in code quality metrics
341-
- Standardized practices across 3 cloud platforms
351+
</details>
342352

343-
### DevOps Transformation
353+
---
344354

345-
A mid-sized SaaS company used this container as part of their DevOps transformation:
346-
- Reduced infrastructure deployment errors by 65%
347-
- Decreased time to provision new environments by 50%
348-
- Improved security compliance from 70% to 98%
349-
- Enabled developers to self-service infrastructure needs
350-
351-
### Educational Impact
352-
353-
A technical training organization adopted this container for their Terraform courses:
354-
- Eliminated 90% of setup-related issues in classes
355-
- Provided consistent learning environment across all student machines
356-
- Allowed focus on teaching concepts rather than troubleshooting
357-
- Enabled students to continue learning with the same environment after the course
358-
359-
## Volume Mounts
355+
## 💾 Volume Mounts
360356

361357
The container includes the following volume mounts:
362358

@@ -366,15 +362,19 @@ The container includes the following volume mounts:
366362
- `~/.ssh` - SSH keys
367363
- `terraform-cache` - Terraform plugin cache
368364

369-
## Security Considerations
365+
---
366+
367+
## 🔒 Security Considerations
370368

371369
- **Credential Isolation**: Credentials are mounted from the host to avoid storing them in the container
372370
- **Automated Scanning**: Pre-commit hooks include security scanning for Terraform code
373371
- **Secret Detection**: Automated detection is enabled to prevent committing sensitive information
374372
- **Compliance Checking**: Built-in tools validate infrastructure against compliance standards
375373
- **Least Privilege**: Authentication helpers encourage following least privilege principles
376374

377-
## Troubleshooting
375+
---
376+
377+
## ❓ Troubleshooting
378378

379379
### Common Issues
380380

@@ -388,7 +388,9 @@ The container includes the following volume mounts:
388388

389389
Container logs can be viewed in VS Code by clicking on the "Remote" indicator in the bottom-left corner and selecting "Show Container Log".
390390

391-
## Getting Help
391+
---
392+
393+
## ❓ Getting Help
392394

393395
### Documentation and Resources
394396

@@ -403,22 +405,20 @@ Container logs can be viewed in VS Code by clicking on the "Remote" indicator in
403405
- **Azure Documentation**: [Azure Docs](https://docs.microsoft.com/azure/)
404406
- **GCP Documentation**: [GCP Docs](https://cloud.google.com/docs)
405407

406-
### Staying Updated
408+
---
409+
410+
## 🤝 Contributing
411+
412+
Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for details on how to contribute to this project.
407413

408-
- **Watch the Repository**: Click the "Watch" button on GitHub to receive notifications about updates
409-
- **Check the CHANGELOG**: Review the [CHANGELOG.md](CHANGELOG.md) file for version history and updates
410-
- **Follow on Social Media**: Follow the maintainers and contributors on social media for announcements
414+
---
411415

412-
## Contributing
416+
## 📜 License
413417

414-
Contributions are welcome! Please feel free to submit a Pull Request.
418+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
415419

416-
1. Fork the repository
417-
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
418-
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
419-
4. Push to the branch (`git push origin feature/amazing-feature`)
420-
5. Open a Pull Request
420+
---
421421

422-
## License
422+
## 🔒 Security
423423

424-
This project is licensed under the MIT License - see the LICENSE file for details.
424+
See [SECURITY.md](SECURITY.md) for details on reporting security issues.

0 commit comments

Comments
 (0)