안수찬의 개발이야기

AMI를 이용하여 쉽게 AWS 인스턴스 생성하기

Introduction

안수찬 @dobestan

안수찬 @dobestan

소프트웨어 생태계에 기여할 수 있는 실용주의 프로그래머가 되고자 합니다. 나는 안수찬이다. 그러므로 나는 할 수 있다.


AMI를 이용하여 쉽게 AWS 인스턴스 생성하기

Posted by 안수찬 @dobestan on .
Featured

AMI를 이용하여 쉽게 AWS 인스턴스 생성하기

Posted by 안수찬 @dobestan on .

최근에 개발을 하다가 느끼는 점은 비슷한 작업을 하는데 너무 많은 시간을 사용한다는 것이다. 아마존 웹 서비스 EC2 인스턴스를 생성하고, 워드프레스라면 PHP + MySQL을 루비온레일즈라면 RVM, Ruby, Rails gem을, Ghost Blog라면 node.js를 설치한다. 굉장히 기본적인 작업이고 반복적인 작업인데도 불구하고 내 소중한 30분이 사라진다. 퍼블리싱을 위한 개발 환경 설정 부분을 자동화해서 그 시간에 다른 생산적인 일을 하는 것이 낫다고 판단하였다. Amazon Web Service에서 제공하는 AMI ( Amazon Machine Instance ) 를 이용하여 이 문제를 해결해보자.

AMI에 관한 정보는 AWS > Documentation > Amazon Machine Images(AMI)에서 자세하게 살펴볼 수 있다.

AMI

공식 문서에서는 AMI를 다음과 같이 소개하고 있습니다.

An Amazon Machine Image (AMI) provides the information required to launch an instance, which is a virtual server in the cloud. You specify an AMI when you launch an instance, and you can launch as many instances from the AMI as you need.

An AMI includes the following:

  • A template for the root volume for the instance (for example, an operating system, an application server, and applications)
  • Launch permissions that control which AWS accounts can use the AMI to launch instances
  • A block device mapping that specifies the volumes to attach to the instance when it's launched

AMI as Template

위의 기능에서 우리는 이 기능을 이용해서 개발 환경 자동화를 이룰 수 있습니다.

A template for the root volume for the instance (for example, an operating system, an application server, and applications)

즉, Amazon Machine Image를 생성해두고 이 이미지를 이용해서 새로운 인스턴스를 생성할 수 있습니다.

Usage

Ubuntu 14.04 LTS t1.micro 인스턴스를 생성하였습니다. 기본적인 개발 환경 셋팅 ( .vimrc 설정, build-essential, git 등 )과 루비온레일즈 퍼블리싱을 위한 셋팅 ( rvm, ruby 2.0 )을 완료했습니다.

이제 실제로 이미지 생성을 하기 위해서 Amazon Console > EC2 > Instances로 접속합니다. 이미지를 만들 인스턴스를 선택하고 Actions > Create Image를 선택합니다.

이제 생성된 이미지를 확인하고 새로운 인스턴스를 생성하기 위해서 Amazon Console > EC2 > Images > AMI로 접속합니다. 생성된 이미지를 클릭하고 Launch를 누르면 새로운 이미지 생성이 완료됩니다.

최근의 개발 관심사는 "자동화"입니다. Guard나 Spork를 이용한 테스트 자동화가 될 수도 있겠고, AMI를 이용한 퍼블리싱 환경 자동화, 혹은 Vagrant를 이용한 개발환경 자동화 등 다양한 부분에 있어서 불필요한 작업들을 줄이려고 노력하고 있습니다.

안수찬 @dobestan

안수찬 @dobestan

https://dobest.io/

소프트웨어 생태계에 기여할 수 있는 실용주의 프로그래머가 되고자 합니다. 나는 안수찬이다. 그러므로 나는 할 수 있다.

View Comments...