저작권 안내
- 책 또는 웹사이트의 내용을 복제하여 다른 곳에 게시하는 것을 금지합니다.
- 책 또는 웹사이트의 내용을 발췌, 요약하여 강의 자료, 발표 자료, 블로그 포스팅 등으로 만드는 것을 금지합니다.
서버 구성을 자동화하는 CloudFormation
이재홍 http://www.pyrasis.com 2014.03.24 ~ 2014.06.30
EC2 인스턴스를 생성하고 웹 서버를 설치, 실행하는 CloudFormation 템플릿
다음은 EC2 인스턴스를 생성하고 아파치 웹 서버를 설치, 실행하는 템플릿입니다. 이제 템플릿이 점점 복잡해지고 있습니다. 그래서 앞에서 설명한 부분은 생략하고 새로 추가된 부분만 설명하겠습니다.
- Ec2Instance → Properties → UserData: EC2 인스턴스가 생성된 직후 실행할 스크립트입니다. 예제에서는 bash 스크립트로 작성했습니다. /opt/aws/bin/cfn-init은 CloudFormation에서 기본적으로 제공하는 Bootstrap 스크립트입니다. 여기서 cfn-init을 실행해야 아래 packages에서 정의한 패키지를 설치할 수 있고, services에서 정의한 패키지를 실행할 수 있습니다. cfn-init의 -r 옵션에는 생성될 EC2 인스턴스의 리소스 ID를 지정해야 합니다. 리소스 ID는 Resources의 Ec2Instance와 같이 사용자가 원하는 대로 설정할 수 있습니다.
- Ec2Instance → Metadata → AWS::CloudFormation::Init → config:
- packages: cfn-init이 설치할 패키지입니다. apt, rpm, yum, python, rubygems와 Windows의 msi 패키지를 지원합니다. 예제에서는 yum을 이용하여 아파치 웹 서버인 httpd를 설치합니다.
- "httpd" :
[2.4.9]
처럼 패키지 버전을 설정할 수 있습니다. - "rpm" :
{ "epel" : http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm }
처럼 패키지 파일의 URL을 설정할 수 있습니다.
- "httpd" :
- services: cfn-init이 실행할 패키지입니다. Linux에서는 sysvinit을 지원하고 Windows에서는 Windows 서비스 매니저(키: windows)를 지원합니다.
- enabled: 부팅할 때 패키지나 서비스를 실행하는 옵션입니다.
- ensureRunning: cfn-init 스크립트 실행 종료 후 패키지나 서비스를 실행하는 옵션입니다.
- packages: cfn-init이 설치할 패키지입니다. apt, rpm, yum, python, rubygems와 Windows의 msi 패키지를 지원합니다. 예제에서는 yum을 이용하여 아파치 웹 서버인 httpd를 설치합니다.
EC2 인스턴스를 생성하고 yum으로 아파치 웹 서버(httpd)를 설치하는 템플릿(installhttpd.template)
{
"Description" : "Create an EC2 instance running the Amazon Linux 64 bit AMI.",
"Parameters" : {
"KeyPair" : {
"Description" : "The EC2 Key Pair to allow SSH access to the instance",
"Type" : "String",
"Default" : "awskeypair"
}
},
"Resources" : {
"Ec2Instance" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"KeyName" : { "Ref" : "KeyPair" },
"ImageId" : "ami-c9562fc8",
"InstanceType" : "t1.micro",
"UserData": {
"Fn::Base64": {
"Fn::Join": [ "",
[ "#!/bin/bash\n",
"/opt/aws/bin/cfn-init --region ", { "Ref": "AWS::Region" },
" -s ", { "Ref": "AWS::StackName" },
" -r Ec2Instance\n" ]
]
}
}
},
"Metadata" : {
"AWS::CloudFormation::Init" : {
"config" : {
"packages" : {
"yum" : {
"httpd" : []
}
},
"services" : {
"sysvinit" : {
"httpd" : {
"enabled" : "true",
"ensureRunning" : "true"
}
}
}
}
}
}
}
},
"Outputs" : {
"InstanceId" : {
"Description" : "The InstanceId of the newly created EC2 instance",
"Value" : {
"Ref" : "Ec2Instance"
}
}
},
"AWSTemplateFormatVersion" : "2010-09-09"
}
AWS::CloudFormation::Init
AWS::CloudFormation::Init(cfn-init) 기능에 대한 자세한 내용은 다음 링크를 참조하기 바랍니다.
http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html
Bootstrap
bootstrap은 컴퓨터가 부팅할 때 실행되는 일련의 과정을 뜻하며 요즘 많이 쓰는 bootstrap 웹 프레임워크와는 다른 뜻입니다.
저작권 안내
이 웹사이트에 게시된 모든 글의 무단 복제 및 도용을 금지합니다.- 블로그, 게시판 등에 퍼가는 것을 금지합니다.
- 비공개 포스트에 퍼가는 것을 금지합니다.
- 글 내용, 그림을 발췌 및 요약하는 것을 금지합니다.
- 링크 및 SNS 공유는 허용합니다.
Published
2014-09-30