{"id":30579532,"url":"https://github.com/orien/stackaroo","last_synced_at":"2026-01-24T05:23:03.279Z","repository":{"id":311666890,"uuid":"1042102938","full_name":"orien/stackaroo","owner":"orien","description":"A jumping command-line tool that facilitates managing AWS CloudFormation stacks via infrastructure as code. :kangaroo:","archived":false,"fork":false,"pushed_at":"2026-01-18T13:33:48.000Z","size":923,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-01-18T16:50:49.311Z","etag":null,"topics":["aws-cloudformation","configuration-as-code"],"latest_commit_sha":null,"homepage":"https://orien.io/stackaroo/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orien.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-08-21T13:41:23.000Z","updated_at":"2026-01-18T13:33:50.000Z","dependencies_parsed_at":"2025-08-25T22:09:07.407Z","dependency_job_id":"ba19935b-1639-41c4-925f-38cb18220b67","html_url":"https://github.com/orien/stackaroo","commit_stats":null,"previous_names":["orien/stackaroo"],"tags_count":25,"template":false,"template_full_name":null,"purl":"pkg:github/orien/stackaroo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orien%2Fstackaroo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orien%2Fstackaroo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orien%2Fstackaroo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orien%2Fstackaroo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orien","download_url":"https://codeload.github.com/orien/stackaroo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orien%2Fstackaroo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28713052,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T05:01:10.984Z","status":"ssl_error","status_checked_at":"2026-01-24T04:59:18.328Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws-cloudformation","configuration-as-code"],"created_at":"2025-08-29T04:11:52.838Z","updated_at":"2026-01-24T05:23:03.248Z","avatar_url":"https://github.com/orien.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Stackaroo\n\nA command-line tool for managing AWS CloudFormation stacks as code.\n\n📚 **[Read the user documentation](https://orien.github.io/stackaroo/)** for tutorials, how-to guides, explanations, and detailed reference material.\n\n## Overview\n\nStackaroo simplifies CloudFormation stack management through declarative YAML configuration, allowing you to define your infrastructure once and deploy it consistently across multiple environments. It provides comprehensive parameter management with support for literal values, dynamic stack output resolution, and cross-region references. Features include dependency-aware deployment ordering, integrated change previews, template validation, and real-time event streaming during stack operations.\n\n## Features\n\n### Environment Management\n- Deploy the same templates across multiple contexts\n- Different AWS regions and parameters per context\n\n### Dependency Management\n\n- Define stack dependencies with `depends_on`\n- Automatic deployment ordering\n\n### Change Preview\n\n- **Comprehensive Change Analysis**: Shows template, parameter, tag, and resource changes\n- **Unified Template Diff**: Line-by-line template comparison in unified diff format (similar to `git diff`)\n- **CloudFormation ChangeSet Integration**: Uses AWS ChangeSet API for accurate previews\n- **Rich Diff Output**: Detailed comparison of current vs proposed infrastructure\n- **Resource Impact Assessment**: Identifies which resources will be created, modified, or deleted\n- **Replacement Warnings**: Highlights resources that require replacement during updates\n- **Consistent Formatting**: Same preview format as the dedicated `diff` command\n\n### Stack Information\n\n- **Comprehensive Stack Details**: View complete information about deployed CloudFormation stacks\n- **Status and Metadata**: Shows stack status, creation time, last update, and description\n- **Parameter Display**: Current parameter values sorted alphabetically\n- **Output Information**: Stack outputs with their current values\n- **Tag Management**: All stack tags displayed in organised format\n- **Human-Readable Format**: Clean, consistent formatting with proper indentation\n- **Real-time Data**: Retrieves current information directly from AWS CloudFormation\n\n### Template Validation\n\n- **Fast Feedback**: Validate CloudFormation templates without deployment\n- **AWS API Integration**: Uses CloudFormation ValidateTemplate API for accurate validation\n- **Syntax Checking**: Catches template syntax errors and invalid resource types\n- **Batch Validation**: Validate all stacks in a context with a single command\n- **CI/CD Ready**: Perfect for pre-deployment checks in automated pipelines\n- **Regional Validation**: Validates templates in the context's target region\n- **Clear Output**: Progress indicators and summary reports for validation results\n\nValidate templates early in your development workflow:\n\n```bash\n# Validate a single stack's template\nstackaroo validate dev vpc\n\n# Validate all stacks in a context\nstackaroo validate production\n```\n\nThe validation command provides immediate feedback on template errors without requiring actual deployment, making it ideal for development workflows and continuous integration pipelines. It processes templates through the same resolution pipeline as deployment, including Go template processing, ensuring validation matches what will actually be deployed.\n\n### Parameter System\n\nStackaroo provides a comprehensive parameter system supporting multiple resolution types:\n\n#### Literal Parameters\nDirect string values defined in configuration:\n```yaml\nparameters:\n  Environment: production\n  InstanceType: t3.medium\n  Port: \"8080\"\n```\n\n#### Stack Output Parameters\nPull values dynamically from existing CloudFormation stack outputs:\n```yaml\nparameters:\n  VpcId:\n    type: stack-output\n    stack: networking\n    output: VpcId\n\n  DatabaseEndpoint:\n    type: stack-output\n    stack: database\n    output: DatabaseEndpoint\n```\n\n#### Cross-Region Stack Outputs\nReference outputs from stacks in different AWS regions:\n```yaml\nparameters:\n  SharedBucketArn:\n    type: stack-output\n    stack: shared-resources\n    output: BucketArn\n    region: us-east-1\n```\n\n#### List Parameters\nSupport for CloudFormation `List\u003cType\u003e` and `CommaDelimitedList` parameters with mixed resolution types:\n```yaml\nparameters:\n  # Mix literals and stack outputs in a single list parameter\n  SecurityGroupIds:\n    - sg-baseline123         # Literal value\n    - type: stack-output     # Dynamic from stack output\n      stack: security-stack\n      output: WebSGId\n    - sg-additional456       # Another literal\n\n  # Simple literal list\n  AllowedPorts:\n    - \"80\"\n    - \"443\"\n    - \"8080\"\n```\n\n#### Context Overrides\nDifferent parameter values per deployment context:\n```yaml\nparameters:\n  InstanceType: t3.micro    # Default value\ncontexts:\n  production:\n    parameters:\n      InstanceType: t3.large  # Production override\n```\n\n**Benefits:**\n- **Automatic Resolution**: Stack outputs resolved at deployment time\n- **Cross-Stack Dependencies**: Reference outputs from other stacks seamlessly\n- **Environment Flexibility**: Different values per context without template changes\n- **Type Safety**: Comprehensive validation and error handling\n- **Backwards Compatible**: Existing literal parameter configurations work unchanged\n\n### CloudFormation Template Templating\n\nStackaroo supports dynamic CloudFormation template generation using Go templates with Sprig functions. This allows you to use the same template file across different contexts with context-specific variations:\n\n```yaml\n# Template: templates/storage.yaml\nAWSTemplateFormatVersion: '2010-09-09'\nDescription: {{ .Context | title }} storage for {{ .StackName }}\n\nResources:\n  AppBucket:\n    Type: AWS::S3::Bucket\n    Properties:\n      BucketName: {{ .StackName }}-bucket-{{ .Context | lower }}\n      Tags:\n        - Key: Environment\n          Value: {{ .Context }}\n{{- if eq .Context \"production\" }}\n        - Key: BackupEnabled\n          Value: \"true\"\n{{- end }}\n```\n\nWhen deployed to the `development` context, this generates a bucket named `my-app-bucket-development`. When deployed to `production`, it generates `my-app-bucket-production` with an additional backup tag.\n\n**Available features:**\n- **Context variables**: Access `{{ .Context }}` (the context name like \"development\" or \"production\") and `{{ .StackName }}` (the stack name) in templates\n- **Sprig functions**: Use `upper`, `lower`, `title`, and other text transformations\n- **Conditionals**: `{{- if eq .Context \"production\" }}` for environment-specific resources\n- **Automatic processing**: All templates are processed automatically, backwards compatible with static templates\n\n### Real-time Event Streaming\n\n- See exactly what will change before applying\n- Live CloudFormation events during deployment operations\n- See resource creation, updates, and completion status in real-time\n- Smart detection of create vs update operations\n- Graceful handling of \"no changes\" scenarios\n\n## Installation\n\n### Using Go Install\n\n```bash\ngo install github.com/orien/stackaroo@latest\n```\n\n### Download Binary\n\nDownload the latest release from the [releases page](https://github.com/orien/stackaroo/releases).\n\n#### Linux/macOS\n\n```bash\n# Download and install (replace VERSION and ARCH as needed)\nVERSION=1.0.0\nARCH=linux-x86_64\nURL=\"https://github.com/orien/stackaroo/releases/download/v${VERSION}/stackaroo-${VERSION}-${ARCH}.tar.gz\"\nDIR=\"stackaroo-${VERSION}-${ARCH}\"\n\ncurl -sL \"$URL\" | tar -xz\nsudo mv \"${DIR}/stackaroo\" /usr/local/bin/\nrm -rf \"${DIR}\"\n\n# Verify installation\nstackaroo --version\n```\n\n#### Windows\n\nDownload the `.zip` file from the releases page, extract it, and add the binary to your PATH.\n\n### Verify Installation\n\n```bash\nstackaroo --version\n```\n\n## Quick Start\n\n### Configuration\n\nCreate a `stackaroo.yaml` file defining your stacks and contexts:\n\n```yaml\nproject: my-infrastructure\nregion: us-east-1\n\ncontexts:\n  development:\n    account: \"123456789012\"\n    region: ap-southeast-4\n    tags:\n      Environment: development\n  production:\n    account: \"987654321098\"\n    region: us-east-1\n    tags:\n      Environment: production\n\nstacks:\n  vpc:\n    template: templates/vpc.yaml\n    parameters:\n      # Literal parameters\n      Environment: development\n      VpcCidr: \"10.0.0.0/16\"\n      EnableDnsSupport: \"true\"\n    contexts:\n      production:\n        parameters:\n          Environment: production\n          VpcCidr: \"172.16.0.0/16\"\n\n  app:\n    template: templates/app.yaml\n    parameters:\n      # Literal parameters\n      InstanceType: t3.micro\n      MinCapacity: \"1\"\n      MaxCapacity: \"3\"\n\n      # Stack output parameters (pull from existing stacks)\n      VpcId:\n        type: stack-output\n        stack: vpc\n        output: VpcId\n\n      PrivateSubnetId:\n        type: stack-output\n        stack: vpc\n        output: PrivateSubnet1Id\n\n      # Cross-region stack output (optional region parameter)\n      SharedBucketArn:\n        type: stack-output\n        stack: shared-resources\n        output: BucketArn\n        region: us-east-1\n    contexts:\n      production:\n        parameters:\n          InstanceType: t3.small\n          MinCapacity: \"2\"\n          MaxCapacity: \"10\"\n    depends_on:\n      - vpc\n```\n\n### Deployment\n\nDeploy stacks using either pattern:\n\n```bash\n# Deploy all stacks in a context (with dependency ordering)\nstackaroo deploy development\n\n# Deploy a specific stack\nstackaroo deploy development vpc\n\n# Preview changes before deployment\nstackaroo diff development app\n\n# View detailed stack information\nstackaroo describe production vpc\n```\n\n### Key Commands\n\n#### Core Commands\n- `deploy \u003ccontext\u003e [stack-name]` - Deploy all stacks or a specific stack with dependency-aware ordering and integrated change preview\n- `diff \u003ccontext\u003e \u003cstack-name\u003e` - Preview changes between deployed stack and local configuration\n- `describe \u003ccontext\u003e \u003cstack-name\u003e` - Display detailed information about a deployed CloudFormation stack\n- `validate \u003ccontext\u003e [stack-name]` - Validate CloudFormation templates for syntax and AWS-specific requirements\n- `delete \u003ccontext\u003e [stack-name]` - Delete stacks with dependency-aware ordering and confirmation prompts\n\n#### Global Flags\n- `--config, -c` - Specify config file (default: stackaroo.yaml)\n- `--verbose, -v` - Enable verbose output for detailed logging\n- `--version` - Show version information\n- `--help` - Show help for any command\n\n#### Usage Examples\n```bash\n# Deploy all stacks in development context\nstackaroo deploy development\n\n# Deploy specific stack with verbose output\nstackaroo deploy production app --verbose\n\n# Preview changes before deployment\nstackaroo diff staging vpc\n\n# View detailed stack information\nstackaroo describe production app\n\n# Validate templates before deployment\nstackaroo validate development vpc\n\n# Validate all templates in a context\nstackaroo validate production\n\n# Delete specific stack with confirmation\nstackaroo delete development app\n\n# Delete all stacks in context (reverse dependency order)\nstackaroo delete development\n\n# Use custom config file\nstackaroo deploy production --config custom-config.yaml\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forien%2Fstackaroo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forien%2Fstackaroo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forien%2Fstackaroo/lists"}