Skip to content
Merged
Show file tree
Hide file tree
Changes from 65 commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
f83367d
feat: Add automatic backend provisioning with S3 support
osterman Nov 20, 2025
e972b3e
docs: Document provision block configuration hierarchy
osterman Nov 20, 2025
ead68a1
fix: Address CodeRabbit review feedback for backend provisioning
osterman Nov 20, 2025
70f808f
test: Add comprehensive test coverage for backend provisioning
osterman Nov 21, 2025
d7200b9
test: Add interface-based mocking for S3 provisioner
osterman Nov 21, 2025
461e596
test: Regenerate snapshots for provision command
osterman Nov 21, 2025
79b874e
Merge branch 'main' into osterman/auto-backend-provision
osterman Nov 22, 2025
074bfe2
Merge branch 'main' into osterman/auto-backend-provision
osterman Nov 23, 2025
26aa9de
fix: Remove BucketKeyEnabled from AES-256 encryption config
osterman Nov 23, 2025
9a6e9f1
docs: Add use_lockfile to S3 backend provisioning examples
osterman Nov 23, 2025
d1067cb
docs: Streamline blog post and refocus on Terraform compatibility
osterman Nov 23, 2025
80aaeb4
docs: Reframe blog post section as solving Terraform bootstrap problem
osterman Nov 23, 2025
ff06678
docs: Remove unnecessary step to disable automatic provisioning
osterman Nov 23, 2025
61eced2
feat: Add CRUD operations for backend provisioning
osterman Nov 24, 2025
21f318e
refactor: Eliminate code duplication in backend commands
osterman Nov 24, 2025
a84289e
docs: Update backend provisioning command documentation
osterman Nov 24, 2025
f1770dd
docs: Update backend provisioning docs to emphasize Terraform compati…
osterman Nov 24, 2025
8b4209e
docs: Fix documentation links and restructure provision command docs
osterman Nov 24, 2025
d963787
Merge remote-tracking branch 'origin/main' into osterman/auto-backend…
osterman Nov 24, 2025
3ee21c7
test: update snapshots for provision command move to terraform subcom…
osterman Nov 25, 2025
dc7a632
test: increase coverage for backend provision and TUI templates
osterman Nov 26, 2025
60ce6f0
fix: resolve lintroller errors for performance tracking and test isol…
osterman Nov 26, 2025
a3bfde7
refactor: eliminate code duplication and reduce test complexity
osterman Nov 26, 2025
ca8b98c
docs: fix backend_type placement in YAML examples and godot linter vi…
osterman Nov 26, 2025
16e8d85
fix(ci): configure git authentication for golangci-lint custom build
osterman Nov 26, 2025
ab18ce0
refactor: simplify backend commands by removing provision namespace
osterman Nov 26, 2025
843eeb1
refactor: consolidate provisioner packages and adopt CRUD naming
osterman Nov 26, 2025
5d832a6
feat: add component-level auth support for backend commands
osterman Nov 26, 2025
98f6063
docs: add component-level auth documentation for backend commands
osterman Nov 26, 2025
1a0f8af
test: regenerate snapshot for atmos terraform help
osterman Nov 27, 2025
607a918
Merge branch 'main' into osterman/auto-backend-provision
osterman Nov 27, 2025
57c7ef9
fix: enforce force flag requirement in DeleteS3Backend
osterman Nov 27, 2025
e48531e
refactor: improve DeleteS3Backend function structure and test coverage
osterman Nov 27, 2025
45fa45a
test: increase cmd/terraform/backend test coverage to 75%
osterman Nov 27, 2025
0d40d27
docs: refactor backend documentation into 3 focused pages
osterman Nov 28, 2025
627edd1
docs: convert backend lists to Terraform/OpenTofu tabs
osterman Nov 28, 2025
a3a2b95
docs: update backend docs to use native S3 locking and lead with Atmo…
osterman Nov 28, 2025
a61b9bb
docs: fix S3 bucket naming to follow null label format
osterman Nov 29, 2025
058109f
Merge branch 'main' into osterman/auto-backend-provision
osterman Nov 29, 2025
b378ab0
fix: remove unused Screengrab import and add period to comment
osterman Nov 29, 2025
557b83d
docs: replace :::note Purpose with <Intro> component
osterman Nov 29, 2025
ea9c010
docs: add screengrab for atmos terraform backend command
osterman Nov 29, 2025
054ac1f
docs: move Backend Provisioning link from bullet to CTA
osterman Nov 30, 2025
bf8b477
docs: add tip about committing backend.tf.json
osterman Nov 30, 2025
81c03a4
Merge branch 'main' into osterman/auto-backend-provision
osterman Dec 1, 2025
8305606
Merge branch 'main' into osterman/auto-backend-provision
osterman Dec 5, 2025
7b3eeb3
docs: reorganize backend documentation with MDX partials
osterman Dec 5, 2025
1c1f192
Merge branch 'main' into osterman/auto-backend-provision
osterman Dec 6, 2025
f01e73c
Merge branch 'main' into osterman/auto-backend-provision
osterman Dec 7, 2025
7c47fc9
Merge branch 'main' into osterman/auto-backend-provision
osterman Dec 8, 2025
b457df3
refactor: consolidate AWS config error to ErrLoadAWSConfig
osterman Dec 8, 2025
f089e6f
test: add tests for help printer empty lines handling
osterman Dec 8, 2025
bb38566
Merge remote-tracking branch 'origin/main' into osterman/auto-backend…
osterman Dec 9, 2025
06c050f
test: add init() verification tests for backend commands
osterman Dec 9, 2025
72371af
docs: fix hard tab in auth-context-multi-identity.md line 559
osterman Dec 9, 2025
5a18e15
Merge branch 'main' into osterman/auto-backend-provision
osterman Dec 9, 2025
a9522f0
refactor: remove duplicate ErrLoadAwsConfig sentinel error
osterman Dec 9, 2025
9cad4f8
Merge branch 'main' into osterman/auto-backend-provision
osterman Dec 10, 2025
9670bec
Merge branch 'main' into osterman/auto-backend-provision
osterman Dec 10, 2025
fab1c6c
Merge branch 'main' into osterman/auto-backend-provision
aknysh Dec 10, 2025
3fe5e75
Merge branch 'main' into osterman/auto-backend-provision
aknysh Dec 12, 2025
c60a3ab
update docs, add tests
aknysh Dec 12, 2025
33a196d
Merge branch 'main' into osterman/auto-backend-provision
aknysh Dec 12, 2025
ff69265
Merge branch 'main' into osterman/auto-backend-provision
aknysh Dec 12, 2025
88f00fe
address comments, update docs, add tests
aknysh Dec 12, 2025
e64b79e
address comments, update docs
aknysh Dec 12, 2025
8e9cb73
fix: Address final CodeRabbit review comments
aknysh Dec 12, 2025
79d49b1
refactor: Use ErrorBuilder for user-facing errors in s3_delete.go
aknysh Dec 12, 2025
9423186
fix: Use params.AtmosConfig for perf.Track in provisioner functions
aknysh Dec 12, 2025
811d4bd
fix: Replace hard tabs with spaces in PRD Go code blocks (MD010)
aknysh Dec 13, 2025
3e43c02
fix: Add missing errors import to PRD Go example
aknysh Dec 13, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ linters:
- "!**/pkg/auth/types/aws_credentials.go"
- "!**/pkg/auth/types/github_oidc_credentials.go"
- "!**/internal/aws_utils/**"
- "!**/pkg/provisioner/backend/**"
- "$test"
deny:
# AWS: Identity and auth-related SDKs
Expand Down
10 changes: 9 additions & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -538,7 +538,15 @@ All cmds/flags need Docusaurus docs in `website/docs/cli/commands/`. Use `<dl>`
**Common mistakes:** Using command name vs. filename, not checking slug frontmatter, guessing URLs.

### Documentation Requirements (MANDATORY)
Use `<dl>` for arguments/flags. Follow Docusaurus conventions: frontmatter, purpose note, screengrab, usage/examples/arguments/flags sections. File location: `website/docs/cli/commands/<command>/<subcommand>.mdx`
CLI command docs MUST include:
1. **Frontmatter** - title, sidebar_label, sidebar_class_name, id, description
2. **Intro component** - `import Intro from '@site/src/components/Intro'` then `<Intro>Brief description</Intro>`
3. **Screengrab** - `import Screengrab from '@site/src/components/Screengrab'` then `<Screengrab title="..." slug="..." />`
4. **Usage section** - Shell code block with command syntax
5. **Arguments/Flags** - Use `<dl><dt>` for each argument/flag with `<dd>` description
6. **Examples section** - Practical usage examples

File location: `website/docs/cli/commands/<command>/<subcommand>.mdx`

### Website Build (MANDATORY)
ALWAYS build after doc changes: `cd website && npm run build`. Verify: no broken links, missing images, MDX component rendering.
Expand Down
2 changes: 2 additions & 0 deletions cmd/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ import (
"github.com/cloudposse/atmos/cmd/internal"
_ "github.com/cloudposse/atmos/cmd/list"
_ "github.com/cloudposse/atmos/cmd/profile"
"github.com/cloudposse/atmos/cmd/terraform/backend"
themeCmd "github.com/cloudposse/atmos/cmd/theme"
"github.com/cloudposse/atmos/cmd/version"
_ "github.com/cloudposse/atmos/cmd/workflow"
Expand Down Expand Up @@ -1223,6 +1224,7 @@ func Execute() error {
version.SetAtmosConfig(&atmosConfig)
devcontainer.SetAtmosConfig(&atmosConfig)
themeCmd.SetAtmosConfig(&atmosConfig)
backend.SetAtmosConfig(&atmosConfig)

if initErr != nil {
// Handle config initialization errors based on command context.
Expand Down
37 changes: 37 additions & 0 deletions cmd/terraform/backend/backend.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package backend

import (
"github.com/spf13/cobra"

"github.com/cloudposse/atmos/pkg/schema"
)

// AtmosConfigPtr will be set by SetAtmosConfig before command execution.
var atmosConfigPtr *schema.AtmosConfiguration

// SetAtmosConfig sets the Atmos configuration for the backend command.
// This is called from root.go after atmosConfig is initialized.
func SetAtmosConfig(config *schema.AtmosConfiguration) {
atmosConfigPtr = config
}

// backendCmd represents the backend command.
var backendCmd = &cobra.Command{
Use: "backend",
Short: "Manage Terraform state backends",
Long: `Create, list, describe, update, and delete Terraform state backends.`,
}

func init() {
// Add CRUD subcommands
backendCmd.AddCommand(createCmd)
backendCmd.AddCommand(listCmd)
backendCmd.AddCommand(describeCmd)
backendCmd.AddCommand(updateCmd)
backendCmd.AddCommand(deleteCmd)
}

// GetBackendCommand returns the backend command for parent registration.
func GetBackendCommand() *cobra.Command {
return backendCmd
}
Loading