• OpenTofu's enabled meta-argument - conditional resources without the count hack

    In my previous post I wrote about migrating from Terraform to OpenTofu and I mentioned that OpenTofu is not just a passive fork anymore. Today I want to show you a concrete example of that: a small feature that removes one of the oldest and ugliest hacks in the Terraform world - conditional resource creation via count. The feature is called enabled, it lives in the lifecycle block, it shipped in OpenTofu 1.11, and Terraform simply does not have it.

    Read on →

  • From Terraform to OpenTofu - why and how we made the switch

    I have been a Terraform user since the early days - I mentioned on this blog years ago that I was an early adopter, and that has not changed. Infrastructure as Code is simply how I work. But over the last couple of years something important happened in that ecosystem, and recently I went through a full migration from Terraform to OpenTofu in a few production environments. In this post I want to share why we did it, how it went, and what surprised me along the way.

    Read on →

  • Why GoLang

    GoLang, often referred to as Go, is a statically typed, compiled programming language designed by Google. It has gained significant popularity among developers due to its simplicity, efficiency, and robustness. In this blog post, we will explore GoLang’s best features from both performance and development perspectives, backed by comprehensive code examples to illustrate these advantages.

    Read on →

  • Go Lang and interfaces and generics

    Hey everyone,

    Today, I want to dive into Go language and talk about interfaces, with a specific focus on generics. Generics have been one of the most highly anticipated features in Go, and they are finally here with the release of Go 1.18. Let’s explore how interfaces and generics work together in Go and how they can make our code more flexible and reusable.

    Read on →

  • Quick introduction to Augeas in Puppet

    Recently I came across an interesting problem. I had to install a kernel from the 3.10 branch on CentOS 6 and there was a need to update grub.conf - change the default kernel plus add a boot option. Both mentioned operations had to be done in Puppet 3.7 (Augeas is of course also available in higher versions of Puppet). Sounds easy, right?

    Read on →