Skip to content

Elasticache module doesn't understand wildcard Redis versions, marks cluster as needing changes #654

Open
@Tyler-2

Description

@Tyler-2

Summary

When creating an Elasticache Redis instance, AWS requires you to specify what version of Redis to use. AWS supports a notation like 6.x and the module is currently happy to accept that. However, due to the mismatch between the requested version (6.x) and the actual version reported by AWS (6.0.5), the module attempts to request noop changes, and marks the run as changed=true.

Issue Type

Bug Report

Component Name

elasticache

Ansible Version

$ ansible --version
ansible [core 2.11.2] 
  config file = /home/tyler/Repos/adserving/ansible.cfg
  configured module search path = ['/home/tyler/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /home/tyler/.local/lib/python3.9/site-packages/ansible
  ansible collection location = /home/tyler/.ansible/collections:/usr/share/ansible/collections
  executable location = /home/tyler/.local/bin/ansible
  python version = 3.9.2 (default, Feb 28 2021, 17:03:44) [GCC 10.2.1 20210110]
  jinja version = 3.0.1
  libyaml = True

Collection Versions

$ ansible-galaxy collection list
# /home/tyler/.local/lib/python3.9/site-packages/ansible_collections
Collection                    Version
----------------------------- -------
amazon.aws                    1.5.0  
ansible.netcommon             2.2.0  
ansible.posix                 1.2.0  
ansible.utils                 2.3.0  
ansible.windows               1.7.0  
arista.eos                    2.2.0  
awx.awx                       19.2.2 
azure.azcollection            1.7.0  
check_point.mgmt              2.0.0  
chocolatey.chocolatey         1.1.0  
cisco.aci                     2.0.0  
cisco.asa                     2.0.2  
cisco.intersight              1.0.15 
cisco.ios                     2.3.0  
cisco.iosxr                   2.3.0  
cisco.meraki                  2.4.2  
cisco.mso                     1.2.0  
cisco.nso                     1.0.3  
cisco.nxos                    2.4.0  
cisco.ucs                     1.6.0  
cloudscale_ch.cloud           2.2.0  
community.aws                 1.5.0  
community.azure               1.0.0  
community.crypto              1.7.1  
community.digitalocean        1.7.0  
community.docker              1.8.0  
community.fortios             1.0.0  
community.general             3.3.0  
community.google              1.0.0  
community.grafana             1.2.1  
community.hashi_vault         1.3.0  
community.hrobot              1.1.1  
community.kubernetes          1.2.1  
community.kubevirt            1.0.0  
community.libvirt             1.0.1  
community.mongodb             1.2.1  
community.mysql               2.1.0  
community.network             3.0.0  
community.okd                 1.1.2  
community.postgresql          1.3.0  
community.proxysql            1.0.0  
community.rabbitmq            1.0.3  
community.routeros            1.2.0  
community.skydive             1.0.0  
community.sops                1.1.0  
community.vmware              1.11.0 
community.windows             1.5.0  
community.zabbix              1.3.0  
containers.podman             1.6.1  
cyberark.conjur               1.1.0  
cyberark.pas                  1.0.7  
dellemc.enterprise_sonic      1.1.0  
dellemc.openmanage            3.5.0  
dellemc.os10                  1.1.1  
dellemc.os6                   1.0.7  
dellemc.os9                   1.0.4  
f5networks.f5_modules         1.10.1 
fortinet.fortimanager         2.1.2  
fortinet.fortios              2.1.1  
frr.frr                       1.0.3  
gluster.gluster               1.0.1  
google.cloud                  1.0.2  
hetzner.hcloud                1.4.3  
hpe.nimble                    1.1.3  
ibm.qradar                    1.0.3  
infinidat.infinibox           1.2.4  
inspur.sm                     1.2.0  
junipernetworks.junos         2.3.0  
kubernetes.core               1.2.1  
mellanox.onyx                 1.0.0  
netapp.aws                    21.2.0 
netapp.azure                  21.7.0 
netapp.cloudmanager           21.7.0 
netapp.elementsw              21.6.1 
netapp.ontap                  21.7.0 
netapp.um_info                21.6.0 
netapp_eseries.santricity     1.2.13 
netbox.netbox                 3.1.1  
ngine_io.cloudstack           2.1.0  
ngine_io.exoscale             1.0.0  
ngine_io.vultr                1.1.0  
openstack.cloud               1.5.0  
openvswitch.openvswitch       2.0.0  
ovirt.ovirt                   1.5.3  
purestorage.flasharray        1.8.0  
purestorage.flashblade        1.6.0  
sensu.sensu_go                1.11.1 
servicenow.servicenow         1.0.6  
splunk.es                     1.0.2  
t_systems_mms.icinga_director 1.18.0 
theforeman.foreman            2.1.1  
vyos.vyos                     2.3.1  
wti.remote                    1.0.1  

AWS SDK versions

$ pip show boto boto3 botocore
Name: boto
Version: 2.49.0
Summary: Amazon Web Services Library
Home-page: https://github.com/boto/boto/
Author: Mitch Garnaat
Author-email: [email protected]
License: MIT
Location: /home/tyler/.local/lib/python3.9/site-packages
Requires: 
Required-by: 
---
Name: boto3
Version: 1.17.112
Summary: The AWS SDK for Python
Home-page: https://github.com/boto/boto3
Author: Amazon Web Services
Author-email: None
License: Apache License 2.0
Location: /home/tyler/.local/lib/python3.9/site-packages
Requires: botocore, s3transfer, jmespath
Required-by: 
---
Name: botocore
Version: 1.20.112
Summary: Low-level, data-driven core of boto 3.
Home-page: https://github.com/boto/botocore
Author: Amazon Web Services
Author-email: None
License: Apache License 2.0
Location: /home/tyler/.local/lib/python3.9/site-packages
Requires: jmespath, urllib3, python-dateutil
Required-by: s3transfer, boto3

Configuration

$ ansible-config dump --only-changed

OS / Environment

No response

Steps to Reproduce

- name: create elasticache redis cluster
  community.aws.elasticache:
    name: "testcache"
    state: present
    engine: redis
    cache_engine_version: 6.x
    node_type: cache.t2.micro

Expected Results

changed=false after first run

Actual Results

changed: [localhost] => {"changed": true, "debug": "EngineVersion:6.x != 6.0.5", "elasticache": {"data": {"ARN": "arn:aws:elasticache:us-east-1:545438178252:cluster:px-adserving-dev-cache", "AtRestEncryptionEnabled": false, "AuthTokenEnabled": false, "AutoMinorVersionUpgrade": true, "CacheClusterCreateTime": "2021-07-23T13:06:33.216000+00:00", "CacheClusterId": "px-adserving-dev-cache", "CacheClusterStatus": "available", "CacheNodeType": "cache.t2.micro", "CacheNodes": [{"CacheNodeCreateTime": "2021-07-23T13:06:33.216000+00:00", "CacheNodeId": "0001", "CacheNodeStatus": "available", "CustomerAvailabilityZone": "us-east-1e", "Endpoint": {"Address": "px-adserving-dev-cache.1jiqc2.0001.use1.cache.amazonaws.com", "Port": 6379}, "ParameterGroupStatus": "in-sync"}], "CacheParameterGroup": {"CacheNodeIdsToReboot": [], "CacheParameterGroupName": "default.redis6.x", "ParameterApplyStatus": "in-sync"}, "CacheSecurityGroups": [], "CacheSubnetGroupName": "default", "ClientDownloadLandingPage": "https://console.aws.amazon.com/elasticache/home#client-download:", "Engine": "redis", "EngineVersion": "6.0.5", "LogDeliveryConfigurations": [], "NumCacheNodes": 1, "PendingModifiedValues": {}, "PreferredAvailabilityZone": "us-east-1e", "PreferredMaintenanceWindow": "tue:05:30-tue:06:30", "ReplicationGroupLogDeliveryEnabled": false, "SnapshotRetentionLimit": 0, "SnapshotWindow": "03:00-04:00", "TransitEncryptionEnabled": false}, "name": "px-adserving-dev-cache", "status": "available"}}

Code of Conduct

  • I agree to follow the Ansible Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions