Infrastructure Packages

Reusable, battle-tested, production-ready solutions for common infrastructure problems.

Placeholder boxes

What’s an infrastructure package?

An Infrastructure Package is a reusable, tested, documented, configurable, best-practices definition of a single piece of Infrastructure (e.g. Network Topology, Docker Cluster, Relational Database), written using a combination of Terraform, Go, and Bash. Gruntwork's Infrastructure Packages are used in production at a number of companies.

Features

Gruntwork feature

We give you 100% of the source code.

Gruntwork feature

Every Package is backed by a suite of automated tests.

Gruntwork feature

Commercially supported by Gruntwork.

Gruntwork feature

Thoroughly documented and commented.

Gruntwork feature

Proven in production across many Gruntwork customers.

Gruntwork feature

Customizable, configurable, and composable.

Placeholder boxes

Available infrastructure packages

Placeholder box
Network Topology
Set up a best practices network topology in your AWS account. This Package creates an isolated VPC for each environment (staging, production, mgmt), and within each environment, sets up multiple tiers of isolated subnets (public, private, persistence) network ACLs, security groups, NAT gateways, and VPC peering connections.
Placeholder box
Monitoring and Alerting
Set up monitoring and alerting using AWS CloudWatch. This Package exposes metrics not available in the AWS hypervisor (e.g. memory and disk space utilization), configures Route 53 health checks for your public endpoints, installs a default set of alerts (e.g. for CPU usage, disk space, 5xx errors) that notify you via email or text message, and aggregates logs from all your applications so you can see them in the CloudWatch console.
Placeholder box
Docker Cluster
Deploy your Docker containers on top of the AWS EC2 Container Service (ECS). This Package creates the ECS Cluster, runs your Docker containers as ECS services, supports zero-downtime, rolling deployment of new Docker container versions, configures load balancing, health checks, and service discovery using ELBs, scales the number of nodes and tasks up and down based on traffic, and provides automatic recovery of failed nodes and Tasks. We even have experimental support for CUDA on ECS, which allows you to build machine learning apps with Docker!
Placeholder box
AMI Cluster
Deploy your Amazon Machine Images (AMIs) on top of an AWS Auto Scaling Group (ASG). This Package creates the ASG Cluster, supports zero-downtime, rolling deployment of new AMI versions, configures load balancing, health checks, and service discovery using ELBs, scales the number of nodes up and down based on traffic, and provides automatic recovery of failed nodes.
Placeholder box
Lambda
Deploy and manage Lambda functions with Terraform. This package can automatically upload your code (Python, Java, C#, or JavaScript) to AWS, configure environment variables to expose to the Lambda function, create an IAM role and IAM permissions, associate the function with a VPC, subnets, and security groups, configure the function to run on a scheduled basis, enable versioning/aliasing, and configure an SNS topic or SQS queue as a dead letter target.
Placeholder box
Security
Set up security best practices for managing secrets, credentials, and servers. This Package uses AWS Key Management Service (KMS) to encrypt and decypt secrets so you can securely store them in version control, configures servers to accept SSH connections from an authorized list of IAM users that updates automatically, configures IAM Groups according to best practices, enables CloudTrail with encrypted events, and implements server hardening with automated security updates and tools like fail2ban.
Placeholder box
Continuous Delivery
Set up an automated pipeline to build and deploy code using a self-hosted CI server (e.g. Jenkins) or cloud-based CI service (e.g. CircleCI, or Travis). After every commit, this Package builds your code, runs your tests, and packages your app into a deployable, versioned artifact (e.g. Docker image or Amazon Machine Image). You can kick off an automated deployment by pushing to a specific branch, creating a new tag, manually running a CI job, or even after every single commit (continuous deployment).
Placeholder box
Relational Database
Run MySQL, Postgres, MariaDB, or Amazon Aurora on Amazon’s Relational Database Service (RDS). This Packages creates the database, sets up replicas, configures automatic failover to a standby in a separate Availability Zone in case of problems, and configures automatic backup.
Placeholder box
Distributed Cache
Run Redis or Memcached clusters using Amazon’s ElastiCache Service. This Packages creates the cluster, sets up replicas, configures automatic failover to a standby in a separate Availability Zone in case of problems, and configures automatic backup.
Placeholder box
Stateful Server
Set up a best-practices deployment of a single, stateful server on top of AWS, such as Jenkins or WordPress. This Package deploys an EC2 Instance, attaches an EBS volume that persists data between redeploys, configures the Instance with a public IP and DNS A record (optional), uses an AWS Lambda job to backup the Instance on a cron schedule, and adds an alarm that goes off if a backup job doesn’t run within a scheduled time period.
Placeholder box
Static Assets
Deploy your static content and static websites on S3, optionally with a CloudFront distribution in front of it as a CDN. Includes bucket versioning, access logging, cache settings, Route 53 DNS entries, and TLS certs.
Placeholder box
MongoDB Cluster
Deploy a MongoDB cluster, including replica sets, sharding, an automated bootstrapping process, backup, recovery, and OS optimizations.
Placeholder box
OpenVPN Server
Deploy an OpenVPN server and manage user accounts using IAM groups. Includes modules to automatically install and configure a high-availability OpenVPN server, public key infrastructure (PKI), data backup, IAM policies, security groups, and cross-platform apps to automatically request and revoke credentials. Works with most popular OpenVPN clients.
Placeholder box
Messaging
Create SQS queues with support for FIFO, message retention, message delays, content-based deduplication, dead-letter queues, and IP-based access controls. Create SNS topics with configurable IAM and delivery policies. Create Kinesis streams with configurable or auto-calculated shard and retention settings.
Request a quote for the packages

Technologies We Support

DevOps
  • Terraform
    Terraform
  • Packer
    Packer
  • Go
    Go
  • Docker
    Docker
Programming Languages
  • Ruby
    Ruby
  • Javascript (Node.js)
    Javascript (Node.js)
  • Python
    Python
  • PHP
    PHP
  • Java
    Java
  • Scala
    Scala
Data Stores
  • MySQL
    MySQL
  • Postgresql
    Postgresql
  • Redis
    Redis
  • Memcached
    Memcached
  • Elasticsearch
    Elasticsearch
  • MariaDb
    MariaDb
  • MS SQL Server
    MS SQL Server
Cloud Providers
  • Amazon AWS
    Amazon AWS
  • Azure Coming Soon
    Azure Coming Soon
  • Google Cloud Coming Soon
    Google Cloud Coming Soon
Continuous Delivery
  • Github
    Github
  • Bitbucket
    Bitbucket
  • Jenkins
    Jenkins
  • CircleCI
    CircleCI
  • TravisCI
    TravisCI
Monitoring and Alerting
  • CloudWatch Metrics
    CloudWatch Metrics
  • Cloudwatch Alarms
    Cloudwatch Alarms
  • Cloudwatch Log Aggregation
    Cloudwatch Log Aggregation
  • Route53 Health Checks
    Route53 Health Checks
  • Data Dog Coming Soon
    Data Dog Coming Soon