2013-10-23 15 views
4

Bento, Veewee 및 Vagrant를 사용하여 VM 프로비저닝 프로세스를 자동화하려고합니다. 이 접근 방식은 개발, 개발 테스트 및 QA 프로세스를 간소화 할 수있는 많은 가능성을 제공합니다.Bento - Veewee - Vagrant 프로젝트 구성 방법

(Vagrant를 사용하면 Virtual Box, VMWare, EC2 등에서 VM을 쉽게 설정/해제 할 수 있으며 Veewee는 Veewee 용베이스 박스 구축 프로세스를 간소화하고 Bento 베이스 박스를 정의하고 Veewee의 작업을 자동화하는 과정을 간소화합니다.

문제는 Bento, Veewee 및 Vagrant의 상호 관계가 혼란 스럽다는 것입니다. 많은 정의 파일과 일부 작업은 여러 레이어에 걸쳐 복제되며 어떤 레이어가 내 프로젝트와 관련된 업데이트를 가져와야하는지 명확하지 않습니다. Ruby 환경은 Bento 명령을 모두 Bento 디렉토리에서 실행해야하는 것처럼 보이기 때문에 & 상자의 다른 파일은 비논리적 인 장소로 끝납니다.

누구나이 도구 조합을 사용하기 위해 파일 레이아웃 & 워크 플로를 제안 할 수 있습니까?

답변

4

내가 발견 한 것을 캡처하기 위해 내 자신의 질문에 응답하고 있습니다.


는 도시락, Veewee, 방랑과 루비 반 합리적인 방법으로 함께 작동하도록하는 방법이 있습니다,하지만 그것은 복잡. Veewee를 Packer 도구로 대체 한 Bento의 최신 버전을 사용하는 것이 좋습니다.

패커 Veewee는했지만 등 일부 큰 개선을 만든 것을 더 많거나 적은을 수행합니다

  1. 각 패커 상자 정의 스크립트 파일의 단순 목록을 참조하는 단일 JSON 파일에 - 더 이상 심볼릭 링크가있는 세 개의 파일 레이어; 이해하기 쉽고 소스 코드 제어에 더 좋습니다.

  2. 패커 바이너리는 OS 고유의 실행 파일 (더 이상 Ruby가 아닙니다)입니다. 경로의 어딘가에 배치하여 배포하십시오 (Linux의 경우/usr/local/bin). Packer는 Ruby의 광기를 피합니다.

    1. 버추얼를 설치 여기


    단순한 작업 과정이다. Bento를 설치하십시오. Bento는 또한 Vagrant를 Ruby 보석으로 설치합니다. 그러나 우리는 그 방랑의 예를 사용하지 않을 것입니다. 운영 체제에 맞는 기본 설치 프로그램을 사용하여 Vagrant를 별도로 설치하십시오.

  3. dir & 파일 이름에 사용할 프로젝트의 이름을 선택하십시오. (이 예제에서는 "CUSTOM"을 사용하고 있습니다). bento/packer/scripts 디렉토리에 빈 하위 디렉토리를 만듭니다. 나는 mkdir CUSTOM을했다.

  4. .../bento/packer의 .JSON 파일을 검토하십시오. 당신은 하나의 장소에서 그것을 바꿀 수 있습니다, 아니면 & 하나를 복사하는 것이 현명합니다. 나는 cp centos-6.4-x86_64.json centos-6.4-x86_64-CUSTOM.json을했습니다.

  5. 해당 파일의 "빌더"섹션을 편집하여 VM의 디스크 크기, RAM 크기, ssh 포트 등을 변경하십시오.

  6. "provisioners"섹션을 편집하고 "output"줄을 만들어 상자 파일의 의미있는 이름을 제공하십시오. (이 예제에서는 "BOXFILE"을 사용하고 있습니다). {{timestamp}}을 임베드하여 유닉스 타임 스탬프를 파일 이름에 추가 할 수 있습니다 - 파일 이름을 고유하게 만드는 데 도움이됩니다.

  7. 해당 파일의 "프로 바이더"섹션을 편집하여 패커 빌드 시퀀스에서 실행하려는 모든 스크립트 (순서대로)를 참조하십시오. 이것은 일반적으로 Packer가 이미 제공 한 스크립트와 사용자 정의 목적으로 빌드 한 다른 스크립트의 조합입니다.

내가 사용하는 방법은 다음과 같이 보았다 :

"provisioners": [ 
{ 
    "execute_command": "echo 'vagrant' | {{.Vars}} sudo -S -E bash '{{.Path}}'", 
    "scripts": [ 
    "scripts/common/sshd.sh", 
    "scripts/common/vagrant.sh", 
    "scripts/common/vmtools.sh", 
    "scripts/CUSTOM/reso_1024x768.sh", 
    "scripts/CUSTOM/prompt_cwd.sh", 
    "scripts/CUSTOM/standard_dirs.sh", 
    "scripts/CUSTOM/standard_utils.sh", 
    "scripts/CUSTOM/python27.sh", 
    "scripts/CUSTOM/supervisord.sh", 
    "scripts/CUSTOM/ruby.sh", 
    "scripts/centos/cleanup.sh", 
    "scripts/common/minimize.sh" 
    ], 
    "type": "shell" 
} 

모든 정리에 출석 내 사용자 정의 스크립트를 참고 단계를 최소화 -이 중요하다.

  1. bento/packer 디렉토리에서 packer build -only=virtualbox centos-6.4-x86_64-CUSTOM.json을 실행하십시오. VirtualBox 게스트 애드온 및 기본 OS 용 디스크 이미지 (ISO)가 이전에 다운로드되지 않은 경우 지금도 그대로 유지됩니다. 이 파일들은 너무 커서이 단계가 오래 걸릴 수 있습니다.

  2. 패커는 VirtualBox를 사용하여 임시 VM을 만들고 여기에 지정된 모든 스크립트를 실행합니다. 이 프로세스가 완료되면 위에서 지정한 BOXFILE 이름을 사용하여 bento/builds/visualbox 디렉토리에 VM 복사본이 캡처되고 Packer는 VirtualBox VM을 삭제합니다.

  3. 방금 ​​만든 상자를 등록하십시오. 별도로 설치된 버전의 Vagrant를 사용하여 (예 :/usr/local/bin/vagrant 또는 OS에 적합한 것을 지정해야 할 수도 있음) vagrant box add CUSTOM path/to/BOXFILE을 수행하십시오. 이 상자 정의에서 Vagrant가 VM을 생성하는 데 필요한 파일이있는 ~/.vagrant.d/boxes/CUSTOM/VirtualBox에 새 하위 디렉토리가 만들어집니다.

  4. Vagrant 프로젝트 디렉토리를 만들고 cd로 복사하십시오. 나는 mkdir ~/test; cd ~/test을 했어. vagrant init CUSTOM

  5. 시작 VM : VM에 vagrant up

  6. 연결 :

  7. 이 상자를 사용하여 방랑 프로젝트를 초기화이 시점에서 vagrant ssh

을, 당신이 사용하고있는 방랑자는 정상적으로 그리고 Bento/Packer는 더 이상 개입되지 않습니다. 그들의 결합 된 작업은베이스 박스를 만드는 것 뿐이며 일단 방랑제, 방랑자 스탠드에 등록되면 너 혼자 야.


다시 보는 다른 흥미로운 것들을 많이 있습니다 방랑은 특별한 방랑-AWS 플러그인처럼, 그리고 요리사, 인형이나 Ansible 함께 사용 ...하지만하는 방법을 나는 때문에 여기 중지됩니다 내 원래의 질문에 답합니다.

+0

당신이 코드를 가지고 계세요 체크 아웃 GitHub에서 볼 수 있습니까? –