Hacker News new | past | comments | ask | show | jobs | submit login

I use Terraform right now but I'm looking at some other tech as well currently because Terraform is a bit too low-level for my current employers needs (but a fantastic product overall).

CF problems:

* JSON format is awful (practically speaking this can be solved with Troposphere...)

* So slow.

* UPDATE_ROLLBACK_FAILED ... It apparently was fixed very very recently, but what a garbage design decision.

* Debugging CF errors is a nightmare.

* Nested templates have to be stashed in S3.




Likewise, CF is the leading cause of outages in our infrastructure. We've completely abandon it in favor of Terraform.

* CF gets deadlocked if resources are changed outside of it, and there's no way to prevent people from doing that either

* No concept of a rolling update to a fleet or any warning it's going to cause an outage with out having to dig through fine print in the docs on every single change, just terminates all the EC2 instances in an ASG/ELB in some cases

* If you have a template, remember any change you make to that template has to be applied to every single stack you have, otherwise you'll either damage something or deadlock the stack when updating it later, it can't figure out what's deployed on it's own and maintains its own state that can be different from the real state. We had to stop using templates at all and just store a copy of each template in our local git repo.

* If you have more than 100 stacks searching the list of stacks requires clicking a handful of times on the "show more stacks" button before it'll show the one you typed in

* Stupid slow, esp. compared to Terraform

* Doesn't delete Route53 DNS records even after saying it does in the log outout

* Can break ELB configurations, such as sticky sessions and cause outages

* Doesn't actually support deploying all AWS resources, SNS/SQS perms/rules aren't complete for example.


I've found the Python wrapper troposphere useful for dealing with the JSON.

https://github.com/cloudtools/troposphere


Cfoo (https://github.com/drrb/cfoo) is great, it's simply a yaml-to-json converter with some syntactic sugar for cloudformation. Troposphere seemed like too heavy an approach.


YMMV, but I'd much rather Cfer (https://github.com/seanedwards/cfer), which I found useful enough to contribute back to. A real DSL instead of relying on comparatively inexpressive YAML is very appealing to me.


Because we don't want to abstract the cloud provider (and potentially lock us out of any Amazon-specific behavior), we use a small Python script that takes Jinja2-templated YAML and compiles it to JSON. It also handles the uploading to S3 and a whole bunch of convenience macros for generating the more verbose parts of defining infrastructure in CloudFormation.

It took a lot of hair-pulling to write it, but now that it's done, CF isn't so terrible to use.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: