Blog
Thoughts on engineering, design, and building great products.
Ansible Galaxy and Collections
Ansible's modern packaging and distribution: a collection bundles modules, roles, and plugins under one namespace; FQCN for explicit calls; installing collections from Galaxy with requirements.yml; and distinguishing ansible-core from the full ansible package.
Roles: Organizing Reusable Code
As a playbook grows, you need organization. A role is how Ansible packages tasks, handlers, templates, and variables into a reusable unit with a standard directory structure. This article: create a role with ansible-galaxy init, fill it in, and use it in a playbook.
Handlers, Loops and Conditionals
Control playbook flow: loop to repeat a task over many values, when to run conditionally, handlers to react to changes (restart on config change), and block/rescue for clean error handling. With real run logs.
Variables, Facts and Templates (Jinja2)
Make playbooks flexible: variables (declared in many places, with a precedence order), facts (host information Ansible gathers automatically), and Jinja2 templates to generate config files dynamically from variables and facts. Watch the rendered file appear on a real host.
Modules and Idempotency
Deep dive: how a module works internally to achieve idempotency — read the current state, compare to desired, change only the difference, then report changed. Why command/shell aren't idempotent, check mode, and a tour of common modules.
Playbook: Structure and Tasks
The playbook is the heart of Ansible — a YAML file describing desired state. This article: the structure of plays and tasks, writing and running your first playbook to install a web server, reading the PLAY RECAP, FQCN, and check mode (dry-run).
Inventory: Static, Dynamic, Groups and Variables
Inventory is where Ansible knows which machines to manage. This article: write a static inventory (INI/YAML), gather hosts into groups and nested groups, assign variables via group_vars/host_vars, target with patterns, and dynamic inventory for the cloud.