Blog
Thoughts on engineering, design, and building great products.
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.
Installation and Your First Ad-hoc Commands
Set up the control node (install Ansible), prepare a host to manage, write the config and inventory files, then run your first ad-hoc commands: ping, command, shell, setup, and become to run as root.
Ansible Architecture: Control Node, Inventory, Module and SSH
Deep dive into Ansible's architecture: control node, managed node, inventory, module. And exactly what happens when you run a command — Ansible packages the module, ships it over SSH to the host, runs it with the host's Python, gets JSON back. Observe it for real with -vvv.
What Ansible Is and Why You Should Use It
Series opener: the configuration-management problem Ansible solves, why 'agentless' and 'idempotent' are the two most important keywords, the core concepts (control node, inventory, playbook, module, role), and the roadmap from basics to writing your own module.