What Is New in Ansible 2.9
Ansible 2.9 is a feature-packed release that brings new modules, significant core improvements, and a host of bug fixes. This version continues to build on the stable foundation of the 2.x series, enhancing automation for network, cloud, and infrastructure management.
| Category | Count | Highlights |
|---|---|---|
| New Modules & Plugins | 140+ | Major expansions in network automation (including F5, Juniper, VyOS) and cloud providers (AWS, Azure, VMware). |
| Core Improvements | N/A | New ansible and ansible-playbook CLI options, inventory plugin updates, and performance tweaks. |
| Bug Fixes | 240+ | Resolved issues across modules, plugins, and the core engine to improve stability and reliability. |
| Deprecated Features | N/A | Several modules have been deprecated and will be removed in a future release. Check the porting guide. |
What new modules were added for network automation?
The network automation space got a massive boost with over 70 new modules. This is a big deal for teams managing heterogeneous network environments, as it drastically reduces the need for custom scripts.
New modules were added for F5 BIG-IP (like bigip_asm_policy), Juniper Junos (like junos_scp), and VyOS (like vyos_config). There's also a new net_get module that works across multiple network platforms to fetch configurations. In practice, this means you can now build more granular and idempotent playbooks for device configuration and security policy management.
How did cloud management get better?
Cloud modules saw significant updates, particularly for AWS and VMware. This matters because it keeps Ansible in lockstep with the rapid pace of change in cloud APIs and features.
New AWS modules include aws_ssm for managing Systems Manager parameters and ec2_launch_template. For VMware, new modules like vmware_guest_disk and vmware_host_ntp provide much finer control over VMs and ESXi hosts. These additions make provisioning and lifecycle management of cloud resources more precise and less error-prone.
What core engine changes should I know about?
The core engine received several under-the-hood improvements that affect playbook execution and debugging. These aren't flashy but they improve the day-to-day experience.
New CLI Options
The ansible command gained a --playbook-dir option, which sets the base directory for playbook execution. The ansible-playbook command now supports --skip-tags during a --list-tasks run, making it easier to plan complex executions.
Inventory Plugins
Updates to inventory plugins like aws_ec2 and vmware_vm_inventory improve performance and accuracy when building dynamic inventories from cloud sources.
What major bugs were squashed?
Over 240 bug fixes landed in this release, targeting common pain points across modules and the core. This directly translates to more reliable automation runs and fewer head-scratching moments.
Key fixes address issues with module error handling, race conditions in async tasks, and improved idempotency in various network modules. For example, fixes to the uri module make HTTP-based interactions more robust, and numerous fixes to the package family of modules improve reliability across different Linux distributions.
Is anything being deprecated?
Yes, as with any release, some older modules have been deprecated to make way for modern replacements. You'll want to check your playbooks for these to avoid future breakage.
Notable deprecations include the original ec2 module (replaced by ec2_instance) and several Azure modules that have been superseded by the newer azure_rm collection. The include statement for playbooks is also formally deprecated in favor of import_playbook and include_tasks. The porting guide provides a full list and migration paths.
FAQ
I use F5 BIG-IP. What's the most important new module for me?
The bigip_asm_policy module is a standout. It lets you manage Application Security Manager policies directly from Ansible, which was often a manual or scripted task before. This brings critical security configuration into your infrastructure-as-code workflow.
Does the new --playbook-dir option change how relative paths work?
Yes, exactly. Setting --playbook-dir sets the base directory for resolving relative paths in playbooks, like for vars_files or included tasks. This is cleaner than using --extra-vars to hack in a base path and makes playbooks more portable.
I had issues with the uri module timing out. Is that fixed?
Probably. Several fixes went into the uri module to handle redirects, SSL validation, and timeout behavior more reliably. If you were working around these issues with custom code, it's worth testing with the 2.9 version to see if you can simplify your playbooks.
Should I be worried about the deprecated ec2 module?
Not immediately, but you should start planning a migration. The deprecated ec2 module is replaced by the more powerful and feature-complete ec2_instance module. The old module will still work for now but will be removed in a future release. The new module aligns better with the modern AWS EC2 API.
Are there any changes to how Python dependencies are handled?
Not in the core engine itself, but many of the new and updated modules (especially for network gear and cloud) have specific Python library requirements. Always check the module documentation. In practice, you might need to update your control node's Python environment or use a virtualenv to satisfy these new dependencies.