cumulus icon indicating copy to clipboard operation
cumulus copied to clipboard

Question: cumulus vs terraform

Open conorgil opened this issue 8 years ago • 5 comments

I just read this blog post giving an overview of cumulus. It sounds interesting and I have the same desire to essentially automate a diff between my IAC in git and the actual AWS account. However, based on my understanding it seems like Cumulus is trying to replace CloudFormation by using the AWS API directly. There are tons of AWS resources and tons of APIs. There are already existing tools which are tackling this and we are using one called Terraform by HashiCorp. It has a very active community and already has tons of AWS API coverage with a large team already focusing on the tool full time.

Questions on my mind:

  • Is Cumulus a primary product for Lucid and does it have a full time team backing it?
  • Do you see Cumulus and Terraform as competing tools? If yes, how do you plan to compete on API coverage, maintenance, etc?
  • Do you see any potential collaboration between Cumulus and Terraform, or other existing tools?
  • If Terraform had the ability to do a diff between the Terraform state files and the reality in the AWS account, would that effectively meet the requirements laid out in the blog post? If yes, could Cumulus be replaced retired as a project?
  • What are some advantages you see for the Cumulus project compared to Terraform?

Thanks for writing the blog post and super interested in your thoughts here.

conorgil avatar May 06 '16 23:05 conorgil

To me, Terraform seems incredibly complex. This project seems to simplify things in an easier to digest manner. However, the documentation other than specific modules is completely sparse. There isn't a clear INSTALL, I haven't found where the AWS API configuration is supposed to be defined, etc.

Otherwise, this seems simple enough that I was excited to give it a quick try. Especially if I can view my existing setup, to be able to produce some templates out of that instead of from scratch.

mike503 avatar May 07 '16 07:05 mike503

@mike503 I just added a page about getting started with Cumulus: https://lucidsoftware.github.io/cumulus/getting-started/

@conorgil we originally built Cumulus to meet our IAC needs because Cloudformation wasn't quite what we needed. Our desire was to have a tool that would reduce boilerplate, work with AWS, and avoid destructive changes. We think what we came up with is a pretty nice interface into AWS infrastructure managment, and which, as @mike503 pointed out, is a little simpler than Terraform. That's probably because Terraform tries to support many PAAS providers, and Cumulus is an AWS tool. Hopefully, this simplicity makes using Cumulus as nice for other organizations as it has for us.

Additionally, we don't view Cumulus as a product per se, and therefore is not a true competitor with Terraform or Cloudformation. It's the tool we use at Lucid, and as such we will continue to support it.

msiebert avatar May 12 '16 21:05 msiebert

Thats for the "getting started" page but i think it needs a litte more info. I expected from the doc that the "migrate" command would pull info from my aws environment and create "configuration.json", but that seems to not be the case. If a minimal configuration.json needs to pre-exist before running "migrate", can you please provide sample contents.

(.env)somedude@somedude:~/projects/cumulus$ cumulus -v -r somedude-role cloudfront migrate Reading configuration from '/Users/somedude/projects/cumulus' /Users/somedude/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/cumulus-aws-0.11.0/lib/conf/Configuration.rb:102:in read': No such file or directory @ rb_sysopen - /Users/somedude/projects/cumulus/configuration.json (Errno::ENOENT) from /Users/somedude/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/cumulus-aws-0.11.0/lib/conf/Configuration.rb:102:ininitialize' from /Users/somedude/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/cumulus-aws-0.11.0/lib/conf/Configuration.rb:143:in new' from /Users/somedude/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/cumulus-aws-0.11.0/lib/conf/Configuration.rb:143:ininit' from /Users/somedude/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/gems/cumulus-aws-0.11.0/bin/cumulus:630:in <top (required)>' from /Users/somedude/.rbenv/versions/2.1.5/bin/cumulus:23:inload' from /Users/somedude/.rbenv/versions/2.1.5/bin/cumulus:23:in `

' (.env)somedude@somedude:~/projects/cumulus$

repudi8or avatar May 16 '16 08:05 repudi8or

@repudi8or I linked to a sample configuration in the Getting Started docs, but it turns out the styles on the page made it so it looked just like regular text :grimacing:. Luckily, I've got a pull request open to make the site look nicer that should fix this issue. In the meantime, if you just use the sample config in the repo, it should fix your problem.

msiebert avatar May 16 '16 15:05 msiebert

btw, please keep the suggestions or pull requests for the documentation site coming. We'd like to make sure that the documentation is easy to understand, and there are likely some rough patches, since this is the first time the documentation is being used outside Lucid.

msiebert avatar May 16 '16 15:05 msiebert