1

I'm thinking about using Puppet Enterprise to deploy sets of servers/services to Amazon Web Services. As far as I can tell, the best way to do this is via CloudFormation.

Based on what I've read, CloudFormation defines how to setup/create services. Whereas, you use Puppet to setup and maintain server/service configuration.

So two questions:

  1. Can I use Puppet to create an Elastic Beanstalk?
  2. Is it possible to maintain an Elastic Beanstalk and how would this work?

Background

My organisation uses Elastic Beanstalk to publish its existing web apps/services and I would like to either retain this workflow or transition from a Beanstalk to something else as time permits.

1 Answer 1

3

Can I use Puppet to create an Elastic Beanstalk?

The short answer is No.

How do I use Elastic Beanstalk?

You don't actually manage your infrastructure (or the underlying application technology) with Elastic Beanstalk, you just upload your application (e.g use git to push your code) and Beanstalk with deploy it for you.

https://aws.amazon.com/elasticbeanstalk/details/

AWS Elastic Beanstalk is an easy-to-use application management service for building web apps and web services with popular application containers such as Java, PHP, Python, Ruby and .NET. Customers upload their code and Elastic Beanstalk automatically does the rest.

Can I use CloudFormation and Beanstalk together?

Yes. CF Can help you manage a long list of AWS resources including Beanstalk.

The CF documentation is a great place to start http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-template-resource-type-ref.html

Here are the resources that CF can manage:

  • AWS::ElasticBeanstalk::Application
  • AWS::ElasticBeanstalk::ApplicationVersion
  • AWS::ElasticBeanstalk::ConfigurationTemplate
  • AWS::ElasticBeanstalk::Environment

Other Options

If you're after more control you may want to look at OpsWorks https://aws.amazon.com/opsworks/ which lets you control the Operating System config via Chef (a CM tool similar to Puppet).

If you want even MORE control you could use CloudFormation directly, this way you could manage every aspect of your infrastructure (and you'll then have full control of the EC2s to manage however you see fit, e.g with a CM tool like Puppet, Chef or Ansible).

Differences

https://aws.amazon.com/opsworks/faqs/

OpsWorks & Beanstalk are application management services.

AWS OpsWorks and AWS CloudFormation are both application management services that support application modeling, deployment, configuration, management, and related activities. Both support a wide variety of architectural patterns, from simple web applications to highly complex applications. AWS OpsWorks and AWS CloudFormation differ in abstraction level and areas of focus.

CF allows you to manage almost any AWS Resource

AWS CloudFormation is a building block service that enables customers to provision and manage almost any AWS resource via a JSON-based domain specific language.

OpsWorks allows you to do more than Beanstalk

AWS OpsWorks supports a wider variety of architectural patterns than Elastic Beanstalk. Whereas AWS Elastic Beanstalk is specifically optimized for the most common web application and web service patterns and application middleware, AWS OpsWorks supports a wide variety of architectural patterns, from simple web applications to highly complex applications.

Review of Options

I like to view these options as a scale (left to right), with the left being easier to use, and the right giving you more control (but requiring more effort to maintain):

Beanstalk -> OpsWorks -> CloudFormation.

4
  • So does that mean that I have to choose between Beanstalk, OpsWorks or CloudFormation? For instance, it would be nice if I could kick off a Beanstalk from OpsWorks and also use it to manage EC2s
    – Mitkins
    May 12, 2014 at 2:42
  • It may be possible to use a combination of these although they're each trying to solve a different problem. I would choose between one and stick to it. You could configure OpsWorks to do the same sort of push deployment Beanstalk has, and you could configure CF to do this also if you really wanted to. May 12, 2014 at 10:11
  • Could I use CloudFormation to create a Beanstalk (and automate the infrastructure surrounding it)? Then use Puppet to update software on EC2 environment once the Beanstalk has been created?
    – Mitkins
    May 13, 2014 at 0:04
  • I've updated my answer. There's plenty of documentation from AWS on each of this products, I think you're at the point where you'll want to get your hands dirty and try a few things, and read up on the finer details in the AWS docs. May 13, 2014 at 11:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .