Browse by topic: ansible 12 · 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 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…
windows Installing PowerShell 7 on Windows, Debian and RHEL, the way Microsoft documents it - 2026-09-29
PowerShell 7 (pwsh) is the cross-platform PowerShell. On Windows, it installs next to Windows PowerShell 5.1 (powershell.exe) rather than replacing it. On Linux, Microsoft's preferred source is its own package repository, packages.microsoft.com ("PMC"). Commands below are from…
linux Checking new firewall rules with nc and Python: open, refused, or dropped - 2026-09-29
The security team has opened these flows for dar-servera:
claude-code Starting with Jev in Claude Code: a plugin that adds a skill, and an API key for experiments - 2026-09-29
Jev is TypeSafe's first "System One" model. It doesn't write text or code. You send it some state and a map of typed questions, and it answers each one with a number or a label: a yes/no probability, a choice among options, or a score. The idea is to replace fragile parsing, or…
linux Building a custom WSL2 kernel on GitHub Actions: `KCFLAGS`, not `CFLAGS` - 2026-09-28
A custom WSL2 kernel is one bzImage file and one line in .wslconfig. Compiling it takes a full Linux toolchain and a quarter of an hour of four cores. GitHub Actions provides both. Standard runners are free for public repositories, with 4 CPUs and 16 GB of RAM. Private…
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
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