强制Terraform在AWS Elasticache Redis集群上应用待定更改

问题描述

我正在尝试使用terraform将Elasticache的节点类型从较早的一代(cache.t2。)更改为较新的一代(cache.t3。)。

能够通过terraform apply为所有Memcached实例成功修改节点类型,但是不幸的是,当我尝试使用terraform apply更改Redis的节点类型时,该命令仅在大约30秒内完成,没有更改已应用。

要应用节点类型更改,我必须登录Web控制台并单击单个Redis实例,然后单击“修改”并应用挂起的更改,然后等待其完成。这是我的手动工作,我必须对100个Redis实例执行此操作。

是否可以强制terraform在Elasticache上应用Redis的待处理更改?。

解决方法

您尝试论证https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/elasticache_cluster#apply_immediately吗?

也许另一种解决方案是使用aws-cli --apply-immediately选项https://docs.aws.amazon.com/cli/latest/reference/elasticache/modify-cache-cluster.html

运行bash脚本。 ,

对我来说,Terraform的立即应用无法正常工作,因此我正在使用aws-cli来立即应用更改。

下面的shell命令将识别所有集群上的挂起更改,并立即在每个集群实例上提交应用。

PRFIL="profile1"
RGN="eu-west-1"

for cls in `aws-okta exec $PRFIL -- aws --region $RGN elasticache describe-cache-clusters | jq '.CacheClusters | .[] | select((.PendingModifiedValues | length ) > 0 and (.CacheClusterStatus!="modifying")) | .ReplicationGroupId ' | sort | uniq `  
  do
  echo $cls
  echo "aws-okta exec $PRFIL -- aws --region $RGN elasticache modify-replication-group --replication-group-id $cls --apply-immediately" | bash -vx | jq '.ReplicationGroup.Status'
done