서버 구성을 자동화하는 CloudFormation

이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30

CloudFormation은 미리 만든 템플릿을 이용하여 AWS 리소스 생성과 배포를 자동화합니다. CloudFormation은 실제로 서비스를 제공하는 AWS 리소스가 아니라서 사용 요금이 없습니다. 만약 EC2 인스턴스 1,000개를 생성하고 웹 서버를 설치한 뒤 소스 코드를 복사하여 웹 서비스를 시작해야 한다면 어떻게 해야 할까요? AMI 이미지를 만들어놓고 EC2 인스턴스를 생성하면 됩니다. 하지만, 소스 코드가 바뀔 때마다 AMI 이미지를 만들어야 합니다. 그리고 EC2 인스턴스뿐만 아니라 EBS 볼륨과 S3 버킷, RDS 인스턴스, ELB 로드 밸런서를 함께 생성해야 한다면 AMI로는 불가능합니다.

서비스에 필요한 EC2 인스턴스, EBS 볼륨, S3 버킷, RDS 인스턴스를 미리 구성한대로 자동 생성하는 기능이 CloudFormation입니다. CloudFormation에서 지원하는 AWS 리소스는 다음과 같습니다.

Auto Scaling RDS CloudFront
Redshift CloudWatch Route 53
DynamoDB S3 EC2
SimpleDB ElastiCache SNS
Elastic Beanstalk SQS Elastic Load Balancing
VPC IAM  

표 22-1 CloudFormation에서 지원하는 AWS 리소스

사용자가 구성한 시스템 구조를 CloudFormation 템플릿으로 만들면 복잡하고 반복적인 작업을 간단하게 처리할 수 있습니다. 템플릿 파일은 JSONJavaScript Object Notation 형식의 텍스트 파일입니다. AWS에서 제공하는 미리 만들어진 템플릿을 사용할 수도 있습니다.


그림 22-1 CloudFormation 템플릿 구성

CloudFormation 템플릿은 AWS 리소스 생성 및 설정뿐만 아니라 EC2 인스턴스에 소프트웨어를 설치하고 설정할 수 있습니다. 소프트웨어 설치 자동화에 Chef, Puppet, cloud-init을 지원합니다(Chef와 Puppt은 cfn-init을 통해 실행됩니다).

Chef, Puppet, cloud-init
Chef와 Puppet은 루비 작성된 오픈소스 자동화 솔루션입니다. 소프트웨어 설치, 설정, 빌드, 배포를 자동화합니다.

cloud-init은 클라우드 인스턴스의 초기화를 위한 스크립트입니다. Ubuntu Linux를 만든 캐노니컬에서 개발했습니다.
https://help.ubuntu.com/community/CloudInit


그림 22-2 CloudFormation 소프트웨어 설치 자동화

CloudFormation 템플릿으로 생성한 AWS 리소스 조합을 CloudFormation 스택Stack이라고 합니다. 이 스택을 삭제하면 관련된 AWS 리소스도 모두 삭제됩니다.


그림 22-3 CloudFormation 작업 흐름


저작권 안내

이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.
  • 블로그, 게시판 등에 퍼가는 것을 금지합니다.
  • 비공개 포스트에 퍼가는 것을 금지합니다.
  • 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
  • 링크 및 SNS 공유는 허용합니다.