AWS DevOps & Developer Productivity Blog
Deploying MongoDB with OpsWorks
         AWS OpsWorks is an application management service that makes it easy to deploy and operate applications of all shapes and sizes. OpsWorks uses Chef to install and configure software on Amazon EC2 instances and lets you automate any task that can be scripted. In this blog post, we will show a step-by-step example for how to install MongoDB on Amazon EC2 instances using OpsWorks.   
       
 
       
         MongoDB is a document-oriented NoSQL database system. While it is easy to get started and install MongoDB, configuring and running a multi-node production environment requires planning. This is where an application management service like OpsWorks can help by automating and simplifying the deployment and the operations involved in running a distributed database on EC2. Because OpsWorks utilizes the Chef framework, instead of starting from scratch, we can leverage the community-built cookbooks that implement some of the best practices out of the box.  
       
 
       
         For the purposes of this walk-through, we will set up a simple single-node MongoDB environment.  
       
 
       Create Repository
         With the latest release, OpsWorks supports Chef 11.10 and Berkshelf. Let’s create a repository that will reference the community cookbook and our own recipes to start: 
       
 
       
         Using GitHub, create a new repository “MyMongoDB”: 
       
 
        
 
       
         Then create a 
        Berksfile which will direct OpsWorks to the community cookbooks: 
       
 
       | site :opscode cookbook 'mongodb' | 
         Next, create a folder for your cookbooks. In this example it is named “mongodb-mysite”.  
       
 
        
 
       
         Inside that folder create 
        metadata.rb: 
       
 
       | name "mongodb-mysite" description 'Example cookbook for MongoDB Berkshelf based install' maintainer "MyOrg" license "Apache 2.0" version "1.0.0" depends 'mongodb' | 
         Then create the recipes folder. Inside the recipes folder create a file 
        default.rb: 
       
 
       | include_recipe "mongodb::10gen_repo" include_recipe "mongodb::default" | 
Create Stack
          Now you’re ready to create an OpsWorks stack using the 
         OpsWorks console:  
        
 
         
 
        
           1. 
           Select 
          Add a Stack to create an OpsWorks stack. 
         
 
         
           2. 
           Select 
          Ubuntu 12.04 LTS for the default operating system. 
         
 
         
           3. 
           Give it a name and select 
          Advanced. 
         
 
         
           4. 
           Set 
          Use custom Chef Cookbooks to Yes. 
         
 
         
           5. 
           Set 
          Repository type to Git. 
         
 
         
           6. 
           Set the 
          Repository URL to your repository  
         
 
         
           7. 
           Set 
          Manage Berkshelf to Yes. 
         
 
         
           8. 
           Click the 
          Add Stack button at the bottom of the page to create the stack. 
         
 
         Add a Layer
            1. 
            Select 
           Add Layer.  
          
 
          
            2. 
            Choose the 
           Custom layer, give it a name and shortname. Click Add Layer.  
          
 
          
            3. 
            Click the layer’s 
           edit Recipes action and scroll to the 
           Custom Chef recipes section. You will notice there are several headings—Setup, Configure, Deploy, Undeploy, and Shutdown—which correspond to OpsWorks lifecycle events. OpsWorks triggers these events at these key points in instance’s lifecycle, which runs the associated recipes.  
          
 
          
            4. 
            Enter 
           mongodb-mysite::default next to Setup, click 
           + to add it to the list and click the 
           Save button at the bottom to save the updated configuration. OpsWorks will then run this recipe whenever you initially boot an instance in this layer. 
          
 
           
 
          Add an Instance
             The layer just controls how to configure instances. You now need to add some instances to the layer. Click 
            Instances in the navigation pane and under your custom MongoDB layer, click 
            + Instance. For this walkthrough, just accept the default settings and click 
            Add Instance to add the instance to the layer. Click 
            start in the row’s Actions column to start the instance. OpsWorks will then launch a new EC2 instance and configure it as a MongoDB server. The instance’s status will change to 
            online when it’s ready. 
           
 
           Summary
             These instructions have demonstrated how to create a single MongoDB instance using the community cookbooks. See the 
            community cookbooks for information about advanced options such as sharding the database to use OpsWorks automatic instance scaling.