애플리케이션 구성과 배포를 자동화하는 OpsWorks

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

OpsWorks 커스텀 Chef 레시피 사용하기

OpsWorks에서 제공하는 Chef 레시피가 아닌 인터넷에 공개된 Chef 레시피를 사용해보겠습니다. OpsWorks에서 커스텀 Chef 레시피를 사용할 때 작업 흐름은 다음과 같습니다.


그림 24-26 OpsWorks 커스텀 Chef 레시피 작업 흐름

Chef 웹사이트는 전 세계 많은 사람이 개발한 Chef 쿡북을 제공합니다. 여기에는 왠만한 소프트웨어 쿡북은 다 있습니다. http://community.opscode.com/cookbooks


그림 24-27 Opscode 쿡북 커뮤니티

OpsWorks 스택 페이지에서 위쪽 스택 이름을 클릭하면 팝업 메뉴가 나옵니다. Add Stack을 클릭합니다.


그림 24-28 OpsWorks 커스텀 스택 생성

OpsWorks 커스텀 스택을 생성합니다(그림 24-29).

  • Region: EC2 인스턴스가 생성될 리전입니다. Tokyo를 선택합니다.
  • Name: 리전을 선택하면 스택 이름을 설정할 수 있습니다. CustomStack을 입력합니다.
  • VPC: EC2 인스턴스가 위치할 VPC입니다. 기본값 그대로 사용합니다.
  • Default subnet: EC2 인스턴스가 위치할 서브넷입니다. 기본값 그대로 사용합니다.
  • Default operating system: EC2 인스턴스에 설치될 운영체제입니다. 기본값 그대로 사용합니다.
  • Default root device type: EC2 인스턴스의 Root 스토리지 유형입니다. 기본값 그대로 사용합니다.
  • IAM role: OpsWorks의 IAM 역할입니다. 기본값 그대로 사용합니다.
  • Default SSH key: EC2 인스턴스에 접속할 때 사용할 키 쌍입니다. 앞에서 생성한 awskeypair를 선택합니다.
  • Default IAM instance profile: EC2 인스턴스에 사용할 IAM 역할입니다. 기본값 그대로 사용합니다.
  • Hostname theme: EC2 인스턴스에 이름을 붙이는 방식입니다. 과일 이름, 태양계 행성 이름 등을 사용할 수 있습니다. 기본값 그대로 사용합니다.
  • Stack color: 스택 상징 색입니다. 사용하고 싶은 색을 선택합니다.
  • Chef version: Chef 버전입니다. 기본값 그대로 사용합니다.
  • Use custom Chef cookbooks: OpsWorks에서 제공하는 Chef 쿡북 이외에 인터넷에 공개된 Chef 쿡북이나 사용자가 작성한 Chef 쿡북을 사용하는 옵션입니다. Yes를 선택합니다.
    • Repository type: Chef 쿡북 저장소 종류입니다. Git을 선택합니다.
    • Repository URL: Chef 쿡북 저장소 URL입니다. https://github.com/opscode-cookbooks/getting-started.git를 입력합니다.
    • Branch/Revision: Git 저장소에서 특정 브랜치나 리비전을 가져오는 옵션입니다. 기본값 그대로 비워둡니다.
    • Manage Berkshelf: Berkshelf로 Chef 쿡북 의존성을 관리해주는 옵션입니다(http://berkshelf.com). 기본값 그대로 사용합니다.
  • Custom JSON: Chef 레시피에 넘겨줄 속성(Attribute) 값입니다. 기본값 그대로 비워둡니다.
  • Use OpsWorks security groups: OpsWorks용 Security Group을 사용하는 옵션입니다. 기본값 그대로 사용합니다.

설정이 완료되었으면 Add Stack 버튼을 클릭합니다.


그림 24-29 OpsWorks 커스텀 스택 생성

OpsWorks 커스텀 스택이 생성되었습니다. Add a layer를 클릭합니다.


그림 24-30 OpsWorks 커스텀 스택 생성 완료

OpsWorks 커스텀 레이어를 생성합니다(그림 24-31).

  • Layer type: 레이어 종류입니다. Custom을 선택합니다.
  • Name: OpsWorks에서 표시될 이름입니다. getting-started를 입력합니다.
  • Short name: Chef에서 사용할 이름입니다. getting-started를 입력합니다.

설정이 완료되었으면 Add Layer 버튼을 클릭합니다.


그림 24-31 OpsWorks 커스텀 레이어 생성

OpsWorks 커스텀 레이어가 생성되었습니다. getting-started 레이어의 Recipes를 클릭합니다.


그림 24-32 OpsWorks 커스텀 레이어 생성 완료

Chef 레시피 목록에서 아래 Custom Chef Recipes의 edit를 클릭합니다.


그림 24-33 OpsWorks 레시피 목록

커스텀 Chef 레시피 편집 화면이 표시됩니다. Setup에 getting-started::default를 입력하고 +를 클릭합니다. 그리고 Save 버튼을 클릭합니다(그림 24-34).

  • Setup: 인스턴스가 새로 생성되어 부팅될 때 실행됩니다.
  • Configure: 인스턴스 상태가 온라인이 되거나 다른 상태로 바뀔 때 실행됩니다.
  • Deploy: 배포 명령 때 실행됩니다.
  • Undepoly: 인스턴스 삭제, Undeploy 명령 때 실행됩니다.
  • Shutdown: 인스턴스가 정지될 때 실행됩니다.


그림 24-34 OpsWorks 커스텀 Chef 레시피 등록

커스텀 Chef 레시피 설정이 저장되었습니다. 위쪽 Instances 버튼을 클릭합니다.


그림 24-35 OpsWorks 레시피 목록

Add an Instance를 클릭합니다. 그리고 Size를 t1.micro로 선택한 뒤 Add Instance 버튼을 클릭합니다.


그림 24-36 OpsWorks 인스턴스 생성

OpsWorks 인스턴스가 생성되었습니다. 아직은 정지 상태이므로 start를 클릭합니다.


그림 24-37 OpsWorks 인스턴스 생성 완료

잠시 기다리면 인스턴스가 완전히 시작됩니다.


그림 24-38 OpsWorks 인스턴스 시작 완료

인스턴스의 Public IP에 SSH로 접속합니다. 그리고 다음 명령을 입력합니다.

[ec2-user@getting-started1 ~]$ sudo vim /root/chef-getting-started.txt

getting-started::default 레시피는 /root/chef-getting-started.txt라는 파일을 생성합니다. 그림 24-39처럼 표시되면 레시피가 실행된 것입니다.


그림 24-39 OpsWorks 커스텀 Chef 레시피 실행 확인

Chef 레시피를 Setup 등으로 설정하지 않고 Navigation → Deployments → Run Command에서 바로 실행할 수도 있습니다.

  • Command: Execute Recipes를 선택합니다.
  • Recipes to execute: Chef 레시피 이름을 입력합니다.

Execute Receipes를 클릭하면 Chef 레시피가 인스턴스에서 실행됩니다.


그림 24-40 OpsWorks Chef 레시피 실행

Chef 쿡북과 레시피를 작성하는 방법은 따로 설명하지 않겠습니다. getting-started 예제를 기반으로 차근차근 작성해보고, 인터넷에 공개된 Chef 쿡북을 참조하기 바랍니다.


저작권 안내

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