Installation of new 3/4" oak hardwood flooring at my house

I love the look and feel of hardwood flooring. After we positively destroyed the oldest carpet remaining in

Flooring project demolition removing carpet and parquet

Migrating JeffGeerling.com to Drupal 8 — LIVE!

tl;dr : Subscribe to my YouTube Channel ; I'm going to start migrating this website to Drupal 8 on a livestream every Tuesday at 10 a.m. US Central (3 p.m. UTC).

Ever since Drupal 8 was released, I've been waffling on the decision to migrate/upgrade this website (JeffGeerling.com) to Drupal 8. The site started off years ago as a static HTML site generated by Thingamablog , a really old Java-based static blog generator.

JeffGeerling.com - dark mode in 2020 in Drupal 7

Review: Nikon Z50

I've been shooting Nikon DSLRs since the D40 came out, and currently shoot with D700 and D750 FX bodies which have served me well for years.

In the past, I've rented a Z6 —Nikon's first foray into pro-level mirrorless cameras—for a couple events, and I also own a Sony a6000 and have rented a Sony A7iii for a couple events. I have been very interested

Nikon Z50 with 16-50mm DX VR lens

Ansible for Kubernetes, my second self-published book

Ansible for Kubernetes book cover - by Jeff Geerling

Five years ago, I set out to write a book. For a topic, I picked Ansible, since I was familiar with the software, and noticed there weren't any other books about it. I struck gold with Ansible for DevOps , and have since sold over 22,000 copies between eBook and paperback copies.

I've written about self-publishing before , and my opinion about publishing technical works is stronger than ever:

  • Don't write for a publisher (usually)
  • Use the

Debugging networking issues with multi-node Kubernetes on VirtualBox

Since this is the third time I've burned more than a few hours on this particular problem, I thought I'd finally write up a blog post. Hopefully I find this post in the future, the fourth time I run into the problem.

What problem is that? Well, when I build a new Kubernetes cluster with multiple nodes in VirtualBox (usually orchestrated with Vagrant and Ansible, using my geerlingguy.kubernetes role), I get everything running. kubectl works fine, all pods (including CoreDNS,


Another year, another Crohn’s hospitalization

Being in the hospital with Crohn’s disease is miserable.

But before I get too negative, I have to confirm one major benefit to having an ostomy and being hospitalized: it’s a lot easier to give stool samples now. I don’t even need a toilet!

Anyways, while a lot of us who have chronic diseases often laugh it off or put on a happy face, and post to our social media accounts, it’s a slog. It


How to idempotently change file attributes (e.g. immutable) with Ansible

I recently needed to force the /etc/resolv.conf file to be immutable on a set of CentOS servers, since the upstream provider's DHCP server was giving me a poorly-running set of default DNS servers, which was getting written to the resolv.conf file on every reboot.

There are a few different ways to force your own DNS servers (and override DHCP), but one of the simplest, at least for my use case, is to change the file attributes on /etc/resolv


Drupal VM 5.1 ('Recognizer') brings PHP 7.4 support

PHP 7.4.0 running on Drupal VM with Drupal 8's status report page

Drupal VM 5.1.0 was just released (release name Recognizer ), and the main feature is PHP 7.4 support; you can now begin running and testing your Drupal sites under PHP 7.4 to check for any incompatibilities.

PHP 7.4 includes some new features like typed properties, arrow functions, and opcache preloading which could help with certain types of code or site deployments (I'm interested to see if opcache preloading could help the startup time of Drupal inside container environments like Kubernetes!


Everything I know about Kubernetes I learned from a cluster of Raspberry Pis

I realized I haven't posted about my DrupalCon Seattle 2019 session titled Everything I know about Kubernetes I learned from a cluster of Raspberry Pis , so I thought I'd remedy that. First, here's a video of the recorded session:

The original Raspberry Pi Dramble Cluster

Run Ansible Tower or AWX in Kubernetes or OpenShift with the Tower Operator

Note : Please note that the Tower Operator this post references is currently in early alpha status, and has no official support from Red Hat. If you are planning on using Tower for production and have a Red Hat Ansible Automation subscription, you should use one of the official Tower installation methods . Someday the operator may become a supported install method, but it is not right now.

I have been building a variety of Kubernetes Operators using the Operator SDK . Operators make managing applications in Kubernetes (and OpenShift/OCP) clusters

AWX Tower Operator SDK built with Ansible for Kubernetes