# general


04/22/2021, 1:29 PM
Hello again. This is more of a general than a getting-started question so I'll ask it here. What do people do about complex deploys e.g. I have a rabbitmq cluster. It needs a minimum of 3 nodes to be running to be happy. So when I want to upgrade it I build a new image, add 3 nodes to the cluster with the new image, and then 1 by 1 reduce the cluster size by 1 and kill an old node (I'm doing all this in ECS Fargate but the princicple would be the same in k8s (although k8s has some more controls which would help) or other container systems. It seems to me like this would be a series of Pulumi states and I'd need to rewrite my rabbitmq cluster code for each step (I guess I can keep the steps on branches or somesuch) but is that right? Or is there some cunning way of programming up the 5-6 states I need and then have Pulumi apply each one in sucession with a pause in between for the cluster to settle?


04/22/2021, 1:32 PM
Maybe automation API? You have the same project and you take the number of nodes in as an input. 1st pulumi up: change image, bump node count by 3 2nd pulumi up: lower node count by 1 3rd pulumi up: lower node count by 1 4th pulumi up: lower node count by 1


04/22/2021, 2:24 PM
Thanks I'll have a look at the automation API