Nuts and Bolts

Everyone has opinions and thoughts. Here are some of ours.

Terraspace v2.1 Release

In this post, we’ll cover the Terraspace 2.1 release. Here’s a summary:

Introducing Terraspace Cloud

In this post, you’ll get an introduction to Terraspace Cloud.

What is Terraspace Cloud?

Terraspace Cloud is a nice addition to the Terraspace Framework. Terraspace Cloud adds extra features to Terraspace.

  • GUI Dashboard and History: When working with multiple stacks, it can become hard to remember all the stacks you or others on your team have deployed. Terraspace Cloud helps you visualize the stacks by saving them and providing a web dashboard with deployed stacks, history, logging, and resources. Know who deployed what and when.
  • Team and Permissions Management: Fine-grain permission control over access. You can create teams and define permission that target dev vs prod environments.
  • CI/CD Integration: Integration with popular CI/CD systems like GitHub Actions, GitLab Pipelines, etc. GitHub Pull Request and GitLab Merge Request integration provide a comment with a link to the visual dashboard.
  • Real-Time Logging: Terraspace captures logs that you see in your terminal and stream them live to the Dashboard. You can share this url to teammates who have access to the project.
  • Cloud Cost Estimation: Terraspace Cloud provides cost estimates for your Terraform resources. Terraspace integrates the infracost estimation reports with the Terraspace Cloud dashboard and Pull Request comments.

Terraspace Cloud provides these additional conveniences as an optional paid managed service. Terraspace Cloud Pricing

Terraspace 2.0 Release

In this post, we’ll cover the Terraspace 2.0 release. Here’s a summary:

Serverless Slack Commands with Ruby: Fun with AWS Image Recognition

This post will detail the steps to get a serverless slack command running on AWS Lambda using the Jets Serverless Ruby framework. We’ll make something fun: a command that takes in a URL, scrapes all the images on the page, filters the images using AWS image recognition, and posts the filtered images to the current slack channel. For example:

Introducing Serverless Gems

Originally called Lambda Gems, Serverless Gems has been rebuilt from the ground up. It provides better support for multiple versions of Ruby, notable Ruby 2.7. Jets v3 uses Serverless Gems for a developer-friendly experience.

Kustomize vs Helm vs Kubes: Kubernetes Deploy Tools

Today, we’ll talk about some deployment tools in the Kubernetes world. We’ll talk a little bit about why tools are used on top of kubectl. We’ll compare 3 different tools in the Kubernetes world focused on the deployment side of things: Kustomize, Helm, and Kubes. Then we’ll elaborate on the features that Kubes offers.

Terraspace Terrafile: Using Git and Terraform Registry Modules

Terraspace makes it easy to use Terraform modules sourced from your own git repositories, other git repositories, or the Terraform Registry. The git repos can be private or public. This is an incredibly powerful feature of Terraspace because it opens up a world of modules for you. Use any module from anywhere.

Terraform HCL Intro 8: For In and Removing Duplication

In the last post, we provided an introduction to the for in construct. This post provides more examples, shows local assignment, and covers how to set default attribute values. Remember, for is useful for data structure manipulation. Sometimes you may not get the data in the structure that is easy for you to work with, so understanding how to manipulate the data structure in Terraform can be quite useful.

Terraform HCL Intro 7: For In Loop Basics

In this post, we’ll cover the Terraform for in loop construct. Though it performs looping, its primary purpose is really for manipulating data structures. You can do a few things to data structures with it:

Terraform HCL Intro 6: Nested Loops

In this post, we’ll take on nested loops with Terraform. Terraform is declarative, so a nested loop can be tricky. This post hopes to help with that.

Terraform HCL Intro 5: Loops with Dynamic Block

In the previous post, we established loop fundamentals. The loops were pretty basic, though. We were only able to assign a single attribute for each resource per iteration. In this post, we’ll learn how to assign multiple attributes per iteration.

Terraform HCL Intro 4: Loops with Count and For Each

In this post, we’ll cover Terraform looping constructs. Terraform is declarative, so it’s looping structure may seem weird to those used to procedural programming loops. There are a few ways to performing looping with Terraform. We’ll cover the looping constructs that specifically work at the resource level. They handle resource creation itself. There are two of them:

Terraform HCL Intro 3: Conditional Logic

In this post, we’ll cover how to perform conditional logic with Terraform. It’ll be a little weird looking for those who are not used to the Terraform declarative syntax. There are only a few ways to do conditional logic with Terraform:

Terraform HCL Intro 2: Function Analogy

In this post, we’ll review the basic Terraform building blocks from the previous post, Terraform HCL Intro 1: Resources, Variables, Outputs, and compare them to a “function”. This is a contrived analogy, but folks find it helpful. You’ll also learn about Terraform locals.

Terraform HCL Intro 1: Resources, Variables, Outputs

This is the start of a series of posts to help introduce and learn the Terraform HCL language. It is written for those with an elementary understanding of programming already. This allows us to cover things effectively instead of being stuck in the weeds.

Terraform vs Terragrunt vs Terraspace

Terraform is great and helps you build infrastructure-as-code. The Hashicorp team provides good resources, learning guides, and tutorials to help you get started. The guides are simple, though, and still leave plenty of things for you to figure out on our own. Once you get past the introductory basics of Terraform, you’ll discover many more questions that you must answer before taking Terraform to production. Usually, people end up home-growing custom scripts or using a tool on top of Terraform to fill the gaps. In this article, we’ll discuss and compare the tools: Terraform, Terragrunt, and Terraspace.

Terraspace All: Deploy Multiple Stacks or Terraform Modules At Once

Today, we’ll cover a cool Terraspace feature. It allows you to deploy all of your infrastructure in a single command.

terraspace all up

Terraspace calculates the dependencies and deploys your code in the right order.

Terraspace Release v0.3

Terraspace v0.3 released 🎉. There are some major improvements in this release. Here’s a quick summary of them.

Introducing Terraspace: The Terraform Framework

Terraspace is a Terraform framework. It provides an organized structure, conventions over configurations, keeps your code DRY, and adds convenient tooling. It makes it easier and more fun to work with Terraform.

Introducing Kubes: The Kubernetes Deployment Tool

Kubes is a deployment tool that makes it easier and more fun to work with Kubernetes. Kubes automates 3 main steps.

  1. Build a Docker image.
  2. Create the YAML files that declare the Kubernetes resources.
  3. Run kubectl apply to create the resources on the cluster.

It boils everything down to one single command:

kubes deploy

CloudWatch Log Tips: Jets AWS Introduction Series Part 5

In this video, we’ll go over some CloudWatch Log tips. These tips will be useful for someone new to CloudWatch logs and show you how to use CloudWatch logs effectively. The biggest tip here is to click on the “Search” button immediately after clicking on a Log Group. Don’t bother clicking on individual streams and trying to find the exact AWS Lambda function.

Lono CloudFormation Framework Introduction Part 8: Helpers

Today, we’ll learn about lono helpers. Lono helpers allow you to extend and add to the Lono DSL as a first-class citizen. This particularly makes Lono powerful because you can write methods specific to your needs.

Lono CloudFormation Framework Introduction Part 7: Variables and Loops

The Lono DSL is powerful because it allows you to use the Ruby programming language to generate CloudFormation templates. You can use conditional logic constructs that you’re used to: loops, variables, if statements, methods, etc. However, the Lono DSL tries not to impose itself and take over CloudFormation’s declarative nature. Instead, Lono’s approach is to add programming “sprinkles” on top of CloudFormation. Ultimately, you get the best of both worlds.

Lono CloudFormation Framework Introduction Part 6: Lono Seed

When working with CloudFormation, you usually configure parameters for the template. The lono seed command helps with this step by generating a starter param file. It evaluates the template itself to generate the starter example values. We’ll use the demo blueprint we created in Lono CloudFormation Framework Introduction Part 1: EC2 Instance.

Lono CloudFormation Framework Introduction Part 5: Lono Code Convert and Import

Some of my favorite lono commands are lono code convert and lono code import. They literally write Ruby code for you. In both cases, the lono code subcommands allow you to take JSON or YAML templates and convert them to the Lono DSL Ruby code.

subscribe to Blog via RSS