Browse by topic: ansible 16 · apache 1 · claude-code 1 · cloud-init 1 · git 4 · github-pages 3 · gitlab-ci 1 · http 1 · kubernetes 13 · linux 3 · nixos 7 · oauth2 1 · packer 2 · podman 7 · proxmox 5 · python 2 · seo 4 · ssh 1 · terraform 4 · tls 3 · vscode 1 · windows 4
Recent TILs
ansible Running playbooks locally in the execution environment production uses - 2026-09-30
Seventh entry in the Ansible development environment series. Part 6 pointed the editor at the team's execution environment (EE), the container image that AAP (Red Hat Ansible Automation Platform) and its automation controller run every job in. This part does the same for the…
ansible Committing the VS Code Ansible settings with the repository - 2026-09-29
Sixth entry in the Ansible development environment series. Part 4 chose where VS Code runs and part 5 installed the tools. This part makes every developer's editor behave the same way on a given repository. The means is two small files committed next to the code: one for…
ansible Ansible Development Tools (ADT): one install, and the Python version decides what you get - 2026-09-29
Fifth entry in the Ansible development environment series. Part 4 chose where the tools run; this one is about the tools themselves. ADT (Ansible Development Tools) is the PyPI package ansible-dev-tools. It's a meta-package: its own code is little more than an adt command, and…
ansible Where to run an Ansible development environment: venv, Dev Container, Remote-SSH, code-server or Dev Spaces - 2026-09-29
Fourth entry in the Ansible development environment series. The first three decide what the runtime is made of and how to lock it. This one decides where the editor and tools run. There are five common answers, and most of the choice comes down to three things: - what the…
ansible Building an Ansible execution environment from a locked requirements file - 2026-09-29
Third entry in the Ansible development environment series. An execution environment (EE) is a container image holding the whole Ansible runtime: ansible-core, ansible-runner, Python packages, collections and system packages. The first entry ranks it against the venv-based…
ansible Locking an Ansible development environment: pip, venv, pip-tools, uv or an execution environment - 2026-09-29
First entry in the Ansible development environment series. An Ansible project needs a runtime on the control node, the machine that runs ansible-playbook. That runtime has five layers, and each tool below fixes some of them:
ansible Pinning ansible-core with pip-tools, uv and Poetry - 2026-09-29
Second entry in the Ansible development environment series; the first ranks all the options. pip-tools, uv and Poetry all do the same job for an Ansible project. They record the exact ansible-core a project runs, plus everything it pulls in, so every laptop and CI job installs…
ansible Handling deployment failures with Ansible's block/rescue/always - 2026-09-29
Saw a LinkedIn post comparing Ansible's block/rescue/always to try/catch — deploy, roll back automatically on failure, alert the team, clean up regardless. It's a real, built-in Ansible feature (current docs), and it's more precise than "try/catch" once you look at what…
python Getting a newer Python on RHEL without touching the system python3 - 2026-09-29
RHEL (and Rocky/Alma/CentOS Stream) ties /usr/bin/python3 to whatever version the OS release shipped with. dnf and a bunch of system tooling depend on that exact interpreter, so replacing it is how you break dnf on the next update. uv, a Python package and project manager from…
terraform What Terraform, OpenTofu, and Packer promise about secrets, and where each promise stops - 2026-09-29
The Ansible Vault entry on this site was framed around a boundary Ansible states outright: encryption there "ONLY protects data at rest." Terraform's equivalent — the sensitive argument — makes no such promise, and it's worth being precise about which of the three tools can…
ansible
- Starting an Ansible role project with uv for the venv - 2026-09-05
- Using the Foreman/Satellite dynamic inventory plugin - 2026-09-05
- Targeting hosts the same way, whether the inventory is static or dynamic - 2026-09-05
- Storing an Ansible Galaxy token as an environment variable, not in ansible.cfg - 2026-09-05
- git tag basics, grounded in how Ansible collection releases actually use them - 2026-09-12
- Deploying a Podman Quadlet stack on RHEL9 with linux-system-roles - 2026-09-16
- Ansible Vault encrypts the secret in git; Podman's default driver stores it in plaintext - 2026-09-20
- What Ansible Vault actually encrypts, and where that protection stops - 2026-09-24
- Handling deployment failures with Ansible's block/rescue/always - 2026-09-29
- Building an Ansible execution environment from a locked requirements file - 2026-09-29
- Locking an Ansible development environment: pip, venv, pip-tools, uv or an execution environment - 2026-09-29
- Pinning ansible-core with pip-tools, uv and Poetry - 2026-09-29
- Where to run an Ansible development environment: venv, Dev Container, Remote-SSH, code-server or Dev Spaces - 2026-09-29
- Ansible Development Tools (ADT): one install, and the Python version decides what you get - 2026-09-29
- Committing the VS Code Ansible settings with the repository - 2026-09-29
- Running playbooks locally in the execution environment production uses - 2026-09-30
github-pages
- Publishing a TIL collection as a static GitHub Pages site - 2026-09-05
- Adding an Atom feed and syntax highlighting to a static site build script - 2026-09-05
- Rendering Mermaid diagrams in a Python-Markdown static site - 2026-09-12
gitlab-ci
http
podman
- Hosting a simple PHP page with Podman + Caddy, with automatic HTTPS - 2026-09-05
- Moving a container image between hosts with podman save + scp + load, no registry - 2026-09-05
- Sanity-checking a fresh Docker or Podman install with each engine's own hello-world - 2026-09-06
- Podman equivalents to Docker's Dive image-layer explorer - 2026-09-12
- Root vs rootless Podman on RHEL 10 and Ubuntu 26.04 - 2026-09-13
- Auto-updating the Caddy/Adminer/PHP Quadlet stack needs more than one AutoUpdate key - 2026-09-21
- Pointing Podman at an Artifactory mirror without editing a single image name - 2026-09-21
proxmox
- Installing a RIPE Atlas software probe in a Proxmox LXC - 2026-09-05
- Injecting qemu-guest-agent into an Ubuntu cloud template, from the CLI - 2026-09-07
- A libvirt RHEL Kickstart example ported to Proxmox, minus the one flag with no equivalent - 2026-09-20
- Debugging a Proxmox VM whose cloud-init config didn't apply - 2026-09-20
- A Proxmox VM on demand, NixOS from Git: OpenTofu builds a skeleton, nixos-anywhere replaces it, and the host key exists before the VM - 2026-09-27
python
- A regex link checker breaks on the exact HTML it was meant to check - 2026-09-05
- Getting a newer Python on RHEL without touching the system python3 - 2026-09-29
seo
- Don't hand-write a sitemap.xml, generate it from data you already have - 2026-09-05
- robots.txt for a small static site is basically a pointer to the sitemap - 2026-09-05
- A schema.org Person block is what actually helps you rank for your own name - 2026-09-05
- Verifying a GitHub Pages site with Bing Webmaster Tools (no DNS needed) - 2026-09-05
tls
- Checking a TLS certificate's dates, issuer, and SANs with openssl - 2026-09-05
- Splitting a .pfx into a certificate, key, and CA chain with openssl - 2026-09-05
- Adding a certificate to a Java keystore/truststore with keytool - 2026-09-05
cloud-init
- Layering extra cloud-init config without fighting Terraform/OpenTofu's auto-generated user-data - 2026-09-07
git
- Installing git, gh, and glab, and the auth each one actually needs - 2026-09-12
- Syncing a diverged fork: take the pipeline fixes, not the content - 2026-09-27
- Configuring a repository for coding agents: what the guidance actually says - 2026-09-27
- A branch you fetched was force-pushed: keep the old tip, then `rebase --onto` - 2026-09-27
oauth2
- GitLab with OAuth 2.0 / OIDC — the simple principle - 2026-09-12
kubernetes
- What Kubernetes actually is, and how it works - 2026-09-17
- Cleanly stopping an RKE2 node for planned maintenance - 2026-09-17
- Installing a single-node RKE2 server for a lab - 2026-09-18
- Getting kubectl to work against RKE2 from off the node - 2026-09-18
- What RKE2 actually is, and how its pieces fit together - 2026-09-18
- Pods, Deployments, Services — the minimum object model - 2026-09-18
- RKE2's default CNI is Canal, and you pick it before the first start - 2026-09-18
- RKE2's ingress default moved to Traefik, because ingress-nginx is ending - 2026-09-18
- RKE2 ships no default StorageClass, and a PVC will sit Pending forever - 2026-09-18
- Going HA with RKE2: three servers, one address, and the datastore choice - 2026-09-18
- RKE2's etcd snapshots run on schedule, but a fresh cluster starts with none - 2026-09-19
- Restoring RKE2 etcd across an HA cluster, and backing snapshots up to S3 - 2026-09-20
- RKE2 leaves its servers schedulable, so your workloads have been running on the control plane all along - 2026-09-20
packer
- What Packer actually is, and how it works - 2026-09-17
- Kickstart, cloud-init and Image Builder are three layers, not three choices - 2026-09-20
ssh
terraform
- What Terraform/OpenTofu actually is, and how it works - 2026-09-17
- What Terraform/OpenTofu, Nomad, and Packer are, and how they relate - 2026-09-17
- Terraform state locking just dropped its DynamoDB requirement - 2026-09-23
- What Terraform, OpenTofu, and Packer promise about secrets, and where each promise stops - 2026-09-29
apache
linux
- What cgroups v2 actually is, and how Podman and Kubernetes use it - 2026-09-18
- Building a custom WSL2 kernel on GitHub Actions: `KCFLAGS`, not `CFLAGS` - 2026-09-28
- Checking new firewall rules with nc and Python: open, refused, or dropped - 2026-09-29
windows
- Finding and force-closing a locked file on a Windows SMB share - 2026-09-18
- RDP into Windows 11 with a Microsoft account: the password, not the PIN, and `MicrosoftAccount\` - 2026-09-28
- Oh My Posh in PowerShell and in WSL2 zsh, with one config file - 2026-09-28
- Installing PowerShell 7 on Windows, Debian and RHEL, the way Microsoft documents it - 2026-09-29
vscode
nixos
- First steps on NixOS: the whole system is one file, and every change is a boot entry - 2026-09-25
- NixOS on WSL2: a short admin runbook, and the files WSL manages instead of NixOS - 2026-09-25
- Oh My Zsh on NixOS: the plugin list installs nothing, and NixOS aliases win - 2026-09-26
- Testing a NixOS configuration on GitHub Actions: evaluate on every push, boot it where KVM is - 2026-09-26
- Testing a NixOS configuration on self-managed GitLab CE: the eval job runs anywhere, the VM test needs a runner you prepare - 2026-09-26
- Home Manager as a NixOS module: dotfiles in the same rebuild, and the file that's in the way - 2026-09-27
- A user's PATH on NixOS: declare packages, and know which settings reach services - 2026-09-28