개발자는 각자의 리눅스 박스에 설치한 workstation VM에서 개발을 하고, 테스트 역시 chef client VM에서 개발을 진행한다. 일종의 sandbox 시스템이라고 할 만하다.
https://lh3.googleusercontent.com/-DoObMgnOrYI/UO5dqpfCgVI/AAAAAAAACpg/zP6iRTVe0CA/s800/Sandbox01.jpg
자신의 놀이터(샌드박스)에서 개발하고 테스트를 했다고 하면, 이 결과를 공유해서 각자의 샌드박스에서 상호 테스트 한다. 이제 스테이징 환경으로 옮겨서 다시 테스트 하고 실 환경에 적용하면 된다. 공유는 git을 이용한다. 이렇게 하나의 개발 프로세스가 완성된다.
Chef 코드를 개발한다면, 가장 먼저 chef 코드를 적용할 운영체제를 선택할 것이다. 그리고 "이러이러한 배포판의 이러한 버전을 이용해서 개발을 하자"라고 개발자들 끼리 "약속"을 할 것이다. 약속이 어긋나면, "뭐!! chef 코드가 제대로 작동하지 않는다고 ?. 내가 테스트 할 때는 잘 됐단 말야. 봐! 잘돼잖아 ?" 이런 상황이 발생할 수 있다. 운영체제의 버전이 다를 수도 있고, 운영체제 버전은 동일한데 패치버전이 다를 수도 있고, 패키지 저장소가 달라서 서로 다른 버전의 패키지가 설치돼었을 수도 있다. 개발 환경을 가상화 환경에서 구축했다면, 가상화 설정 문제가 있을 수도 있다. virtualbox의 경우 네트워크 설정이 다르거나, 디스크 인터페이스가 다르거나, 메모리 cpu core갯수, 부팅순서, 칩셋 등등등 사소한 차이에 의해서 테스트가 실패할 수가 있다.
결국 제대로된 개발환경을 만들려면, 운영체제는 물론이고 가상화 환경까지 일일이 맞춰줘야 한다. 노가다다.
약간의 센스가 있는 개발자라면 아래와 같은 개발 환경을 만들 것이다.
HTTP(혹은 NFS나 FTP) 기반의 중앙 저장소를 하나 만든다.
Virtualbox로 개발및 테스트를 위한 (chef-client가 설치된)VM을 만든다.
Export 기능을 이용해서 OVA로 만든다. OVA파일을 중앙 저장소에 복사한다.
각 개발자는 OVA 파일을 다운로드 받아서 개발한다.
약간 더 게으른 개발자라면 그리고 잉여력이 충만한 상태라면, 좀 더 그럴듯한 virtual appliance 관리 툴을 만들 수도 있을테다. 고맙게도 잉여력이 충분한 누군가가 Vagrant를 만들어 두었다. 우리는 그냥 설치해서 사용하면 된다.
Vagrant는 virtualbox 기반의 build configuration 툴이다. 간단히 말해서 virtualbox vm의 설정을 만들고 관리하는 툴.
Vagrant를 이용해서 가상화 환경을 만들어보자. vagrantup.com은 유저가 테스트할 수 있도록 몇 개의 box를 제공한다. Box는 vagrant에서 관리하는 가상환경의 기본 단위다. vagrant.com이 제공하는 기본 box중 lucid64.box를 이용해서 테스트를 진행한다.
테스트를 위해서 디렉토리를 하나 만들었다.
앞서 센스있는 개발자라면 vm을 export해서 서로 공유할 수 있는 환경을 만들거라고 했다. 기본적인 생각은 별차이가 없는법이라서 Vagrant 역시 센스있는 개발자가 선택한 그 방식을 따른다. 그냥 현재 virtualbox에서 만든 vm의 이름으로 간단하게 box를 만들 수 있다. 웹 서버 개발을 위해 만든 webserver01이라는 vm을 box로 만들기로 했다. Box의 이름은 webserver.box로 하기로 했다.
Contents
1. VirtualBox로 Chef 개발/테스트 환경 꾸미기
1.1. 개발 환경
1.2. 개발 프로세스
2. Vagrant를 이용해서 가상화 개발 환경을 만들자.
2.1. Vagrant 테스트해 보기
2.2. 내 Box를 만들어 보자
3. vagrant 설정 옵션들
4. 히스토리
1. VirtualBox로 Chef 개발/테스트 환경 꾸미기
1.1. 개발 환경
1.2. 개발 프로세스
2. Vagrant를 이용해서 가상화 개발 환경을 만들자.
2.1. Vagrant 테스트해 보기
2.2. 내 Box를 만들어 보자
3. vagrant 설정 옵션들
4. 히스토리
Recent Posts
Archive Posts
Tags