====== Packer ======
* [[https://www.packer.io/|Packer]]
* 표준화된 Machine Image 생성기
* Machine image formats change for each platform. Some examples include AMIs for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc.
===== Install =====
* [[https://www.packer.io/downloads.html|Packer downloads]] 에서 적합한 버전을 받아서 ''~/.local/bin'' 등에 복사하고 ''PATH'' 걸어주고 사용한다.
===== Template Engine =====
* 기본 템플릿 https://www.packer.io/docs/templates/engine.html
* 시간 포매팅 2006, 01, 02는 실제 년월일로 자동 대체된다. JSON에서 따옴표는 ''\"''로 지정한다.
{{isotime "2006-01-02"}}
===== Templates =====
* [[https://github.com/kaorimatz/packer-templates|Packer Templates for vagrant]]
* [[https://github.com/geerlingguy/packer-ubuntu-1604|geerlingguy/packer-ubuntu-1604: Packer Example - Ubuntu 16.04 minimal Vagrant Box using Ansible provisioner]]
===== AWS AMI Builder =====
* ''vpc_ic'', ''subnet_id'' 등을 명시하지 않으면 ''Error launching source instance: VPCIdNotSpecified: No default VPC for this user'' 같은 오류가 발생할 수 있다.
* public IP가 있어야 외부 패키지 설치가 가능한 경우등에는(defualt VPC가 아니라면) 다음 필요
associate_public_ip_address": true
===== Provisioners =====
==== file ====
* 파일 복사시에 디렉토리로 복사할 경우 destination의 끝에 ''/''가 있어야 한다.
{
"type": "file",
"source": "./welcom.txt",
"destination": "/home/ec2-user/"
},
===== 참조 =====
* [[https://www.slideshare.net/awskr/packer-ansible-ami-autoscaling-group-88560117|Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기]]
* [[https://www.youtube.com/watch?v=9Zd1j0z4zS0|Packer + Ansible을 이용한 AMI 생성 및 AutoScaling Group 이미지 교체 이야기 - YouTube]]
* [[https://www.44bits.io/ko/post/building-docker-image-and-using-packer|패커(Packer)를 사용한 도커 이미지와 AMI 만들기(feat. Ansible) | 44BITS]]
* [[http://bcho.tistory.com/1225|VM 이미지 생성을 위한 오픈소스 Packer]]