OpsWorks는 기존의 AWS Cloud Formation의 대안격으로 보인다. 현재는 Beta서비스 중이지만, 개념이 Cloud Formation보다 훨씬 직관적인 것 같다. 물론 Chef에 대해 어느정도 배경지식이 있어야 하겠다.
(이런게 진짜, "as-a-Service" 아니겠나~ "I"냐 "P"냐 "S"냐는 경계가 모호해진지 오래라 의미 없고..)
이번 스레드에서는 OpsWorks상에서 Custom Cookbook(getting-started)를 적용하는 흐름을 간단히 정리해 두는 것이 목적이다.
먼저 OpsWorks 특징에 대해 파악된 부분만 우선 정리 하자면,
- 단일 인스턴스가 최종 Goal이 아닌, 하나의 Stack(다 계층 구조의 시스템 전체)를 쉽게 배포/설정을 지원.
- 하나의 Stack은 다수의 Layer로, 또 각 Layer는 다수의 Instance로, 또 각 Instance는 다수의 App으로 구성 된다.
- 주요 도구는 이름에서도 드러나듯이, OpsCode사의 Chef가 주요 역할을 담당한다.
- 일반적으로 통용되는 Stack구조(MySQL, PHP, node.js, 등)는 별도의 Cookbook이 필요 없이 기본 제공이 된다.
- Cookbook 적용시, 사용자 입력값이나, 개개의 Private한 값은 Data Bag이 아니라 JSON 형식으로 전달한다.
- 사용자 정의 값을 기술한 JSON 내용은, Static하게 또는, 매번 실행시마다 1회성(Dynamic)으로 전달 할 수도 있다. 단, Static과 Dynamic에 동일 값이 있으면, Dynamic값이 Static값에 Override되어 우선순위가 높은 것으로 판단된다. (확인 필요)
- (기타 특징들은 파악 되는대로 계속 업데이트 예정...)
- Stack이나 Layer에 대한 실습이 아니므로, 단일 레이어에 PHP템플릿 인스턴스 하나에 getting-started적용 진행.
- "getting-started" 소스는 SSH Key기반의 GitHub에 등록되어 있다.
- GitHub에 준비해둔 "getting-started"에 수정한 내역은 아래와 같다.
(cookbooks/getting-started/templates/default/chef-getting-started.txt.erb)
(붉은 색 부분을 추가 하였으며, 해당 값은 JSON으로 전달 한다.) - Stack, Layer, Instance 등을 생성하는 방법은 아래 문서를 참조한다. 너무 쉽기도 하고 설명도 잘되어 있다.
http://awsdocs.s3.amazonaws.com/opsworks/latest/opsworks-ug.pdf
Welcome to Chef!
This is Chef version <%= node[:chef_packages][:chef][:version] %>.
Running on <%= node[:platform] %>.
Version <%= node[:platform_version] %>.
Custom <%= node['deploy']['test_string'] %>
- "getting-started" Cookbook을 PHP가 설치될 Instance에 추가로 적용시키고, "getting-started" 내용 일부를 수정/추가 하여, JSON으로 전달된 값들이 정상적으로 반영되는지까지 확인한다.
- "test"라는 이름으로 Stack 생성
(최초 Stack을 생성하면 녹색 원에 숫자가 "0"일 것이다. 이 캡쳐는 테스트 후에 작성한 것이라, "1"로 표시된 것일 뿐..) - Layer 생성 (Custom Cookbook 적용이 목적이므로, 어느 것이든 관계 없다. 본 실습에서는 App Server에서 PHP로 하였다.
- "getting-started" Cookbook을 실제로 적용시킬 Instance 하나를 생성.
- 과정(2)에서 생성한 Layer의 편집 모드로 진입하여, "getting-started" Cookbook의 위치, SSH-Key 정보, 사용자 정의 Value를 포함하는 JSON 정보등을 설정.
- 설정을 마쳤으니, 실제로 "getting-started" Cookbook을 대상 Instance에 적용해 본다.
(Custom Chef JSON에서 Override로 값을 재정의 할 수 있다.) - 수행 Log 학인
(/tmp/ 디렉토리에 "getting-started"의 default 레시피대로 파일이 에러 없이 작성되었다.) - 생성 파일 내용 확인
(과정상 "Custom call518"로 표시되어야 하나, 캡쳐 그림은 여러가지로 테스트 한 결과임)
'Cloud' 카테고리의 다른 글
OpenStack - How To Install DevStack with Vagrant/VirtualBox (0) | 2014.03.12 |
---|---|
[Open] EYWA - Detailed Information (0) | 2014.03.03 |
[가상화&자동화] HDD Image :: Pre-Installed Template vs. OS-Only Template (with Chef/Puppet) (about AMI) (1) | 2013.02.24 |
Virtualization - Full vs Para (Appendix Pass-Through : Full vs Para) (0) | 2012.05.13 |
[PDF] - MIgration Xen to KVM (0) | 2012.05.12 |