Ansible
guest@6admin.io:~$ ls ~/tags/ansible
log0u7.hyperv: the second dynamic inventory, this time from the hypervisor
An Ansible collection on Galaxy that builds the inventory from Hyper-V itself: VMs queried over WinRM or PSRP, native Cacheable and Constructable mixins, state/host/tag groups and the design choices that differ from a DNS-based inventory.
Scripting is not industrialising
The boundary between ad hoc scripting and an automation platform: desired state, idempotence, inventory, secrets, reporting, traceability. Windows automates very well too; the difference is not the OS, it is platform versus script.
Windows 11 for build machines: the wrong tool
Windows 11 client on headless bare-metal build machines in a server room: the detail of the provisioning and operational friction and why Windows Server with Desktop Experience does the same job for a fraction of the pain.
Clean package management on Windows: WinGet, Chocolatey, Scoop and Ansible, each in its place
Discovering and adopting Scoop for my Windows environments: shims, separation of responsibilities between package managers, Ansible orchestrating everything (winget, chocolatey, scoop and MSI/EXE through win_package) and mise per project. Environment as Code.
Linux is just the kernel
A useful bit of pedantry about what Linux actually is, then the substantive point: the layers people use to rank sysadmin profiles measure the distribution, not the system and the kernel stays the common denominator.
Ansible CI Toolkit v1: the year I stopped trusting my own image
The hardened sequel: ansible and ansible-lint merged into one image, Kerberos/WinRM for Windows targets, non-root, base pinned by digest, a pip constraints lock, transitive Galaxy pins and cosign signing. Built by a CHANGELOG that reads like a CVE diary.
Your DNS zone is already an inventory: the log0u7.dns collection
An Ansible dynamic inventory built from DNS records, without zone transfers: TXT manifests, SRV records, DNS-SD (RFC 6763) and naming patterns, resolved in parallel. Plus the reverse converter that turns any inventory into a BIND zone.
Unix Frugality: do more with less
The `cat | grep` pipe as a cultural marker, apropos and man before everything, the dsniff suite as a design lesson, an auditable bash toolkit against the Rube Goldberg machine and why Kali doesn't teach Linux administration.
When a Chocolatey checksum breaks a whole provisioning run
A Chocolatey Community package whose vendor updated the binary without the maintainer updating the checksum and the whole Windows provisioning stops. The real subject is not the hash, it is depending on a binary you do not host.
Terraform creates, Ansible configures
Why IaC and configuration management do not overlap, why Terraform alone only holds in a strictly immutable model and how remote-exec is the signal that you have crossed the line.
Driving Windows from Ansible without leaking credentials
Ansible transport to Windows: WinRM, Kerberos over NTLM and how not to carry domain credentials in cleartext.
One Ansible image for GitLab CI, built right from a Paris basement
Why I stopped using the official Ansible images in CI and built my own on Alpine: multi-stage venv, pinned ansible-core, collections installed at build time. Episode one: the 2022 public release of an image born much earlier, with its honest list of early sins.
GitOps, the word after the practice: gitflow, GitLab CI, Terraform and Ansible
The word GitOps has been spreading for a year and I read it recognizing what I was already doing: an adapted gitflow, conventions and a GitLab CI pipeline chaining Terraform to create and Ansible to configure, with git as the only source of truth. GitOps in the broad sense and the honest part of what it is not quite.
Ansible before Ansible: ssh, a CSV and a template engine
Before Ansible existed, there was my 2006-2007 contraption: a host list, an ssh loop, inventory variables in a CSV, pure bash and a template engine whose name I have shamefully forgotten. Assumed archaeology of what worked, what was missing and what Ansible later made explicit.
Puppet: my first modules, or moving from the ssh loop to declaring
After my bash scripts and my CSV inventory, Puppet: the install/config/service triad, $::operatingsystem selectors and require/notify chains. What declaring brings to the ssh loop.