Release Summary
This major release includes breaking changes to support requirements and the removal of overdue deprecations from the ec2_instance and cloudformation modules. The collection now requires ansible-core >= 2.18.0 which supports Python >= 3.11. Additionally, minimum boto3 and botocore versions have been increased to 1.38.0. Deprecated parameters placement_group and tenancy from ec2_instance, and template from cloudformation have been removed. This release also includes bugfixes for the route53_zone module and refactoring improvements to autoscaling, RDS, and ELB modules.
Minor Changes
- CI test matrices updated against ansible-core 2.21 in addition to 2.18, 2.19, and 2.20 (#3142).
- Collection - Add aiobotocore version 2.23.0 as a dependency for the event source plugins (#2952).
- autoscaling_group - Refactored module to reduce code complexity, improve error handling, and replace manual wait loops with waiter-based implementations (#2938).
- autoscaling_group - Standardised return values with autoscaling_group_info by extracting shared transformation logic to module_utils (#2938).
- autoscaling_group_info - Refactored module to reduce code complexity, improve error handling, and replace manual wait loops with waiter-based implementations (#2938).
- autoscaling_group_info - Standardised return values with autoscaling_group by extracting shared transformation logic to module_utils (#2938).
- aws_account_attribute - added
on_deniedparameter to control behaviour when access to account attributes is denied, supporting error (default), skip, and warn modes. (#2914) - aws_ec2 inventory plugin - Added availability_zone_id to the placement block in host variables (#1550).
- aws_ec2 inventory plugin - Addressed SonarCloud code-smells by reducing cognitive complexity in hostname processing methods (#2936).
- ec2_tag - added
resource_tagsas an alias for thetagsparameter, matching the convention already used by theec2_instancemodule (#3085). - elb_application_lb - Refactor module to reduce cognitive complexity and improve code maintainability (#2946).
- elb_application_lb - add
http_xff_header_processing_modeto set whether the load balancer appends, preserves, or removes the X-Forwarded-For header (#3098). - lookup plugins - created centralised LookupErrorHandler decorator pattern to reduce code duplication and cognitive complexity in lookup plugins. (#2914)
- lookup plugins - updated deprecated text converter imports from
ansible.module_utils._texttoansible.module_utils.common.text.convertersto avoid deprecation warnings. (#2914) - module_utils/_rds/api - Added shared utility functions for DB parameter group operations with
@RDSErrorHandlerdecorators for standardized error handling. (#3065) - module_utils/_rds/common - Added
DBParameterGroupNotFoundFaultto the list of not-found error codes handled byRDSErrorHandler. (#3065) - module_utils/rds - Added
describe_db_clusterscentralized wrapper with@RDSErrorHandlerand@AWSRetrydecorators, and addedDBClusterNotFoundFaultto the error handler (#3041). - module_utils/rds - Added
describe_global_clusterscentralized wrapper with@RDSErrorHandlerand@AWSRetrydecorators, and addedGlobalClusterNotFoundFaultto the error handler (#3068). - module_utils/rds - Added
describe_option_groupscentralized wrapper with@RDSErrorHandlerand@AWSRetrydecorators, and addedOptionGroupNotFoundFaultto the error handler (#3065). - module_utils/rds -
describe_db_cluster_parameter_groups()anddescribe_db_cluster_parameters()now take a boto3 client and**paramslike the otherdescribe_*helpers, dropping the unusedmoduleargument (#3089). - plugin_utils/inventory - Refactored error handling to use centralised InventoryErrorHandler following S3ErrorHandler pattern (#2936).
- rds_cluster - Removed module-level globals, replaced
eval()dispatch withformat_rds_client_method_parameters(), and use shareddescribe_db_clustersfrommodule_utils/rdsfor consistent error handling (#3041). - rds_cluster_info - Refactored module to use shared
describe_db_clustersfrommodule_utils/rdsandAnsibleRDSErrorfor consistent error handling (#3041). - rds_cluster_param_group - Refactored shared
describe_db_cluster_parameter_groupsanddescribe_db_cluster_parametersinmodule_utils/rdsto useRDSErrorHandlerdecorator for consistent error handling following previous PRs. (#3069) - rds_cluster_param_group - refactored the module onto the shared
module_utils/rdshelpers, removing the redundantbotocoreimport and connectiontry/exceptblock (#3089). - rds_cluster_param_group - the current parameters are now indexed by name when comparing them against the requested ones, instead of the full list being scanned once per requested parameter (#3089).
- rds_cluster_param_group - the parameter group returned by the create call is now reused, removing a redundant
describe_db_cluster_parameter_groups()call (#3089). - rds_cluster_param_group_info - refactored the module onto the shared
module_utils/rdshelpers and removed the redundantbotocoreimport and connectiontry/exceptblock (#3089). - rds_cluster_snapshot - Added docstrings to the module's helper functions, aligning the module with the style used by the shared
module_utils/rdsutilities (#3090). - rds_engine_versions_info - Refactored module to use shared utility functions from
module_utils/rdsfor API calls, error handling, and retry logic (#3062). - rds_global_cluster_info - Refactored module to use shared
describe_global_clustersfrommodule_utils/rdsandAnsibleRDSErrorfor consistent error handling (#3068). - rds_instance_param_group - Refactored to use shared utilities from
module_utils/_rds/api.pyincludingdescribe_db_instance_parameter_groups,describe_db_parameters,create_db_parameter_group,modify_db_parameter_group, anddelete_db_parameter_groupfor consistent error handling and reduced code duplication. (#3065) - rds_instance_param_group_info - Updated module to use refactored
describe_db_instance_parameter_groupsfunction with new signature that retrieves tags separately. (#3065) - rds_instance_snapshot - Simplified the
absentstate logic to remove a redundant branch and added docstrings to the module's helper functions, aligning the module with the style used by the sharedmodule_utils/rdsutilities (#3080). - rds_option_group - Refactored module to use shared
describe_option_groupsandget_tagsfrommodule_utils/rds, and standardized error handling (#3064). - rds_option_group - Removed direct
botocore.exceptionsimports and inlinetry/exceptblocks; option group create, modify, delete, and tagging calls are now made through small helper functions decorated withRDSErrorHandler, standardizing error handling onAnsibleRDSError(#3078). - rds_option_group_info - Refactored module to use shared
describe_option_groupsfrommodule_utils/rdsandAnsibleRDSErrorfor consistent error handling (#3065). - rds_subnet_group - Refactored module to use the shared
describe_db_subnet_groupsandcall_methodhelpers frommodule_utils/rdsand standardized error handling onAnsibleRDSError, removing the module-local backoff and duplicatedtry/exceptblocks (#3072). - secretsmanager_secret - refactored to use LookupErrorHandler decorator, reducing cognitive complexity from 36 to <15. (#2914)
- ssm_parameter - refactored to use LookupErrorHandler decorator, reducing cognitive complexity from 28 to <15. (#2914)
Breaking Changes / Porting Guide
- Collection - Minimum supported Python version is now 3.9 (#2922).
- Collection - Minimum supported boto3 version is now 1.38.0 (#2922).
- Collection - Minimum supported boto3 version is now 1.38.23 (#2952).
- Collection - Minimum supported botocore version is now 1.38.0 (#2922).
- Collection - Minimum supported botocore version is now 1.38.23 (#2952).
- Support for ansible-core < 2.18 has been dropped. The collection now requires ansible-core >= 2.18.0 which supports Python >= 3.11 (#3142).
- cloudformation - removed the deprecated
templateparameter. The parameter was deprecated in release 7.6.0 and the removal date of 2026-05-01 has passed. Usetemplate_bodywith theansible.builtin.fileoransible.builtin.templatelookup plugin instead (#3097). - ec2_instance - removed the
placement_groupparameter. The parameter was deprecated in release 7.0.0. Useplacement.group_nameinstead (#2937). - ec2_instance - removed the
tenancyparameter. The parameter was deprecated in release 7.0.0. Useplacement.tenancyinstead (#2937). - s3_object - removed support for boolean values in the
overwriteparameter. Only the string valuesalways,never,different, orlatestare now accepted (#2924). - s3_object - removed support for passing both
dualstackandendpoint_urlparameters at the same time. The parameters are now mutually exclusive. To use dualstack endpoints with a custom endpoint, specify the dualstack endpoint URL directly inendpoint_url(#2924).
Deprecated Features
- Collection - Support for Python 3.9 is deprecated and will be removed in a release after 2027-04-01, following AWS SDK for Python's end of support for Python 3.9 in April 2026 (#2922).
Bugfixes
- cloudformation - Fix SHA1 hashing for FIPS mode compatibility by adding usedforsecurity=False parameter to support Python running in FIPS-enabled environments (#2921).
- module_utils/s3 - Fix MD5 hashing for FIPS mode compatibility by adding usedforsecurity=False parameter to support Python running in FIPS-enabled environments (#2921).
- rds_cluster - Fixed
KeyErrorwhen stopping or starting clusters becausechanging_cluster_optionsassumedApplyImmediatelywas always present in the parameters (#3041). - rds_option_group - Fixed
check_modenot being respected during option group creation when tags are provided (#3064). - rds_option_group -
state=absentno longer fails when the option group is deleted by another process between the existence check and the delete call;changedis now derived from the delete call's actual result instead of being pre-set toTrue(#3078). - route53_zone - Remove the default value for
dnssecparameter to avoid idempotency issues (#2553). - secretsmanager_secret - fixed bug where falsy values (0, empty string, False) were incorrectly filtered when on_missing/on_denied was set to skip or warn. Now only None values are filtered. (#2914)