내가 발견 한 것을 캡처하기 위해 내 자신의 질문에 응답하고 있습니다.
는 도시락, Veewee, 방랑과 루비 반 합리적인 방법으로 함께 작동하도록하는 방법이 있습니다,하지만 그것은 복잡. Veewee를 Packer 도구로 대체 한 Bento의 최신 버전을 사용하는 것이 좋습니다.
패커 Veewee는했지만 등 일부 큰 개선을 만든 것을 더 많거나 적은을 수행합니다
각 패커 상자 정의 스크립트 파일의 단순 목록을 참조하는 단일 JSON 파일에 - 더 이상 심볼릭 링크가있는 세 개의 파일 레이어; 이해하기 쉽고 소스 코드 제어에 더 좋습니다.
패커 바이너리는 OS 고유의 실행 파일 (더 이상 Ruby가 아닙니다)입니다. 경로의 어딘가에 배치하여 배포하십시오 (Linux의 경우/usr/local/bin). Packer는 Ruby의 광기를 피합니다.
버추얼를 설치 여기
단순한 작업 과정이다. Bento를 설치하십시오. Bento는 또한 Vagrant를 Ruby 보석으로 설치합니다. 그러나 우리는 그 방랑의 예를 사용하지 않을 것입니다. 운영 체제에 맞는 기본 설치 프로그램을 사용하여 Vagrant를 별도로 설치하십시오.
dir & 파일 이름에 사용할 프로젝트의 이름을 선택하십시오. (이 예제에서는 "CUSTOM"을 사용하고 있습니다). bento/packer/scripts 디렉토리에 빈 하위 디렉토리를 만듭니다. 나는 mkdir CUSTOM
을했다.
.../bento/packer의 .JSON 파일을 검토하십시오. 당신은 하나의 장소에서 그것을 바꿀 수 있습니다, 아니면 & 하나를 복사하는 것이 현명합니다. 나는 cp centos-6.4-x86_64.json centos-6.4-x86_64-CUSTOM.json
을했습니다.
해당 파일의 "빌더"섹션을 편집하여 VM의 디스크 크기, RAM 크기, ssh 포트 등을 변경하십시오.
"provisioners"섹션을 편집하고 "output"줄을 만들어 상자 파일의 의미있는 이름을 제공하십시오. (이 예제에서는 "BOXFILE"을 사용하고 있습니다). {{timestamp}}
을 임베드하여 유닉스 타임 스탬프를 파일 이름에 추가 할 수 있습니다 - 파일 이름을 고유하게 만드는 데 도움이됩니다.
해당 파일의 "프로 바이더"섹션을 편집하여 패커 빌드 시퀀스에서 실행하려는 모든 스크립트 (순서대로)를 참조하십시오. 이것은 일반적으로 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"
}
모든 정리에 출석 내 사용자 정의 스크립트를 참고 단계를 최소화 -이 중요하다.
bento/packer 디렉토리에서 packer build -only=virtualbox centos-6.4-x86_64-CUSTOM.json
을 실행하십시오. VirtualBox 게스트 애드온 및 기본 OS 용 디스크 이미지 (ISO)가 이전에 다운로드되지 않은 경우 지금도 그대로 유지됩니다. 이 파일들은 너무 커서이 단계가 오래 걸릴 수 있습니다.
패커는 VirtualBox를 사용하여 임시 VM을 만들고 여기에 지정된 모든 스크립트를 실행합니다. 이 프로세스가 완료되면 위에서 지정한 BOXFILE 이름을 사용하여 bento/builds/visualbox 디렉토리에 VM 복사본이 캡처되고 Packer는 VirtualBox VM을 삭제합니다.
방금 만든 상자를 등록하십시오. 별도로 설치된 버전의 Vagrant를 사용하여 (예 :/usr/local/bin/vagrant 또는 OS에 적합한 것을 지정해야 할 수도 있음) vagrant box add CUSTOM path/to/BOXFILE
을 수행하십시오. 이 상자 정의에서 Vagrant가 VM을 생성하는 데 필요한 파일이있는 ~/.vagrant.d/boxes/CUSTOM/VirtualBox에 새 하위 디렉토리가 만들어집니다.
Vagrant 프로젝트 디렉토리를 만들고 cd로 복사하십시오. 나는 mkdir ~/test; cd ~/test
을 했어. vagrant init CUSTOM
시작 VM : VM에 vagrant up
연결 :
이 상자를 사용하여 방랑 프로젝트를 초기화이 시점에서 vagrant ssh
을, 당신이 사용하고있는 방랑자는 정상적으로 그리고 Bento/Packer는 더 이상 개입되지 않습니다. 그들의 결합 된 작업은베이스 박스를 만드는 것 뿐이며 일단 방랑제, 방랑자 스탠드에 등록되면 너 혼자 야.
다시 보는 다른 흥미로운 것들을 많이 있습니다 방랑은 특별한 방랑-AWS 플러그인처럼, 그리고 요리사, 인형이나 Ansible 함께 사용 ...하지만하는 방법을 나는 때문에 여기 중지됩니다 내 원래의 질문에 답합니다.
당신이 코드를 가지고 계세요 체크 아웃 GitHub에서 볼 수 있습니까? –