Skip to content

feat(elasticache): add replication group support for Valkey - #2386

Open
johnou wants to merge 6 commits into
ansible-collections:mainfrom
johnou:feature/valkey-elasticache
Open

feat(elasticache): add replication group support for Valkey#2386
johnou wants to merge 6 commits into
ansible-collections:mainfrom
johnou:feature/valkey-elasticache

Conversation

@johnou

@johnou johnou commented Jan 22, 2026

Copy link
Copy Markdown
SUMMARY

Add replication-group support (including Valkey) to the ElastiCache module, expand parameter group family choices, and add a Valkey‑focused integration test path alongside the existing Redis tests (tagged for selective runs).

ISSUE TYPE
  • Feature Pull Request
COMPONENT NAME

elasticache

ADDITIONAL INFORMATION
PLAY [testhost] ****************************************************************

TASK [Gathering Facts] *********************************************************
ok: [testhost]

TASK [elasticache : Create VPC to launch Elasticache instances into] ***********
changed: [testhost] => {"changed": true, "resource_actions": ["ec2:ModifyVpcAttribute", "ec2:DescribeVpcs", "ec2:CreateVpc", "ec2:DescribeVpcAttribute"], "vpc": {"cidr_block": "10.112.0.0/16", "cidr_block_association_set": [{"association_id": "vpc-cidr-assoc-REDACTED_ID", "cidr_block": "10.112.0.0/16", "cidr_block_state": {"state": "associated"}}], "dhcp_options_id": "dopt-REDACTED_ID", "id": "vpc-REDACTED", "instance_tenancy": "default", "is_default": false, "name": "ansible-test-REDACTED_ID-fi0mcb031-elasticache-test-vpc", "owner_id": "REDACTED_ACCOUNT", "state": "available", "tags": {"Name": "ansible-test-REDACTED_ID-fi0mcb031-elasticache-test-vpc"}}}

TASK [elasticache : Create subnet 1 in this VPC to launch Elasticache instances into] ***
changed: [testhost] => {"changed": true, "resource_actions": ["ec2:DescribeSubnets", "ec2:CreateSubnet"], "subnet": {"assign_ipv6_address_on_creation": false, "availability_zone": "ap-southeast-2b", "availability_zone_id": "apse2-az1", "available_ip_address_count": 251, "cidr_block": "10.112.1.0/24", "default_for_az": false, "enable_dns64": false, "id": "subnet-REDACTED", "ipv6_association_id": "", "ipv6_cidr_block": "", "ipv6_cidr_block_association_set": [], "ipv6_native": false, "map_customer_owned_ip_on_launch": false, "map_public_ip_on_launch": false, "owner_id": "REDACTED_ACCOUNT", "private_dns_name_options_on_launch": {"enable_resource_name_dns_a_record": false, "enable_resource_name_dns_aaaa_record": false, "hostname_type": "ip-name"}, "state": "available", "subnet_arn": "arn:aws:REDACTED", "tags": {}, "vpc_id": "vpc-REDACTED"}}

TASK [elasticache : Create subnet 2 in this VPC to launch Elasticache instances into] ***
changed: [testhost] => {"changed": true, "resource_actions": ["ec2:CreateSubnet", "ec2:DescribeSubnets"], "subnet": {"assign_ipv6_address_on_creation": false, "availability_zone": "ap-southeast-2b", "availability_zone_id": "apse2-az1", "available_ip_address_count": 251, "cidr_block": "10.112.2.0/24", "default_for_az": false, "enable_dns64": false, "id": "subnet-REDACTED", "ipv6_association_id": "", "ipv6_cidr_block": "", "ipv6_cidr_block_association_set": [], "ipv6_native": false, "map_customer_owned_ip_on_launch": false, "map_public_ip_on_launch": false, "owner_id": "REDACTED_ACCOUNT", "private_dns_name_options_on_launch": {"enable_resource_name_dns_a_record": false, "enable_resource_name_dns_aaaa_record": false, "hostname_type": "ip-name"}, "state": "available", "subnet_arn": "arn:aws:REDACTED", "tags": {}, "vpc_id": "vpc-REDACTED"}}

TASK [elasticache : Create Elasticache Subnet Group (grouping two subnets together)] ***
changed: [testhost] => {"cache_subnet_group": {"arn": "arn:aws:REDACTED", "cache_subnet_group_description": "Subnet group grouping together both VPC subnets for Elasticache Test setup", "cache_subnet_group_name": "ansible-test-REDACTED_ID-fi0mcb031-elasticache-test-vpc-subnet-group", "description": "Subnet group grouping together both VPC subnets for Elasticache Test setup", "name": "ansible-test-REDACTED_ID-fi0mcb031-elasticache-test-vpc-subnet-group", "subnet_ids": ["subnet-REDACTED", "subnet-REDACTED"], "subnets": [{"subnet_availability_zone": {"name": "ap-southeast-2b"}, "subnet_identifier": "subnet-REDACTED", "supported_network_types": ["ipv4"]}, {"subnet_availability_zone": {"name": "ap-southeast-2b"}, "subnet_identifier": "subnet-REDACTED", "supported_network_types": ["ipv4"]}], "supported_network_types": ["ipv4"], "vpc_id": "vpc-REDACTED"}, "changed": true, "resource_actions": ["elasticache:CreateCacheSubnetGroup", "elasticache:DescribeCacheSubnetGroups"]}

TASK [elasticache : Create Valkey replication group on Elasticache in VPC subnets] ***
changed: [testhost] => {"changed": true, "description": "Allow access to Elasticache Valkey for integration tests", "group_id": "sg-REDACTED", "group_name": "ansible-test-REDACTED_ID-fi0mcb031-elasticache-test-valkey-sg", "ip_permissions": [{"from_port": 6379, "ip_protocol": "tcp", "ip_ranges": [{"cidr_ip": "10.31.0.0/16"}], "ipv6_ranges": [], "prefix_list_ids": [], "to_port": 6379, "user_id_group_pairs": []}], "ip_permissions_egress": [{"ip_protocol": "-1", "ip_ranges": [{"cidr_ip": "0.0.0.0/0"}], "ipv6_ranges": [], "prefix_list_ids": [], "user_id_group_pairs": []}], "owner_id": "REDACTED_ACCOUNT", "resource_actions": ["sts:GetCallerIdentity", "ec2:CreateSecurityGroup", "ec2:AuthorizeSecurityGroupIngress", "ec2:DescribeSecurityGroups"], "tags": {}, "vpc_id": "vpc-REDACTED"}

TASK [elasticache : Create Valkey replication group on Elasticache in VPC subnets] ***
changed: [testhost] => {"changed": true, "elasticache": {"data": {"ARN": "arn:aws:REDACTED", "AtRestEncryptionEnabled": true, "AuthTokenEnabled": false, "AutoMinorVersionUpgrade": true, "AutomaticFailover": "disabled", "CacheNodeType": "cache.t3.micro", "ClusterEnabled": false, "ClusterMode": "disabled", "DataTiering": "disabled", "Description": "Valkey replication group for integration tests", "GlobalReplicationGroupInfo": {}, "IpDiscovery": "ipv4", "LogDeliveryConfigurations": [], "MemberClusters": ["ansible-test-REDACTED_ID-fi0mcb031-valkey-001"], "MultiAZ": "disabled", "NetworkType": "ipv4", "NodeGroups": [{"NodeGroupId": "0001", "NodeGroupMembers": [{"CacheClusterId": "ansible-test-REDACTED_ID-fi0mcb031-valkey-001", "CacheNodeId": "0001", "CurrentRole": "primary", "PreferredAvailabilityZone": "ap-southeast-2b", "ReadEndpoint": {"Address": "ansible-test-REDACTED_ID-fi0mcb031-valkey-001.mi4qpi.0001.REDACTED_ENDPOINT", "Port": 6379}}], "PrimaryEndpoint": {"Address": "ansible-test-REDACTED_ID-fi0mcb031-valkey.mi4qpi.ng.0001.REDACTED_ENDPOINT", "Port": 6379}, "ReaderEndpoint": {"Address": "ansible-test-REDACTED_ID-fi0mcb031-valkey-ro.mi4qpi.ng.0001.REDACTED_ENDPOINT", "Port": 6379}, "Status": "available"}], "PendingModifiedValues": {}, "ReplicationGroupCreateTime": "2026-01-22T15:32:20.098000+00:00", "ReplicationGroupId": "ansible-test-REDACTED_ID-fi0mcb031-valkey", "SnapshotRetentionLimit": 0, "SnapshotWindow": "13:00-14:00", "Status": "available", "TransitEncryptionEnabled": false}, "name": "ansible-test-REDACTED_ID-fi0mcb031-valkey", "status": "available"}, "resource_actions": ["elasticache:DescribeReplicationGroups", "elasticache:CreateReplicationGroup"]}

TASK [elasticache : Assert that task worked] ***********************************
ok: [testhost] => {
    "changed": false,
    "msg": "All assertions passed"
}

TASK [elasticache : Make sure test Valkey replication group is deleted again from Elasticache] ***
changed: [testhost] => {"changed": true, "elasticache": {"name": "ansible-test-REDACTED_ID-fi0mcb031-valkey", "status": "gone"}, "resource_actions": ["elasticache:DescribeReplicationGroups", "elasticache:DeleteReplicationGroup"]}

TASK [elasticache : Make sure Valkey Security Group is deleted again] **********
changed: [testhost] => {"changed": true, "group_id": null, "resource_actions": ["ec2:DescribeSecurityGroups", "ec2:DeleteSecurityGroup", "sts:GetCallerIdentity"]}

PLAY RECAP *********************************************************************
testhost                   : ok=10   changed=8    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

AWS ACTIONS: ['ec2:AuthorizeSecurityGroupIngress', 'ec2:CreateSecurityGroup', 'ec2:CreateSubnet', 'ec2:CreateVpc', 'ec2:DeleteSecurityGroup', 'ec2:DescribeSecurityGroups', 'ec2:DescribeSubnets', 'ec2:DescribeVpcAttribute', 'ec2:DescribeVpcs', 'ec2:ModifyVpcAttribute', 'elasticache:CreateCacheSubnetGroup', 'elasticache:CreateReplicationGroup', 'elasticache:DeleteReplicationGroup', 'elasticache:DescribeCacheSubnetGroups', 'elasticache:DescribeReplicationGroups', 'sts:GetCallerIdentity']


@github-actions

github-actions Bot commented Jan 22, 2026

Copy link
Copy Markdown

Docs Build 📝

Thank you for contribution!✨

The docsite for this PR is available for download as an artifact from this run:
https://github.com/ansible-collections/community.aws/actions/runs/24338345919

You can compare to the docs for the main branch here:
https://ansible-collections.github.io/community.aws/branch/main

File changes:

  • M collections/community/aws/aws_waf_condition_module.html
  • M collections/community/aws/aws_waf_info_module.html
  • M collections/community/aws/aws_waf_rule_module.html
  • M collections/community/aws/aws_waf_web_acl_module.html
  • M collections/community/aws/elasticache_module.html
  • M collections/community/aws/elasticache_parameter_group_module.html
  • M collections/community/aws/index.html
  • M collections/community/aws/sts_session_token_module.html
  • M collections/community/aws/waf_condition_module.html
  • M collections/community/aws/waf_info_module.html
  • M collections/community/aws/waf_rule_module.html
  • M collections/community/aws/waf_web_acl_module.html
  • M collections/community/aws/wafv2_ip_set_module.html
  • M collections/deprecations.html
  • M collections/index_module.html
Click to see the diff comparison.

NOTE: only file modifications are shown here. New and deleted files are excluded.
See the file list and check the published docs to see those files.

The diff output was truncated because it exceeded the maximum size.

diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/aws_waf_condition_module.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/aws_waf_condition_module.html
index fe0377f..b37d3b9 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/aws_waf_condition_module.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/aws_waf_condition_module.html
@@ -7,7 +7,7 @@
 <meta content="2.24.0" name="antsibull-docs" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>community.aws.aws_waf_condition module &mdash; Ansible collections  documentation</title>
+  <title>community.aws.aws_waf_condition &mdash; Ansible collections  documentation</title>
       <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=41de9001" />
       <link rel="stylesheet" type="text/css" href="../../../_static/css/ansible.css?v=b54c304f" />
       <link rel="stylesheet" type="text/css" href="../../../_static/antsibull-minimal.css" />
@@ -100,7 +100,7 @@
           <div role="navigation" aria-label="Page navigation">
   <ul class="wy-breadcrumbs">
       <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
-      <li class="breadcrumb-item active">community.aws.aws_waf_condition module</li>
+      <li class="breadcrumb-item active">community.aws.aws_waf_condition</li>
       <li class="wy-breadcrumbs-aside">
       </li>
   </ul>
@@ -111,19 +111,15 @@
   
            <div itemprop="articleBody">
              
-  <span class="target" id="ansible-collections-community-aws-aws-waf-condition-module"></span><section id="community-aws-aws-waf-condition-module">
-<h1>community.aws.aws_waf_condition module<a class="headerlink" href="#community-aws-aws-waf-condition-module" title="Link to this heading"></a></h1>
+  <span class="target" id="ansible-collections-community-aws-aws-waf-condition-module"></span><section id="community-aws-aws-waf-condition">
+<h1>community.aws.aws_waf_condition<a class="headerlink" href="#community-aws-aws-waf-condition" title="Link to this heading"></a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
-<p>This redirect is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
+<p>This plugin was part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
 </div>
-<ul class="simple">
-<li><p>This redirect has been <strong>deprecated</strong>. Please update your tasks to use the new name <code class="docutils literal notranslate"><span class="pre">community.aws.waf_condition</span></code> instead.
-It will be removed in a major release after 2027-01-01 of community.aws.</p></li>
-<li><p>This is a redirect to the <a class="reference internal" href="waf_condition_module.html#ansible-collections-community-aws-waf-condition-module"><span class="std std-ref">community.aws.waf_condition module</span></a>.</p></li>
-<li><p>This redirect does <strong>not</strong> work with Ansible 2.9.</p></li>
-<li><p>The collection contains the following information on this deprecation: the community.aws.aws_waf_condition alias has been deprecated. Please update your tasks to use community.aws.waf_condition.</p></li>
-</ul>
+<p>This module has been removed
+in version 12.0.0 of community.aws.
+Amazon has retired the `WAF Classic` service. Please use the `AWS WAF (WAFv2)` service and modules instead.</p>
 </section>
 
 
diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/aws_waf_info_module.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/aws_waf_info_module.html
index a79d051..de7dbf0 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/aws_waf_info_module.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/aws_waf_info_module.html
@@ -7,7 +7,7 @@
 <meta content="2.24.0" name="antsibull-docs" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>community.aws.aws_waf_info module &mdash; Ansible collections  documentation</title>
+  <title>community.aws.aws_waf_info &mdash; Ansible collections  documentation</title>
       <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=41de9001" />
       <link rel="stylesheet" type="text/css" href="../../../_static/css/ansible.css?v=b54c304f" />
       <link rel="stylesheet" type="text/css" href="../../../_static/antsibull-minimal.css" />
@@ -100,7 +100,7 @@
           <div role="navigation" aria-label="Page navigation">
   <ul class="wy-breadcrumbs">
       <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
-      <li class="breadcrumb-item active">community.aws.aws_waf_info module</li>
+      <li class="breadcrumb-item active">community.aws.aws_waf_info</li>
       <li class="wy-breadcrumbs-aside">
       </li>
   </ul>
@@ -111,19 +111,15 @@
   
            <div itemprop="articleBody">
              
-  <span class="target" id="ansible-collections-community-aws-aws-waf-info-module"></span><section id="community-aws-aws-waf-info-module">
-<h1>community.aws.aws_waf_info module<a class="headerlink" href="#community-aws-aws-waf-info-module" title="Link to this heading"></a></h1>
+  <span class="target" id="ansible-collections-community-aws-aws-waf-info-module"></span><section id="community-aws-aws-waf-info">
+<h1>community.aws.aws_waf_info<a class="headerlink" href="#community-aws-aws-waf-info" title="Link to this heading"></a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
-<p>This redirect is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
+<p>This plugin was part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
 </div>
-<ul class="simple">
-<li><p>This redirect has been <strong>deprecated</strong>. Please update your tasks to use the new name <code class="docutils literal notranslate"><span class="pre">community.aws.waf_info</span></code> instead.
-It will be removed in a major release after 2027-01-01 of community.aws.</p></li>
-<li><p>This is a redirect to the <a class="reference internal" href="waf_info_module.html#ansible-collections-community-aws-waf-info-module"><span class="std std-ref">community.aws.waf_info module</span></a>.</p></li>
-<li><p>This redirect does <strong>not</strong> work with Ansible 2.9.</p></li>
-<li><p>The collection contains the following information on this deprecation: the community.aws.aws_waf_info alias has been deprecated. Please update your tasks to use community.aws.waf_info.</p></li>
-</ul>
+<p>This module has been removed
+in version 12.0.0 of community.aws.
+Amazon has retired the `WAF Classic` service. Please use the `AWS WAF (WAFv2)` service and modules instead.</p>
 </section>
 
 
diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/aws_waf_rule_module.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/aws_waf_rule_module.html
index f4a298b..fdfe81c 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/aws_waf_rule_module.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/aws_waf_rule_module.html
@@ -7,7 +7,7 @@
 <meta content="2.24.0" name="antsibull-docs" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>community.aws.aws_waf_rule module &mdash; Ansible collections  documentation</title>
+  <title>community.aws.aws_waf_rule &mdash; Ansible collections  documentation</title>
       <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=41de9001" />
       <link rel="stylesheet" type="text/css" href="../../../_static/css/ansible.css?v=b54c304f" />
       <link rel="stylesheet" type="text/css" href="../../../_static/antsibull-minimal.css" />
@@ -100,7 +100,7 @@
           <div role="navigation" aria-label="Page navigation">
   <ul class="wy-breadcrumbs">
       <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
-      <li class="breadcrumb-item active">community.aws.aws_waf_rule module</li>
+      <li class="breadcrumb-item active">community.aws.aws_waf_rule</li>
       <li class="wy-breadcrumbs-aside">
       </li>
   </ul>
@@ -111,19 +111,15 @@
   
            <div itemprop="articleBody">
              
-  <span class="target" id="ansible-collections-community-aws-aws-waf-rule-module"></span><section id="community-aws-aws-waf-rule-module">
-<h1>community.aws.aws_waf_rule module<a class="headerlink" href="#community-aws-aws-waf-rule-module" title="Link to this heading"></a></h1>
+  <span class="target" id="ansible-collections-community-aws-aws-waf-rule-module"></span><section id="community-aws-aws-waf-rule">
+<h1>community.aws.aws_waf_rule<a class="headerlink" href="#community-aws-aws-waf-rule" title="Link to this heading"></a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
-<p>This redirect is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
+<p>This plugin was part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
 </div>
-<ul class="simple">
-<li><p>This redirect has been <strong>deprecated</strong>. Please update your tasks to use the new name <code class="docutils literal notranslate"><span class="pre">community.aws.waf_rule</span></code> instead.
-It will be removed in a major release after 2027-01-01 of community.aws.</p></li>
-<li><p>This is a redirect to the <a class="reference internal" href="waf_rule_module.html#ansible-collections-community-aws-waf-rule-module"><span class="std std-ref">community.aws.waf_rule module</span></a>.</p></li>
-<li><p>This redirect does <strong>not</strong> work with Ansible 2.9.</p></li>
-<li><p>The collection contains the following information on this deprecation: the community.aws.aws_waf_rule alias has been deprecated. Please update your tasks to use community.aws.waf_rule.</p></li>
-</ul>
+<p>This module has been removed
+in version 12.0.0 of community.aws.
+Amazon has retired the `WAF Classic` service. Please use the `AWS WAF (WAFv2)` service and modules instead.</p>
 </section>
 
 
diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/aws_waf_web_acl_module.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/aws_waf_web_acl_module.html
index 2be63e0..41391e7 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/aws_waf_web_acl_module.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/aws_waf_web_acl_module.html
@@ -7,7 +7,7 @@
 <meta content="2.24.0" name="antsibull-docs" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>community.aws.aws_waf_web_acl module &mdash; Ansible collections  documentation</title>
+  <title>community.aws.aws_waf_web_acl &mdash; Ansible collections  documentation</title>
       <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=41de9001" />
       <link rel="stylesheet" type="text/css" href="../../../_static/css/ansible.css?v=b54c304f" />
       <link rel="stylesheet" type="text/css" href="../../../_static/antsibull-minimal.css" />
@@ -100,7 +100,7 @@
           <div role="navigation" aria-label="Page navigation">
   <ul class="wy-breadcrumbs">
       <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
-      <li class="breadcrumb-item active">community.aws.aws_waf_web_acl module</li>
+      <li class="breadcrumb-item active">community.aws.aws_waf_web_acl</li>
       <li class="wy-breadcrumbs-aside">
       </li>
   </ul>
@@ -111,19 +111,15 @@
   
            <div itemprop="articleBody">
              
-  <span class="target" id="ansible-collections-community-aws-aws-waf-web-acl-module"></span><section id="community-aws-aws-waf-web-acl-module">
-<h1>community.aws.aws_waf_web_acl module<a class="headerlink" href="#community-aws-aws-waf-web-acl-module" title="Link to this heading"></a></h1>
+  <span class="target" id="ansible-collections-community-aws-aws-waf-web-acl-module"></span><section id="community-aws-aws-waf-web-acl">
+<h1>community.aws.aws_waf_web_acl<a class="headerlink" href="#community-aws-aws-waf-web-acl" title="Link to this heading"></a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
-<p>This redirect is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
+<p>This plugin was part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
 </div>
-<ul class="simple">
-<li><p>This redirect has been <strong>deprecated</strong>. Please update your tasks to use the new name <code class="docutils literal notranslate"><span class="pre">community.aws.waf_web_acl</span></code> instead.
-It will be removed in a major release after 2027-01-01 of community.aws.</p></li>
-<li><p>This is a redirect to the <a class="reference internal" href="waf_web_acl_module.html#ansible-collections-community-aws-waf-web-acl-module"><span class="std std-ref">community.aws.waf_web_acl module</span></a>.</p></li>
-<li><p>This redirect does <strong>not</strong> work with Ansible 2.9.</p></li>
-<li><p>The collection contains the following information on this deprecation: the community.aws.aws_waf_web_acl alias has been deprecated. Please update your tasks to use community.aws.waf_web_acl.</p></li>
-</ul>
+<p>This module has been removed
+in version 12.0.0 of community.aws.
+Amazon has retired the `WAF Classic` service. Please use the `AWS WAF (WAFv2)` service and modules instead.</p>
 </section>
 
 
diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/elasticache_module.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/elasticache_module.html
index 07606f1..e831e22 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/elasticache_module.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/elasticache_module.html
@@ -278,7 +278,8 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 <a class="ansibleOptionLink" href="#parameter-engine" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>Name of the cache engine to be used.</p>
-<p>Supported values are <code class="docutils literal notranslate"><span class="pre">redis</span></code> and <code class="docutils literal notranslate"><span class="pre">memcached</span></code>.</p>
+<p>Supported values are <code class="docutils literal notranslate"><span class="pre">redis</span></code> and <code class="docutils literal notranslate"><span class="pre">memcached</span></code> when managing cache clusters.</p>
+<p>Supported values are <code class="docutils literal notranslate"><span class="pre">redis</span></code> and <code class="docutils literal notranslate"><span class="pre">valkey</span></code> when <em>replication_group=true</em>.</p>
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">&quot;memcached&quot;</span></code></p>
 </div></td>
 </tr>
@@ -344,6 +345,128 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 </div></td>
 </tr>
 <tr class="row-odd"><td><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group"><strong>replication_group</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-cell"><p>Whether to manage a replication group instead of a cache cluster.</p>
+<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p>
+<ul class="simple">
+<li><p><code class="ansible-option-default-bold docutils literal notranslate"><strong><span class="pre">false</span></strong></code> <span class="ansible-option-choices-default-mark">← (default)</span></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li>
+</ul>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options"><strong>replication_group_options</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-cell"><p>Additional options used when <em>replication_group=true</em>.</p>
+</div></td>
+</tr>
+<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/automatic_failover"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-automatic-failover"><strong>automatic_failover</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/automatic_failover" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Whether automatic failover is enabled for the replication group.</p>
+<p>Only used when <em>replication_group=true</em>.</p>
+<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p>
+<ul class="simple">
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li>
+</ul>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/cluster_mode"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-cluster-mode"><strong>cluster_mode</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/cluster_mode" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Cluster mode setting for the replication group (for example, <code class="docutils literal notranslate"><span class="pre">enabled</span></code> or <code class="docutils literal notranslate"><span class="pre">disabled</span></code>).</p>
+<p>Only used when <em>replication_group=true</em>.</p>
+</div></td>
+</tr>
+<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/multi_az_enabled"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-multi-az-enabled"><strong>multi_az_enabled</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/multi_az_enabled" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Whether Multi-AZ is enabled for the replication group.</p>
+<p>Only used when <em>replication_group=true</em>.</p>
+<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p>
+<ul class="simple">
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li>
+</ul>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/num_cache_clusters"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-num-cache-clusters"><strong>num_cache_clusters</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/num_cache_clusters" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>The number of cache clusters in the replication group.</p>
+<p>Only used when <em>replication_group=true</em>.</p>
+</div></td>
+</tr>
+<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/num_node_groups"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-num-node-groups"><strong>num_node_groups</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/num_node_groups" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>The number of node groups (shards) for the replication group.</p>
+<p>Only used when <em>replication_group=true</em>.</p>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/replicas_per_node_group"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-replicas-per-node-group"><strong>replicas_per_node_group</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/replicas_per_node_group" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">integer</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>The number of replica nodes in each node group (shard) for the replication group.</p>
+<p>Only used when <em>replication_group=true</em>.</p>
+</div></td>
+</tr>
+<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/replication_group_description"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-replication-group-description"><strong>replication_group_description</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/replication_group_description" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Description for the replication group.</p>
+<p>Required when <em>replication_group=true</em> and <em>state=present</em>.</p>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/retain_primary_cluster"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-retain-primary-cluster"><strong>retain_primary_cluster</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/retain_primary_cluster" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Whether to retain the primary cluster when deleting a replication group.</p>
+<p>Only used when <em>replication_group=true</em>.</p>
+<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p>
+<ul class="simple">
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li>
+</ul>
+</div></td>
+</tr>
+<tr class="row-odd"><td><div class="ansible-option-indent"></div><div class="ansible-option-cell">
+<div class="ansibleOptionAnchor" id="parameter-replication_group_options/transit_encryption_enabled"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-replication-group-options-transit-encryption-enabled"><strong>transit_encryption_enabled</strong></p>
+<a class="ansibleOptionLink" href="#parameter-replication_group_options/transit_encryption_enabled" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p>
+<p><em class="ansible-option-versionadded">added in community.aws 10.1.0</em></p>
+</div></td>
+<td><div class="ansible-option-indent-desc"></div><div class="ansible-option-cell"><p>Whether in-transit encryption is enabled for the replication group.</p>
+<p>Only used when <em>replication_group=true</em>.</p>
+<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p>
+<ul class="simple">
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">false</span></code></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li>
+</ul>
+</div></td>
+</tr>
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-secret_key"></div>
 <div class="ansibleOptionAnchor" id="parameter-aws_secret_access_key"></div>
 <div class="ansibleOptionAnchor" id="parameter-aws_secret_key"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-secret-key"><span id="ansible-collections-community-aws-elasticache-module-parameter-aws-secret-key"></span><span id="ansible-collections-community-aws-elasticache-module-parameter-aws-secret-access-key"></span><strong>secret_key</strong></p>
@@ -357,7 +480,7 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 <p>The <em>aws_secret_access_key</em> alias was added in release 5.1.0 for consistency with the AWS botocore SDK.</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-security_group_ids"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-security-group-ids"><strong>security_group_ids</strong></p>
 <a class="ansibleOptionLink" href="#parameter-security_group_ids" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">list</span> / <span class="ansible-option-elements">elements=string</span></p>
 </div></td>
@@ -365,7 +488,7 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 <p class="ansible-option-line"><strong class="ansible-option-default-bold">Default:</strong> <code class="ansible-option-default docutils literal notranslate"><span class="pre">[]</span></code></p>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-session_token"></div>
 <div class="ansibleOptionAnchor" id="parameter-aws_session_token"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-session-token"><span id="ansible-collections-community-aws-elasticache-module-parameter-aws-session-token"></span><strong>session_token</strong></p>
 <a class="ansibleOptionLink" href="#parameter-session_token" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: aws_session_token</span></p>
@@ -377,7 +500,7 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 <p>The <em>session_token</em> and <em>profile</em> options are mutually exclusive.</p>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-state"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-state"><strong>state</strong></p>
 <a class="ansibleOptionLink" href="#parameter-state" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span> / <span class="ansible-option-required">required</span></p>
 </div></td>
@@ -391,7 +514,7 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 </ul>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-validate_certs"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-validate-certs"><strong>validate_certs</strong></p>
 <a class="ansibleOptionLink" href="#parameter-validate_certs" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p>
 </div></td>
@@ -404,7 +527,7 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 </ul>
 </div></td>
 </tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
+<tr class="row-odd"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-wait"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-wait"><strong>wait</strong></p>
 <a class="ansibleOptionLink" href="#parameter-wait" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p>
 </div></td>
@@ -416,7 +539,7 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 </ul>
 </div></td>
 </tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
+<tr class="row-even"><td><div class="ansible-option-cell">
 <div class="ansibleOptionAnchor" id="parameter-zone"></div><p class="ansible-option-title" id="ansible-collections-community-aws-elasticache-module-parameter-zone"><strong>zone</strong></p>
 <a class="ansibleOptionLink" href="#parameter-zone" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
@@ -463,6 +586,17 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 <span class="w">  </span><span class="nt">community.aws.elasticache</span><span class="p">:</span>
 <span class="w">    </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;test-please-delete&quot;</span>
 <span class="w">    </span><span class="nt">state</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">rebooted</span>
+
+<span class="p p-Indicator">-</span><span class="w"> </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">Create a Valkey replication group</span>
+<span class="w">  </span><span class="nt">community.aws.elasticache</span><span class="p">:</span>
+<span class="w">    </span><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;test-valkey-rg&quot;</span>
+<span class="w">    </span><span class="nt">state</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">present</span>
+<span class="w">    </span><span class="nt">replication_group</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">true</span>
+<span class="w">    </span><span class="nt">replication_group_options</span><span class="p">:</span>
+<span class="w">      </span><span class="nt">replication_group_description</span><span class="p">:</span><span class="w"> </span><span class="s">&quot;Valkey</span><span class="nv"> </span><span class="s">test</span><span class="nv"> </span><span class="s">replication</span><span class="nv"> </span><span class="s">group&quot;</span>
+<span class="w">      </span><span class="nt">num_cache_clusters</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">1</span>
+<span class="w">    </span><span class="nt">engine</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">valkey</span>
+<span class="w">    </span><span class="nt">node_type</span><span class="p">:</span><span class="w"> </span><span class="l l-Scalar l-Scalar-Plain">cache.t3.micro</span>
 </pre></div>
 </div>
 <section id="authors">
diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/elasticache_parameter_group_module.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/elasticache_parameter_group_module.html
index 21b4a9f..308c8ce 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/elasticache_parameter_group_module.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/elasticache_parameter_group_module.html
@@ -244,16 +244,21 @@ see <a class="reference internal" href="#ansible-collections-community-aws-elast
 <a class="ansibleOptionLink" href="#parameter-group_family" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
 </div></td>
 <td><div class="ansible-option-cell"><p>The name of the cache parameter group family that the cache parameter group can be used with. Required when creating a cache parameter group.</p>
+<p>The values <code class="docutils literal notranslate"><span class="pre">memcached1.6</span></code>, <code class="docutils literal notranslate"><span class="pre">valkey7</span></code>, and <code class="docutils literal notranslate"><span class="pre">valkey8</span></code> were added in release <code class="docutils literal notranslate"><span class="pre">11.1.0</span></code>.</p>
 <p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p>
 <ul class="simple">
 <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;memcached1.4&quot;</span></code></p></li>
 <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;memcached1.5&quot;</span></code></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;memcached1.6&quot;</span></code></p></li>
 <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;redis2.6&quot;</span></code></p></li>
 <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;redis2.8&quot;</span></code></p></li>
 <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;redis3.2&quot;</span></code></p></li>
 <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;redis4.0&quot;</span></code></p></li>
 <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;redis5.0&quot;</span></code></p></li>
 <li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;redis6.x&quot;</span></code></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;redis7&quot;</span></code></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;valkey7&quot;</span></code></p></li>
+<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">&quot;valkey8&quot;</span></code></p></li>
 </ul>
 </div></td>
 </tr>
diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/index.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/index.html
index 7f63cd4..4ec2fe4 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/index.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/index.html
@@ -307,10 +307,6 @@
 <li><p><a class="reference internal" href="stepfunctions_state_machine_execution_module.html#ansible-collections-community-aws-stepfunctions-state-machine-execution-module"><span class="std std-ref">stepfunctions_state_machine_execution module</span></a> – Start or stop execution of an AWS Step Functions state machine</p></li>
 <li><p><a class="reference internal" href="storagegateway_info_module.html#ansible-collections-community-aws-storagegateway-info-module"><span class="std std-ref">storagegateway_info module</span></a> – Fetch AWS Storage Gateway information</p></li>
 <li><p><a class="reference internal" href="sts_session_token_module.html#ansible-collections-community-aws-sts-session-token-module"><span class="std std-ref">sts_session_token module</span></a> – obtain a session token from the AWS Security Token Service</p></li>
-<li><p><a class="reference internal" href="waf_condition_module.html#ansible-collections-community-aws-waf-condition-module"><span class="std std-ref">waf_condition module</span></a> – Create and delete WAF Conditions <strong class="ansible-deprecation-marker">DEPRECATED: REMOVED IN 12.0.0</strong></p></li>
-<li><p><a class="reference internal" href="waf_info_module.html#ansible-collections-community-aws-waf-info-module"><span class="std std-ref">waf_info module</span></a> – Retrieve information for WAF ACLs, Rules, Conditions and Filters <strong class="ansible-deprecation-marker">DEPRECATED: REMOVED IN 12.0.0</strong></p></li>
-<li><p><a class="reference internal" href="waf_rule_module.html#ansible-collections-community-aws-waf-rule-module"><span class="std std-ref">waf_rule module</span></a> – Create and delete WAF Rules <strong class="ansible-deprecation-marker">DEPRECATED: REMOVED IN 12.0.0</strong></p></li>
-<li><p><a class="reference internal" href="waf_web_acl_module.html#ansible-collections-community-aws-waf-web-acl-module"><span class="std std-ref">waf_web_acl module</span></a> – Create and delete WAF Web ACLs <strong class="ansible-deprecation-marker">DEPRECATED: REMOVED IN 12.0.0</strong></p></li>
 <li><p><a class="reference internal" href="wafv2_ip_set_module.html#ansible-collections-community-aws-wafv2-ip-set-module"><span class="std std-ref">wafv2_ip_set module</span></a> – wafv2_ip_set</p></li>
 <li><p><a class="reference internal" href="wafv2_ip_set_info_module.html#ansible-collections-community-aws-wafv2-ip-set-info-module"><span class="std std-ref">wafv2_ip_set_info module</span></a> – Get information about wafv2 ip sets</p></li>
 <li><p><a class="reference internal" href="wafv2_resources_module.html#ansible-collections-community-aws-wafv2-resources-module"><span class="std std-ref">wafv2_resources module</span></a> – wafv2_web_acl</p></li>
diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/sts_session_token_module.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/sts_session_token_module.html
index 16b7826..0395797 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/sts_session_token_module.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/sts_session_token_module.html
@@ -22,7 +22,7 @@
       <script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
     <script src="../../../_static/js/theme.js"></script>
     <link rel="search" title="Search" href="../../../search.html" />
-    <link rel="next" title="community.aws.waf_condition module – Create and delete WAF Conditions" href="waf_condition_module.html" />
+    <link rel="next" title="community.aws.wafv2_ip_set module – wafv2_ip_set" href="wafv2_ip_set_module.html" />
     <link rel="prev" title="community.aws.storagegateway_info module – Fetch AWS Storage Gateway information" href="storagegateway_info_module.html" /><!-- extra head elements for Ansible beyond RTD Sphinx Theme -->
 
 
@@ -405,7 +405,7 @@ see <a class="reference internal" href="#ansible-collections-community-aws-sts-s
 
 <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer">
         <a href="storagegateway_info_module.html" class="btn btn-neutral float-left" title="community.aws.storagegateway_info module – Fetch AWS Storage Gateway information" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a>
-        <a href="waf_condition_module.html" class="btn btn-neutral float-right" title="community.aws.waf_condition module – Create and delete WAF Conditions" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
+        <a href="wafv2_ip_set_module.html" class="btn btn-neutral float-right" title="community.aws.wafv2_ip_set module – wafv2_ip_set" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a>
     </div>
 
   <hr/>
diff --git a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/waf_condition_module.html b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/waf_condition_module.html
index 9610f90..e855f8a 100644
--- a/home/runner/work/community.aws/community.aws/docsbuild/base/collections/community/aws/waf_condition_module.html
+++ b/home/runner/work/community.aws/community.aws/docsbuild/head/collections/community/aws/waf_condition_module.html
@@ -7,7 +7,7 @@
 <meta content="2.24.0" name="antsibull-docs" />
 
   <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-  <title>community.aws.waf_condition module – Create and delete WAF Conditions &mdash; Ansible collections  documentation</title>
+  <title>community.aws.waf_condition &mdash; Ansible collections  documentation</title>
       <link rel="stylesheet" type="text/css" href="../../../_static/pygments.css?v=41de9001" />
       <link rel="stylesheet" type="text/css" href="../../../_static/css/ansible.css?v=b54c304f" />
       <link rel="stylesheet" type="text/css" href="../../../_static/antsibull-minimal.css" />
@@ -21,9 +21,7 @@
       <script src="../../../_static/doctools.js?v=fd6eb6e6"></script>
       <script src="../../../_static/sphinx_highlight.js?v=6ffebe34"></script>
     <script src="../../../_static/js/theme.js"></script>
-    <link rel="search" title="Search" href="../../../search.html" />
-    <link rel="next" title="community.aws.waf_info module – Retrieve information for WAF ACLs, Rules, Conditions and Filters" href="waf_info_module.html" />
-    <link rel="prev" title="community.aws.sts_session_token module – obtain a session token from the AWS Security Token Service" href="sts_session_token_module.html" /><!-- extra head elements for Ansible beyond RTD Sphinx Theme -->
+    <link rel="search" title="Search" href="../../../search.html" /><!-- extra head elements for Ansible beyond RTD Sphinx Theme -->
 
 
 
@@ -74,20 +72,8 @@
         </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu">
   
               <p class="caption" role="heading"><span class="caption-text">Collections:</span></p>
-<ul class="current">
-<li class="toctree-l1 current"><a class="reference internal" href="../../index.html">Collection Index</a><ul class="current">
-<li class="toctree-l2 current"><a class="reference internal" href="../index.html">Collections in the Community Namespace</a><ul class="current">
-<li class="toctree-l3 current"><a class="reference internal" href="index.html">Community.Aws</a><ul class="current">
-<li class="toctree-l4"><a class="reference internal" href="index.html#description">Description</a></li>
-<li class="toctree-l4"><a class="reference internal" href="index.html#communication">Communication</a></li>
-<li class="toctree-l4"><a class="reference internal" href="index.html#changelog">Changelog</a></li>
-<li class="toctree-l4 current"><a class="reference internal" href="index.html#plugin-index">Plugin Index</a></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</li>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="../../index.html">Collection Index</a></li>
 </ul>
 <p class="caption" role="heading"><span class="caption-text">Plugin indexes:</span></p>
 <ul>
@@ -114,13 +100,8 @@
           <div role="navigation" aria-label="Page navigation">
   <ul class="wy-breadcrumbs">
       <li><a href="../../../index.html" class="icon icon-home" aria-label="Home"></a></li>
-          <li class="breadcrumb-item"><a href="../../index.html">Collection Index</a></li>
-          <li class="breadcrumb-item"><a href="../index.html">Collections in the Community Namespace</a></li>
-          <li class="breadcrumb-item"><a href="index.html">Community.Aws</a></li>
-      <li class="breadcrumb-item active">community.aws.waf_condition module – Create and delete WAF Conditions</li>
+      <li class="breadcrumb-item active">community.aws.waf_condition</li>
       <li class="wy-breadcrumbs-aside">
-              <!-- User defined GitHub URL -->
-              <a href="https://github.com/ansible-collections/community.aws/edit/main/plugins/modules/waf_condition.py?description=%23%23%23%23%23%20SUMMARY%0A%3C!—%20Your%20description%20here%20–%3E%0A%0A%0A%23%23%23%23%23%20ISSUE%20TYPE%0A-%20Docs%20Pull%20Request%0A%0A%2Blabel:%20docsite_pr" class="fa fa-github"> Edit on GitHub</a>
       </li>
   </ul>
   <hr/>
@@ -130,875 +111,15 @@
   
            <div itemprop="articleBody">
              
-  <span class="target" id="ansible-collections-community-aws-waf-condition-module"></span><section id="community-aws-waf-condition-module-create-and-delete-waf-conditions">
-<h1>community.aws.waf_condition module – Create and delete WAF Conditions<a class="headerlink" href="#community-aws-waf-condition-module-create-and-delete-waf-conditions" title="Link to this heading"></a></h1>
+  <span class="target" id="ansible-collections-community-aws-waf-condition-module"></span><section id="community-aws-waf-condition">
+<h1>community.aws.waf_condition<a class="headerlink" href="#community-aws-waf-condition" title="Link to this heading"></a></h1>
 <div class="admonition note">
 <p class="admonition-title">Note</p>
-<p>This module is part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
-<p>It is not included in <code class="docutils literal notranslate"><span class="pre">ansible-core</span></code>.
-To check whether it is installed, run <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">list</span></code>.</p>
-<p>To install it, use: <code class="code docutils literal notranslate"><span class="pre">ansible-galaxy</span> <span class="pre">collection</span> <span class="pre">install</span> <span class="pre">community.aws</span></code>.
-You need further requirements to be able to use this module,
-see <a class="reference internal" href="#ansible-collections-community-aws-waf-condition-module-requirements"><span class="std std-ref">Requirements</span></a> for details.</p>
-<p>To use it in a playbook, specify: <code class="code docutils literal notranslate"><span class="pre">community.aws.waf_condition</span></code>.</p>
+<p>This plugin was part of the <a class="reference external" href="https://galaxy.ansible.com/ui/repo/published/community/aws/">community.aws collection</a> (version 12.0.0-dev0).</p>
 </div>
-<p class="ansible-version-added">New in community.aws 1.0.0</p>
-<nav class="contents local" id="contents">
-<ul class="simple">
-<li><p><a class="reference internal" href="#deprecated" id="id1">DEPRECATED</a></p></li>
-<li><p><a class="reference internal" href="#synopsis" id="id2">Synopsis</a></p></li>
-<li><p><a class="reference internal" href="#requirements" id="id3">Requirements</a></p></li>
-<li><p><a class="reference internal" href="#parameters" id="id4">Parameters</a></p></li>
-<li><p><a class="reference internal" href="#notes" id="id5">Notes</a></p></li>
-<li><p><a class="reference internal" href="#examples" id="id6">Examples</a></p></li>
-<li><p><a class="reference internal" href="#return-values" id="id7">Return Values</a></p></li>
-<li><p><a class="reference internal" href="#status" id="id8">Status</a></p></li>
-</ul>
-</nav>
-<section id="deprecated">
-<h2><a class="toc-backref" href="#id1" role="doc-backlink">DEPRECATED</a><a class="headerlink" href="#deprecated" title="Link to this heading"></a></h2>
-<dl class="field-list simple">
-<dt class="field-odd">Removed in<span class="colon">:</span></dt>
-<dd class="field-odd"><p>version 12.0.0</p>
-</dd>
-<dt class="field-even">Why<span class="colon">:</span></dt>
-<dd class="field-even"><p>Amazon has retired the “WAF Classic” service.</p>
-</dd>
-<dt class="field-odd">Alternative<span class="colon">:</span></dt>
-<dd class="field-odd"><p>Please use the “AWS WAF (WAFv2)” service and modules instead.</p>
-</dd>
-</dl>
-</section>
-<section id="synopsis">
-<h2><a class="toc-backref" href="#id2" role="doc-backlink">Synopsis</a><a class="headerlink" href="#synopsis" title="Link to this heading"></a></h2>
-<ul class="simple">
-<li><p>Read the AWS documentation for WAF <a class="reference external" href="https://aws.amazon.com/documentation/waf/">https://aws.amazon.com/documentation/waf/</a></p></li>
-<li><p>Prior to release 5.0.0 this module was called <code class="docutils literal notranslate"><span class="pre">community.aws.aws_waf_condition</span></code>. The usage did not change.</p></li>
-</ul>
-<p>Aliases: aws_waf_condition</p>
-</section>
-<section id="requirements">
-<span id="ansible-collections-community-aws-waf-condition-module-requirements"></span><h2><a class="toc-backref" href="#id3" role="doc-backlink">Requirements</a><a class="headerlink" href="#requirements" title="Link to this heading"></a></h2>
-<p>The below requirements are needed on the host that executes this module.</p>
-<ul class="simple">
-<li><p>python &gt;= 3.6</p></li>
-<li><p>boto3 &gt;= 1.38.0</p></li>
-<li><p>botocore &gt;= 1.38.0</p></li>
-</ul>
-</section>
-<section id="parameters">
-<h2><a class="toc-backref" href="#id4" role="doc-backlink">Parameters</a><a class="headerlink" href="#parameters" title="Link to this heading"></a></h2>
-<table class="longtable ansible-option-table docutils align-default" style="width: 100%">
-<thead>
-<tr class="row-odd"><th class="head"><p>Parameter</p></th>
-<th class="head"><p>Comments</p></th>
-</tr>
-</thead>
-<tbody>
-<tr class="row-even"><td><div class="ansible-option-cell">
-<div class="ansibleOptionAnchor" id="parameter-access_key"></div>
-<div class="ansibleOptionAnchor" id="parameter-aws_access_key_id"></div>
-<div class="ansibleOptionAnchor" id="parameter-aws_access_key"></div><p class="ansible-option-title" id="ansible-collections-community-aws-waf-condition-module-parameter-aws-access-key-id"><span id="ansible-collections-community-aws-waf-condition-module-parameter-aws-access-key"></span><span id="ansible-collections-community-aws-waf-condition-module-parameter-access-key"></span><strong>access_key</strong></p>
-<a class="ansibleOptionLink" href="#parameter-access_key" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-aliases">aliases: aws_access_key_id, aws_access_key</span></p>
-<p class="ansible-option-type-line"><span class="ansible-option-type">string</span></p>
-</div></td>
-<td><div class="ansible-option-cell"><p>AWS access key ID.</p>
-<p>See the AWS documentation for more information about access tokens <a class="reference external" href="https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys">https://docs.aws.amazon.com/general/latest/gr/aws-sec-cred-types.html#access-keys-and-secret-access-keys</a>.</p>
-<p>The <code class="docutils literal notranslate"><span class="pre">AWS_ACCESS_KEY_ID</span></code> or <code class="docutils literal notranslate"><span class="pre">AWS_ACCESS_KEY</span></code> environment variables may also be used in decreasing order of preference.</p>
-<p>The <em>aws_access_key</em> and <em>profile</em> options are mutually exclusive.</p>
-<p>The <em>aws_access_key_id</em> alias was added in release 5.1.0 for consistency with the AWS botocore SDK.</p>
-</div></td>
-</tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
-<div class="ansibleOptionAnchor" id="parameter-aws_ca_bundle"></div><p class="ansible-option-title" id="ansible-collections-community-aws-waf-condition-module-parameter-aws-ca-bundle"><strong>aws_ca_bundle</strong></p>
-<a class="ansibleOptionLink" href="#parameter-aws_ca_bundle" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">path</span></p>
-</div></td>
-<td><div class="ansible-option-cell"><p>The location of a CA Bundle to use when validating SSL certificates.</p>
-<p>The <code class="docutils literal notranslate"><span class="pre">AWS_CA_BUNDLE</span></code> environment variable may also be used.</p>
-</div></td>
-</tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
-<div class="ansibleOptionAnchor" id="parameter-aws_config"></div><p class="ansible-option-title" id="ansible-collections-community-aws-waf-condition-module-parameter-aws-config"><strong>aws_config</strong></p>
-<a class="ansibleOptionLink" href="#parameter-aws_config" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">dictionary</span></p>
-</div></td>
-<td><div class="ansible-option-cell"><p>A dictionary to modify the botocore configuration.</p>
-<p>Parameters can be found in the AWS documentation <a class="reference external" href="https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config">https://botocore.amazonaws.com/v1/documentation/api/latest/reference/config.html#botocore.config.Config</a>.</p>
-</div></td>
-</tr>
-<tr class="row-odd"><td><div class="ansible-option-cell">
-<div class="ansibleOptionAnchor" id="parameter-debug_botocore_endpoint_logs"></div><p class="ansible-option-title" id="ansible-collections-community-aws-waf-condition-module-parameter-debug-botocore-endpoint-logs"><strong>debug_botocore_endpoint_logs</strong></p>
-<a class="ansibleOptionLink" href="#parameter-debug_botocore_endpoint_logs" title="Permalink to this option"></a><p class="ansible-option-type-line"><span class="ansible-option-type">boolean</span></p>
-</div></td>
-<td><div class="ansible-option-cell"><p>Use a <code class="docutils literal notranslate"><span class="pre">botocore.endpoint</span></code> logger to parse the unique (rather than total) <code class="docutils literal notranslate"><span class="pre">&quot;resource:action&quot;</span></code> API calls made during a task, outputing the set to the resource_actions key in the task results. Use the <code class="docutils literal notranslate"><span class="pre">aws_resource_action</span></code> callback to output to total list made during a playbook.</p>
-<p>The <code class="docutils literal notranslate"><span class="pre">ANSIBLE_DEBUG_BOTOCORE_LOGS</span></code> environment variable may also be used.</p>
-<p class="ansible-option-line"><strong class="ansible-option-choices">Choices:</strong></p>
-<ul class="simple">
-<li><p><code class="ansible-option-default-bold docutils literal notranslate"><strong><span class="pre">false</span></strong></code> <span class="ansible-option-choices-default-mark">← (default)</span></p></li>
-<li><p><code class="ansible-option-choices-entry docutils literal notranslate"><span class="pre">true</span></code></p></li>
-</ul>
-</div></td>
-</tr>
-<tr class="row-even"><td><div class="ansible-option-cell">
-<div class="ansibleOptionAnchor" id="parameter-endpoint_url"></div>
-<div class="ansibleOptionAnchor" id="parameter-aws_endpoint_url"></div><p class="ansible-option-title" id="ansible-collections-community-aws-waf-condition-module-par

Comment thread plugins/modules/elasticache_parameter_group.py
@softwarefactory-project-zuul

Copy link
Copy Markdown
Contributor

Build succeeded.
https://ansible.softwarefactory-project.io/zuul/buildset/2d62d1b0c18c44f08406f5d80692f250

✔️ ansible-galaxy-importer SUCCESS in 5m 01s (non-voting)
✔️ build-ansible-collection SUCCESS in 11m 17s
✔️ ansible-test-splitter SUCCESS in 4m 15s
✔️ integration-community.aws-1 SUCCESS in 2m 38s
Skipped 21 jobs

@johnou
johnou force-pushed the feature/valkey-elasticache branch from f9155bb to 87b7c34 Compare January 22, 2026 14:39
@softwarefactory-project-zuul

Copy link
Copy Markdown
Contributor

Build succeeded.
https://ansible.softwarefactory-project.io/zuul/buildset/72cf8ba8f73c4758a4afad82959bfa2d

ansible-galaxy-importer RETRY_LIMIT Host unreachable in 7m 02s (non-voting)
✔️ build-ansible-collection SUCCESS in 11m 18s
✔️ ansible-test-splitter SUCCESS in 4m 20s
✔️ integration-community.aws-1 SUCCESS in 3m 02s
Skipped 21 jobs

@johnou
johnou force-pushed the feature/valkey-elasticache branch from 87b7c34 to 3a3a153 Compare January 22, 2026 15:52
@johnou
johnou marked this pull request as ready for review January 22, 2026 15:54
@johnou johnou changed the title feat(elasticache): add valkey support feat(elasticache): add replication group support for Valkey Jan 22, 2026
@softwarefactory-project-zuul

Copy link
Copy Markdown
Contributor

Build succeeded.
https://ansible.softwarefactory-project.io/zuul/buildset/03abf614b68a498db4315eed87c3090c

✔️ ansible-galaxy-importer SUCCESS in 6m 33s (non-voting)
✔️ build-ansible-collection SUCCESS in 11m 53s
✔️ ansible-test-splitter SUCCESS in 4m 22s
✔️ integration-community.aws-1 SUCCESS in 2m 37s
Skipped 21 jobs

@johnou

johnou commented Jan 22, 2026

Copy link
Copy Markdown
Author

I was under the impression that valkey would work with CreateCacheCluster but during testing the API returned the following..

TASK [elasticache : Create Valkey Server on Elasticache in VPC subnets] ********
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: botocore.errorfactory.InvalidParameterValueException: An error occurred (InvalidParameterValue) when calling the CreateCacheCluster operation: This API doesn't support Valkey engine. Please use CreateReplicationGroup API for Valkey cluster creation.
fatal: [testhost]: FAILED! => {"boto3_version": "1.35.0", "botocore_version": "1.35.0", "changed": false, "error": {"code": "InvalidParameterValue", "message": "This API doesn't support Valkey engine. Please use CreateReplicationGroup API for Valkey cluster creation.", "type": "Sender"}, "msg": "Failed to create cache cluster: An error occurred (InvalidParameterValue) when calling the CreateCacheCluster operation: This API doesn't support Valkey engine. Please use CreateReplicationGroup API for Valkey cluster creation.", "resource_actions": ["elasticache:CreateCacheCluster", "elasticache:DescribeCacheClusters"], "response_metadata": {"http_headers": {"connection": "close", "content-length": "366", "content-type": "text/xml", "date": "Thu, 22 Jan 2026 14:15:08 GMT", "x-amzn-requestid": "d8758700-935b-477f-ab53-68490b6a33c3"}, "http_status_code": 400, "request_id": "d8758700-935b-477f-ab53-68490b6a33c3", "retry_attempts": 0}}

@sukumaar

sukumaar commented Feb 9, 2026

Copy link
Copy Markdown

@johnou ,

Support for valkey is not provided in CreateCacheCluster. When an ElastiCache resource using valkey is required, either the CreateReplicationGroup API or the CreateServerlessCache API must be used.

Comment thread plugins/modules/elasticache.py Outdated
Comment thread plugins/modules/elasticache.py
Comment thread plugins/modules/elasticache.py
@softwarefactory-project-zuul

Copy link
Copy Markdown
Contributor

Build failed.
https://ansible.softwarefactory-project.io/zuul/buildset/13e42911e8aa4ffe92ee7f34ea6b4a05

⚠️ ansible-galaxy-importer SKIPPED Skipped due to failed job build-ansible-collection (non-voting)
build-ansible-collection POST_FAILURE in 10m 58s
ansible-test-splitter POST_FAILURE in 4m 12s
⚠️ integration-community.aws-1 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-2 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-3 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-4 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-5 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-6 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-7 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-8 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-9 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-10 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-11 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-12 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-13 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-14 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-15 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-16 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-17 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-18 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-19 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-20 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-21 SKIPPED Skipped due to failed job ansible-test-splitter
⚠️ integration-community.aws-22 SKIPPED Skipped due to failed job ansible-test-splitter

@johnou
johnou force-pushed the feature/valkey-elasticache branch from d4335e9 to 19054d3 Compare February 12, 2026 16:27
@johnou
johnou force-pushed the feature/valkey-elasticache branch from d14d9fc to 4433777 Compare February 12, 2026 16:30
@softwarefactory-project-zuul

Copy link
Copy Markdown
Contributor

Build succeeded.
https://ansible.softwarefactory-project.io/zuul/buildset/8feda244539942838eef1f4b86cbb037

✔️ ansible-galaxy-importer SUCCESS in 5m 16s (non-voting)
✔️ build-ansible-collection SUCCESS in 11m 05s
✔️ ansible-test-splitter SUCCESS in 4m 19s
✔️ integration-community.aws-1 SUCCESS in 2m 46s
Skipped 21 jobs

@sukumaar sukumaar left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are certain optional parameters that are missing in this PR. I mentioned it here

I would like to highlight role of some of the params here below:
These missing params are used for security:

AtRestEncryptionEnabled
AuthToken
UserGroupIds
TransitEncryptionMode

This missing param is used for global replication:

GlobalReplicationGroupId

These missing params used for snapshot:

SnapshotArns
SnapshotName
SnapshotRetentionLimit
SnapshotWindow

@johnou has also replied on my comment as below:

This PR is intentionally limited to the parameters needed for our current replication-group use case and that we’re familiar with.. I’d prefer to keep the scope small here rather than add a broad set of optional inputs we don’t currently use.

If this is the intended scope of the PR and the remaining parameters are planned for future work, I have no objections and changes look good to me.

@sukumaar

Copy link
Copy Markdown

@johnou I am tagging maintainers for approvals.

@beeankha @abikouo @hdefazio @mandar242 whenever it is possible, please review.

Comment thread plugins/modules/elasticache.py
Comment thread changelogs/fragments/20260122-elasticache-valkey.yaml Outdated
Comment thread changelogs/fragments/20260122-elasticache-valkey.yaml Outdated
Comment thread plugins/modules/elasticache.py Outdated
Comment thread plugins/modules/elasticache_parameter_group.py
johnou and others added 2 commits February 16, 2026 16:25
Co-authored-by: Bikouo Aubin <79859644+abikouo@users.noreply.github.com>
Co-authored-by: Bikouo Aubin <79859644+abikouo@users.noreply.github.com>
@softwarefactory-project-zuul

Copy link
Copy Markdown
Contributor

Build succeeded.
https://ansible.softwarefactory-project.io/zuul/buildset/275b7b856a014a92b9985209e7f1befa

✔️ ansible-galaxy-importer SUCCESS in 3m 57s (non-voting)
✔️ build-ansible-collection SUCCESS in 11m 10s
✔️ ansible-test-splitter SUCCESS in 4m 19s
✔️ integration-community.aws-1 SUCCESS in 2m 46s
Skipped 21 jobs

@johnou
johnou requested a review from abikouo February 16, 2026 16:23
@softwarefactory-project-zuul

Copy link
Copy Markdown
Contributor

Build succeeded.
https://ansible.softwarefactory-project.io/zuul/buildset/66b67c576436415aa0d2ee6e5246d212

✔️ ansible-galaxy-importer SUCCESS in 3m 41s (non-voting)
✔️ build-ansible-collection SUCCESS in 11m 18s
✔️ ansible-test-splitter SUCCESS in 4m 20s
✔️ integration-community.aws-1 SUCCESS in 2m 33s
Skipped 21 jobs

@sukumaar

sukumaar commented Mar 2, 2026

Copy link
Copy Markdown

Hey @johnou

👋 thanks for starting Valkey support—appreciate you kicking this off.

I put together a small reference module, elasticache_replication_group.py (create/delete only for now), because replication groups are a different resource and API path than cache clusters. In boto3, replication groups must be created with CreateReplicationGroup (and deleted with DeleteReplicationGroup), while cache clusters use CreateCacheCluster.

Splitting the module keeps the code aligned with the ElastiCache API and also exposed the missing optional args (cluster mode, node group configuration, user groups/RBAC, log delivery, encryption, snapshots, etc.).
Intention here is collaborative and to help the community—not to override your work. I'm sharing this as guidance for the community; please feel free to fork/use my branch as a reference for further work on modify/idempotency, tests, and docs. I hope this helps move things forward.

The reference code is in this branch

@cnuthalapati

Copy link
Copy Markdown

Hi @abikouo, following up on this PR. Your feedback from earlier has been addressed and the checks are passing now. Could you please take another look when you get a chance?

- Description for the replication group.
- Required when I(replication_group=true) and I(state=present).
type: str
version_added: 10.1.0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one is not mandatory for suboption

IN_PROGRESS_STATUSES = ["creating", "modifying", "snapshotting"]
FAILED_STATUS = "create-failed"

def __init__(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would have been nice to implement this using dataclass

hard_modify = module.params["hard_modify"]
cache_parameter_group = module.params["cache_parameter_group"]
replication_group = module.params["replication_group"]
replication_group_options = module.params["replication_group_options"] or {}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you can set the default value {} directly in the module arguments spec

@abikouo
abikouo requested a review from alinabuzachis March 13, 2026 14:02
Comment thread plugins/modules/elasticache_parameter_group.py Outdated
@softwarefactory-project-zuul

Copy link
Copy Markdown
Contributor

Build succeeded.
https://ansible.softwarefactory-project.io/zuul/buildset/cf445a434d2b41e5af2794e83c6d1bf4

✔️ ansible-galaxy-importer SUCCESS in 4m 08s (non-voting)
✔️ build-ansible-collection SUCCESS in 11m 05s
✔️ ansible-test-splitter SUCCESS in 4m 23s
✔️ integration-community.aws-1 SUCCESS in 2m 47s
Skipped 21 jobs

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants