Terraform Remote State

In my last post, I gave a little introduction on working with Terraform. Because it was just an introduction, it focused setting up a repository, writing HCL, and the mechanics of executing Terraform. It did was not concerned with proper state management. Here, we’ll put a little thought into something we can work with in a more rigorous manner than just playing around. By using a backend for storing, accessing, and manipulating state, we begin to work with infrastructure with a record beyond just the workstation. [Read More]

Getting Started with Terraform

In getting moving with Terraform, you’ll want to have an eye on what you’re going to do with your state. Proper management and planning is going to be critical for any real project. However, getting familiar with the tool itself is a good starting point in using it. For this post, we’ll think only about the fundatmentals of Terraform and just start on deploying infrastructure without worrying about state management. We’ll use state, but will just use the default of storing on disk locally. [Read More]

Terraform State Management

Ok, so you’ve decided you want to use Terraform for your projects’s infrastrucure. Armed with that decision, you’ll need to decide what to do with the state Terraform needs to keep. The default when you run Terraform is that it uses a backend called local. This is fine for playing around, but it’s not what you want to use for a real project, especially one with a team with multiple people working against your repositories and infrastructure. [Read More]

The Idea Behind Terraform

I promised here to write a bit about Terraform. Terraform, and other tools like it, is important because infrastructure is important. Given the importance of the infrastructure on which the software will run, treating infrastructure as something worthy of all the controls, versioning, auditing, repeatability, reliability, and attention we give application code. To that end, HashiCorp created Terraform and it’s a great product that fits the need well. So, what is Terraform? [Read More]

Starting with Infrastructure

Having decided to create software and aware of a need for a place for it to run, now we start thinking about what infrastructure to create. The infrastructure necessary depends on the problem. You could run off and create a footprint in a datacenter and spend hundreds of thousands of dollars (or other monetary units) on hardware and setup. You could spend similar sums in one of the big cloud providers. [Read More]

A Place to Run

In my last post, I started to think about how one creates software. It’s natural to think about creating software as an exercise in coding. It is that, but it’s more. If you think about your mind as an abstract reasoning engine, you’re right. That mind, though, is software that runs on hardware. The hardware of your mind is your brain. Your brain is a component of a system operating to make the mind work. [Read More]

Prelude to How

This post is the fourth in a series on writing software. The first introduced the most fundamental of the principles of concern in creating software. That of purpose. The second took that idea further. It spoke of turning a problem into a vision for a solution. The third moved from the question of why? into that of what?. It emphasized that software is not always the solution and we do well to consider other answers, but when software is the best answer, the we deliver. [Read More]

What will you build?

This post is the third in a series on writing software. The first introduced the most fundamental of the principles of concern in creating software. That of purpose. The second took that idea further. It spoke of turning a problem into a vision for a solution. With a vision in place, we’ve moved through the first and most fundamental of the questions we need to answer regarding any undertaking: Why? [Read More]

Solution

This post is the second in a series on writing software. The first introduced the most fundamental of the principles of concern in creating software. That of purpose. This one is a further articulation of the meaning of purpose in software. Like humans, software needs a reason for being. Software, at least good software, is a solution to a problem. A solution without a problem is not a solution at all. [Read More]

Guiding Principles

This post is the first in a series on writing software. The idea is to articulate the thinking that goes behind being a competent and valuable software professional. What do you need to think about when you write software? What should be your most important concerns? Developers tend to think first about things like maintainability, performance, and craftsmanship. These things are, of course, all important and worth considersation. Developers certainly need to think about the correctness of the software they write and making sure it can be extended in the future. [Read More]