-
Notifications
You must be signed in to change notification settings - Fork 43
Add Gruntwork Way! #2852
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Gruntwork Way! #2852
Changes from all commits
91f1c14
2250310
ac19ab5
04a2a37
48ae2b9
33408f9
292c0a1
6f49a7e
d7ff146
c24b7a1
590dddd
467af6a
9a47904
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,17 +1,151 @@ | ||
| { | ||
| "dictionaries": [ | ||
| "custom-dictionary" | ||
| ], | ||
| // Tell CSpell about your dictionary | ||
| "dictionaryDefinitions": [ | ||
| { | ||
| // The name of the dictionary is used to look it up. | ||
| "name": "custom-dictionary", | ||
| // Path to the custom word file. Relative to this `cspell.json` file. | ||
| "path": "./custom-dictionary.txt", | ||
| // Some editor extensions will use `addWords` for adding words to your | ||
| // personal dictionary. | ||
| "addWords": true | ||
| } | ||
| ] | ||
| } | ||
| "version": "0.2", | ||
| "language": "en", | ||
| "words": [ | ||
| "Gruntwork", | ||
| "gruntwork", | ||
| "GitOps", | ||
| "Docusaurus", | ||
| "runbooks", | ||
| "terraform", | ||
| "terragrunt", | ||
| "Terragrunt", | ||
| "kubernetes", | ||
| "kubectl", | ||
| "autoscaling", | ||
| "monorepo", | ||
| "microservices", | ||
| "infra", | ||
| "DevOps", | ||
| "OpenTofu", | ||
| "opentofu", | ||
| "Tofu", | ||
| "prebuilt", | ||
| "repo", | ||
| "repos", | ||
| "serverless", | ||
| "cloudformation", | ||
| "elasticache", | ||
| "cicd", | ||
| "gitignore", | ||
| "cursorrules", | ||
| "npmignore", | ||
| "lockfile", | ||
| "lockfiles", | ||
| "docstrings", | ||
| "codebase", | ||
| "codebases", | ||
| "runbook", | ||
| "dockerfile", | ||
| "dockerfiles", | ||
| "orchestrator", | ||
| "orchestrators", | ||
| "customizable", | ||
| "composability", | ||
| "scalability", | ||
| "observability", | ||
| "linter", | ||
| "linters", | ||
| "linting", | ||
| "Yousif", | ||
| "Oreoluwa", | ||
| "Agunbiade", | ||
| "Yevgeniy", | ||
| "Brikman", | ||
| "Rahul", | ||
| "Vohra", | ||
| "Nana", | ||
| "Pulumi", | ||
| "pulumi", | ||
| "Rego", | ||
| "Sonatype", | ||
| "Pgvector", | ||
| "karpenter", | ||
| "Karpenter", | ||
| "MTTR", | ||
| "MTTP", | ||
| "inhouse", | ||
| "SOURCER", | ||
| "mydomain", | ||
| "terratest", | ||
| "Terratest", | ||
| "terratests", | ||
| "tailscale", | ||
| "sdlc", | ||
| "acmecorp", | ||
| "envcommon", | ||
| "tada", | ||
| "codeowners", | ||
| "jsonencode", | ||
| "chdir", | ||
| "rulesets", | ||
| "controltower", | ||
| "awscli", | ||
| "passwordless", | ||
| "coolapp", | ||
| "acmeco", | ||
| "grunty", | ||
| "yamldecode", | ||
| "mgmt", | ||
| "tfstate", | ||
| "baselining", | ||
| "baselined", | ||
| "clickops", | ||
| "terrascan", | ||
| "steampipe", | ||
| "infracost", | ||
| "kubergrunt", | ||
| "terraformrc", | ||
| "tfvars", | ||
| "fargate", | ||
| "keypair", | ||
| "mimecast", | ||
| "slugified", | ||
| "dlist", | ||
| "DEPENDENCYID", | ||
| "subfolders", | ||
| "terrapatch", | ||
| "Terrapatch", | ||
| "KodeKloud", | ||
| "preconfigured", | ||
| "projectprefix", | ||
| "GOVCLOUD", | ||
| "rollouts", | ||
| "myvars", | ||
| "myfile", | ||
| "minamijoyo", | ||
| "tfupdate", | ||
| "hcledit", | ||
| "infrachanges", | ||
| "Entra", | ||
| "GLMU", | ||
| "myprodsa", | ||
| "azuread", | ||
| "mysa", | ||
| "deinterlaced", | ||
| "rolename", | ||
| "ACCOUNTNAME" | ||
| ], | ||
| "ignoreWords": [], | ||
| "ignorePaths": [ | ||
| "node_modules", | ||
| "build", | ||
| "dist", | ||
| ".git", | ||
| "*.lockb", | ||
| "bun.lockb", | ||
| "yarn.lock", | ||
| "package-lock.json", | ||
| ".cspell.json", | ||
| "tsconfig.json", | ||
| "*.min.js", | ||
| "*.map" | ||
| ], | ||
| "ignoreRegExpList": [ | ||
| "/https?:\\/\\/[^\\s]+/g", | ||
| "/```[\\s\\S]*?```/g" | ||
| ], | ||
| "allowCompoundWords": true, | ||
| "dictionaries": ["typescript", "node", "npm", "bash", "markdown"], | ||
| "enableFiletypes": ["markdown", "mdx", "typescript", "javascript", "json"] | ||
| } | ||
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,10 @@ | ||
| --- | ||
| sidebar_position: 10 | ||
| sidebar_class_name: way-top-level-item | ||
| --- | ||
|
|
||
| # Authorship | ||
|
|
||
| The Gruntwork Way was originally authored by [Josh Padnick](https://joshpadnick.com) with input from fellow Grunts Yousif Akbar, Lewis Christie, Oreoluwa Agunbiade, Brian Torres, [Yevgeniy Brikman](https://ybrikman.com) through his book [The Fundamentals of DevOps and Software Delivery](https://www.fundamentals-of-devops.com/), and especially Eben Eliason. | ||
|
|
||
| It is intended to be a living, evolving knowledge set, so it is our hope that if you find something you believe can be improved that you will [open a Pull Request](/2.0/way/intro/share-your-feedback) suggesting it! |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "label": "Introduction", | ||
| "position": 1, | ||
| "className": "way-top-level-item" | ||
| } | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,30 @@ | ||
| --- | ||
| title: How To Use This | ||
| sidebar_position: 3 | ||
| --- | ||
|
|
||
| To get the most out of the Gruntwork Way, start by making sure you understand the big picture. | ||
|
|
||
| ## The Gruntwork Way Big Picture | ||
|
|
||
| First, a **developer platform** is the product your platform team builds to balance three essential concerns: enabling developers to move fast ([velocity](/2.0/way/why/velocity)), meeting business needs like security, cost, and compliance ([governance](/2.0/way/why/governance)), and avoiding unsustainable technical debt ([maintainability](/2.0/way/why/maintainability)). | ||
|
|
||
| To build a successful platform, you need to combine three types of building blocks: [patterns](/2.0/way/platform/patterns/overview) (pre-built solutions to common infrastructure problems), [platform components](/2.0/way/platform/components/overview) (the machinery for deploying and managing infrastructure), and [interfaces](/2.0/way/platform/interfaces/overview) (how developers interact with your platform). | ||
|
|
||
| Finally, everything in this framework is based on the [guiding principles](/2.0/way/principles/overview) we've discovered through years of building and refining developer platforms. | ||
|
|
||
| ## Using the Gruntwork Way | ||
|
|
||
| Once you understand these foundational concepts, there are two primary ways to use the Gruntwork Way. | ||
|
|
||
| ### Option 1: Read it comprehensively | ||
|
|
||
| You can work through this framework from start to finish to build a complete mental model of developer platforms. This approach works well if you're just getting started or want to strengthen your overall understanding. | ||
|
|
||
| ### Option 2: Use it as a reference | ||
|
|
||
| Alternatively, you can jump directly to the sections most relevant to your current challenges. This approach works well once you understand the fundamentals (which you just read above!) and need guidance on a specific aspect of your platform. | ||
|
|
||
| ## Next | ||
|
|
||
| Alright, let's dive into the framework that helps you build platforms developers actually want to use! |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,13 @@ | ||||||
| --- | ||||||
| title: Share your feedback | ||||||
| sidebar_position: 4 | ||||||
| --- | ||||||
|
|
||||||
| - This framework is useful because it's opinionated. | ||||||
| - Our opinions are based on nearly a decade of experience across hundreds of customers and thousand of customer conversations | ||||||
| - But maybe your mileage varies, or maybe we got it wrong. If so, tell us! | ||||||
| - To give feedback, go to https://github.com/gruntwork-io/docs and create a GitHub Issue or Pull Request. Alternatively click on the "Edit this page" link at the bottom of each page. | ||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Format the bare URL as a proper Markdown link. The bare URL violates MD034 (no-bare-urls). Wrap it in Markdown link syntax to improve readability and maintainability. Apply this diff to fix the bare URL: -To give feedback, go to https://github.com/gruntwork-io/docs and create a GitHub Issue or Pull Request. Alternatively click on the "Edit this page" link at the bottom of each page.
+To give feedback, go to [gruntwork-io/docs](https://github.com/gruntwork-io/docs) and create a GitHub Issue or Pull Request. Alternatively click on the "Edit this page" link at the bottom of each page.📝 Committable suggestion
Suggested change
🧰 Tools🪛 LanguageTool[style] ~9-~9: Try using a synonym here to strengthen your writing. (GIVE_PROVIDE) 🪛 markdownlint-cli2 (0.18.1)9-9: Bare URL used (MD034, no-bare-urls) 🤖 Prompt for AI Agents |
||||||
|
|
||||||
| ### Next | ||||||
|
|
||||||
| Alright, let's dive into the framework that helps you build platforms developers actually want to use! | ||||||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,44 @@ | ||
| --- | ||
| title: Welcome! | ||
| sidebar_position: 1 | ||
| --- | ||
|
|
||
| # Welcome! | ||
|
|
||
| The **Gruntwork Way** is Gruntwork's official framework for how to build a world-class developer platform. | ||
|
|
||
| ## What's a developer platform? | ||
|
|
||
| Nearly every company on the planet needs software, and when companies write their own software with more than a few developers, the same common needs arise: | ||
|
|
||
| 1. Enable developers to move fast ([velocity](/2.0/way/why/velocity)) | ||
| 2. ...while meeting the other needs of the business like security, cost, and compliance ([governance](/2.0/way/why/governance)) | ||
| 3. ...without accumulating an unsustainable level of debt ([maintainability](/2.0/way/why/maintainability)) | ||
|
|
||
| A **developer platform** is the product your platform team builds to balance these three concerns. It consists of three essential building blocks: | ||
|
|
||
| - [Patterns](/2.0/way/platform/patterns/overview) - pre-built solutions to common infrastructure problems | ||
| - [Platform components](/2.0/way/platform/components/overview) - the machinery for deploying and managing infrastructure | ||
| - [Interfaces](/2.0/way/platform/interfaces/overview) - how developers interact with your platform. | ||
|
|
||
| Together, these enable developers to move fast while meeting the needs of the business, and to do so in a way that incurs manageable levels of debt. | ||
|
|
||
| ## Why read this framework | ||
|
|
||
| Making sense of developer platforms can be confusing. We've found bits and pieces of insights scattered across blog posts, vendor solutions, and industry talks, but none of these presents a holistic way to think about developer platforms. | ||
|
|
||
| This framework will help you build comprehensive clarity. | ||
|
|
||
| Ultimately, that clarity will empower you to build a successful developer platform. | ||
|
|
||
| ## Why trust Gruntwork | ||
|
|
||
| We've spent years building expertise on how to deliver software effectively by serving as: | ||
|
|
||
| * **Authors** - We've written leading books and guides, including [Terraform Up & Running](https://www.terraformupandrunning.com/), [Fundamentals of DevOps and Software Delivery](https://www.fundamentals-of-devops.com/?ref=blog-post-series), ,[The Startup CTO's Handbook](https://github.com/ZachGoldberg/Startup-CTO-Handbook), and [A Comprehensive Guide to Scaling Apps on AWS](https://joshpadnick.com/posts/a-comprehensive-guide-to-scaling-apps-on-aws-part-1/). | ||
| * **Makers** - We've created leading open source DevOps tooling like [OpenTofu](https://opentofu.org/) (co-founder), [Terragrunt](https://terragrunt.gruntwork.io/), [Terratest](https://terratest.gruntwork.io/), [Runbooks](https://runbooks.gruntwork.io), [Boilerplate](https://github.com/gruntwork-io/boilerplate), and [Cloud Nuke](https://github.com/gruntwork-io/cloud-nuke). | ||
| * **Experts** - As a vendor, we've equipped over 500 companies and thousands of engineers with AWS, DevOps, and Platform Engineering best practices. | ||
|
|
||
| ## Next | ||
|
|
||
| Now let's learn more about who we wrote the Gruntwork Way for. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,34 @@ | ||
| --- | ||
| title: Who This Is For | ||
| sidebar_position: 2 | ||
| --- | ||
|
|
||
| We wrote The Gruntwork Way for anyone trying to balance velocity, governance, and maintainability in their quest to better deliver software. | ||
|
|
||
| ## Roles | ||
|
|
||
| In practice, we expect users in these roles will find this useful: | ||
|
|
||
| - **Platform engineers** building or improving their developer platforms | ||
| - **DevOps engineers** looking for best practices and patterns | ||
| - **Engineering leaders** evaluating their developer platform and/or cloud strategy | ||
|
|
||
| ## Maturity levels | ||
|
|
||
| As you build your developer platform, you will go through a series of maturity stages. | ||
|
|
||
| Actually, to be more precise, you will build maturity separately in your [patterns](/2.0/way/platform/patterns/overview), [platform components](/2.0/way/platform/components/overview), and [interfaces](/2.0/way/platform/interfaces/overview). Your collective maturity level for the "developer platform" is really just the collection of maturity levels for its component parts. | ||
|
|
||
| In general, the component parts track these maturity levels: | ||
|
|
||
| - **Ad hoc** - There is no standard, so your team does things manually with minimal automation. | ||
| - **Building** - You've built something, but it's limited. | ||
| - **Established** - This component does add value, but with lots of room for improvement. | ||
| - **Mature** - This component performs its functions comprehensively and effectively. | ||
| - **Self-improving** - This component has a systematic feedback loop that leads to ongoing improvements. | ||
|
|
||
| The Gruntwork Way is especially useful for organizations with many building blocks in the **ad hoc,** **building,** or **established** stages. | ||
|
|
||
| ## Next | ||
|
|
||
| Let's close out the introduction by giving you some pointers on how to use this framework! |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "label": "Building Your Platform", | ||
| "position": 4, | ||
| "className": "way-top-level-item" | ||
| } | ||
|
|
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
| { | ||
| "label": "Components", | ||
| "position": 3 | ||
| } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
Verify word list migration from deleted custom-dictionary.txt.
The configuration consolidates spell-checker terms into an inline
wordsarray (127 terms). Sincecustom-dictionary.txtwas deleted in this PR, we need to ensure all terms were successfully migrated.Please verify that:
custom-dictionary.txthave been migrated to this arrayYou can run this script to check for duplicates within the current word list:
🏁 Script executed:
Length of output: 21
I'll verify the remaining aspects of the migration by checking the git history and confirming the file deletion.
Length of output: 836
🏁 Script executed:
Length of output: 1583
Now let me retrieve the original contents of the deleted file to verify the migration was complete:
🏁 Script executed:
Length of output: 972
Let me verify these potential omissions:
🏁 Script executed:
Length of output: 1925
Add missing terms from deleted custom-dictionary.txt
Migration verification found two domain-specific terms that were not carried over to the
wordsarray:gruntwork-ioself-hostingThese should be added to the
wordsarray in cspell.json to complete the migration. No duplicates were found, and all other 70 original terms were successfully migrated.🤖 Prompt for AI Agents