Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

How I Created an Amazon AMI for Faster Deployments

DZone's Guide to

How I Created an Amazon AMI for Faster Deployments

· Cloud Zone ·
Free Resource

See why enterprise app developers love Cloud Foundry. Download the 2018 User Survey for a snapshot of Cloud Foundry users’ deployments and productivity.

The content of this article was originally written by Reed Law on the Smashing Boxes blog.

Chef is a great tool for automating deployment. But the bootstrap process is hard to get right. Sometimes it can just be easier to start with a system that’s already configured close to your needs.

Setup

  • 64-bit 2011.09 Amazon Linux with EBS boot
  • Nginx latest stable
  • Ruby 1.9.3

First launch an instance from the AWS Management Console. I am using amzn-ami-2011.09.2.x86_64-ebs (ami-1b814f72) as the image.

$ ssh ~/.ec2/yourkey ec2-user@ec2-12-34-56-78.compute-1.amazonaws.com
$ sudo su
$ yum update -y
$ yum install -y openssl-devel zlib-devel gcc gcc-c++ make autoconf readline-devel curl-devel expat-devel gettext-devel pcre-devel
$ wget http://nginx.org/download/nginx-1.0.14.tar.gz
$ tar xvzf nginx-1.0.14.tar.gz
$ cd nginx-1.0.14
$ ./configure --sbin-path=/usr/local/sbin --with-http_ssl_module
$ make
$ make install

Now you will probably want an init script. This Slicehost article is a bit old but still works beautifully. Start at the “Init Script” section.

Now for ruby, install yaml for psych, and then compile ruby from source:

$ wget http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz
$ tar xzvf yaml-0.1.4.tar.gz
$ cd yaml-0.1.4
$ ./configure --prefix=/usr/local
$ make && make install
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz
$ tar xvzf ruby-1.9.3-p125.tar.gz
$ cd ruby-1.9.3-p125
$ ./configure --prefix=/usr/local --disable-install-doc --with-opt-dir=/usr/local/lib
$ make && make install
$ /usr/local/bin/gem install bundler

Now clean up:

$ rm -rf ruby* nginx* yaml*
$ cd /var/log
$ > cron
$ > maillog 
$ > secure
$ > spooler 
$ > yum.log 
$ rm ~/.bash_history
$ exit

Now we’re ready to create the image. Right click on the EC2 instance in the AWS control panel and choose “Create Image (EBS AMI)”. Give it a name and description and then click “create”. Now choose the AMIs tab on the left. You should see the new AMI in the “pending” status.

 

 

 

 

Cloud Foundry saves app developers $100K and 10 weeks on average per development cycle. Download the 2018 User Survey for a snapshot of Cloud Foundry users’ deployments and productivity. Find out what people love about the industry standard cloud application platform.

Topics:

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}