7 ms·
Roll back is one reason I choose AWS Cloudformation over Terraform. And also I do not see the reason for Terraform in my use case as we run only on AWS. No poi
by manishsharan 6y ago
Roll back is one reason I choose AWS Cloudformation over Terraform. And also I do not see the reason for Terraform in my use case as we run only on AWS. No point in not using AWS native tools.
- encryptluks2 6y agoWhen using Terraform you should think of your IaC as the plans to build or rebuild your infrastructure, not an extension. I built mine in a way where I can destroy all the infrastructure in a plan and then reapply. You don't have to worry about rollbacks when you can just rebuild everything without affecting your end service.
- rantwasp 6y agowelcome to the real world where you sometimes cannot do what you are saying :(
- takeda 6y agoWhat parent meant is that in CF if it encounters an error, by default will roll back to state before the update. TF will just leave it broken.
- encryptluks2 6y agoIt isn't left broken per say, in fact you should be able to version the state and rollback to the previous state and have it remove whatever new resources were created when you re-apply. I just take another approach which is if something doesn't work, then I'm able to quickly blow it away and re-deploy without affecting the end service by having the apply only target specific environments.
- takeda 6y agoIf it is half deployed it is broken, maybe in some cases service continues running, but in other will be broken. The solution you mentioned relies on other tools and some manual work you need to do. Also with how TF works by default you might never be able to restore to exact same state as it was before. CF when needs to replace a resource it first creates a new copy, and applies all changes if everything succeeds then it removes old resource, if it fails it rolls changes back. You have an option that allows you to do that with a resource, but it's done individually per resource and it still isn't exactly the same thing.
- mwarkentin 6y agoCloudformation rollback is not exactly bulletproof either.
- leetrout 6y agoEspecially initial deploys that rollback and you have to delete the stack to try to deploy again. Waste of time. On the whole terraform is much faster too.
- rantwasp 6y agohere is a hint for you: you can tell cloudformation to nuke everything in case it fails.
- leetrout 6y agoHow would you do that with `sam deploy` https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html https://docs.aws.amazon.com/serverless-application-model/lat...
- rantwasp 6y agosam uses cloudformation under the hood. so you can invoke cloudformation directly or demand this is added here: https://github.com/aws/aws-sam-cli/issues/2191 https://github.com/aws/aws-sam-cli/issues/2191
- takeda 6y agoCF gives you both behaviors, you have option to select which one you prefer.
- leetrout 6y agoHow would you do that with `sam deploy` https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-deploy.html https://docs.aws.amazon.com/serverless-application-model/lat...
- rantwasp 6y agoyou dodged a bullet imho.
- matwood 6y agoI don't use CF, but how does it handle rolling back a delete (thus recreating a resource) and resource ARNs? Is it using some functionality not available to other tools? I always found tf's lack of rollback ability, basically admitting there is no way to really rollback to the exact state, ARNs and all, so it isn't going to try.
- myroon5 6y ago>Is it using some functionality not available to other tools? No, CloudFormation just postpones resource deletions towards the end of stack operations to allow successful operation rollbacks. Even the default replacement strategy is creating the new resource before deleting the old resource whenever possible for this reason: https://github.com/aws-cloudformation/aws-cloudformation-resource-schema/pull/86 https://github.com/aws-cloudformation/aws-cloudformation-res...