Packer in Atlas
요즘은 1부터 안 써도 누가 잘하는 게 있어서 까불면서 많이 하고 있어요.
정신을 차리면 틀림없이 누군가가 기계의 SSD를 망가뜨렸을 것이다.
제작된 Vagrant Box와 Docker 이미지를 공개하려면 업로드를 해야 하는데, 업로드할 때 흥분한 것은 처음이었다.기다리는 시간이 점점 지루해졌다.
아, 원격으로 Packer를 실행하면 자동 배포 상태를 유지할 수 있을까요?
그런 소원을 이룰 수 있는 것은Atlas이다.
아틀라스는 Vagrant와 Packer를 개발한Hashicorp에서 제공하는 서비스로 Vagrant Box의 접대와 검색, 코피가 흐르는 Vagrant Share 등Vagrant Cloud의 대체품을 제공한다.
Hashicorp사의 새로운 서비스 ATLAS와 주변 도구의 총결
이 Atlas를 사용하면 Packer를 원격으로 실행하고 구축된Vagrant Box와 Docker 이미지, AMI를 보관하고 공개할 수 있습니다.
Atlas 계정
과거 Vagrant Cloud를 사용한 경우 그 계정으로 로그인할 수 있습니다.
사용하지 않았으면 계좌를 만드세요.
계정을 만들면 Personal Settings 페이지에 Token이 만들어집니다.
생성된 영패를 환경 변수로 설정합니다.
.bashrc
export ATLAS_TOKEN=VZCJUQMKVWqjP99oys-mx6h2PicLbpzBiBtAxHV_DvRDTMtsWEQdidA8YCydSH1Ctmo
Packer Template 준비
이번에 주식회사 시우당 공개된 shiguredo/packer-templates 로 CentOS 7을 제작한 Vagrant Box.
template.json에 따라 다음과 같은 편집을 진행합니다.
Push
이 구성 설정의 이름을
Atlasアカウント名/ビルド設定名
형식으로 정의합니다.template.json
"push": {
"name": "niwashun/centos70-build-configuration"
}
※ 구축명에 centos-7.0
라는 점이 포함돼 있다면, 이후 실행packer push
하기는 어려울 것 같습니다.Builders
원래 기록된 ISO 파일을 잃어버린 것 같아서 변경하려고 합니다.
template.json
"builders": [
{
"type": "virtualbox-iso",
...
"iso_checksum": "154ba47b7a37e52e0100310c3aeb8f9d9daf4806",
"iso_checksum_type": "sha1",
"iso_url": "http://ftp.iij.ad.jp/pub/linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso",
...
},
{
"type": "vmware-iso",
...
"iso_checksum": "154ba47b7a37e52e0100310c3aeb8f9d9daf4806",
"iso_checksum_type": "sha1",
"iso_url": "http://ftp.iij.ad.jp/pub/linux/centos/7.0.1406/isos/x86_64/CentOS-7.0-1406-x86_64-DVD.iso",
...
}
]
Variables
반드시 필요한 것은 아니지만 Atlas 계정 이름과 Vagrant Box 이름은 변수로 정의됩니다.
template.json
"variables": {
"atlas_username": "niwashun",
"atlas_name": "centos-7.0",
}
Post-Processors
VMware 및 VirtualBox용 Atlas post-Proessor를 정의합니다.
variables를 정의하지 않으면artifact를 적당히 고쳐 주십시오.
template.json
"post-processors": [
{
"type": "atlas",
"only": ["vmware-iso"],
"artifact": "{{user `atlas_username`}}/{{user `atlas_name`}}",
"artifact_type": "vagrant.box",
"metadata": {
"provider": "vmware_desktop",
"version": "0.0.1"
}
},
{
"type": "atlas",
"only": ["virtualbox-iso"],
"artifact": "{{user `atlas_username`}}/{{user `atlas_name`}}",
"artifact_type": "vagrant.box",
"metadata": {
"provider": "virtualbox",
"version": "0.0.1"
}
}
]
결국 이런 느낌.Push 명령 실행
드디어 원격으로 구축을 실행합니다.편집한
template.json
과 같은 디렉터리에서 packer push
실행합니다.command-line
$ packer push -create template.json
성공하면 Push successful to 'niwashun/centos70-build-configuration'
의 정보가 표시됩니다.그럼, 아틀라스를 보세요.
template.json
에 지정된 빌드 이름에서 각 Builder의 상태를 확인할 수 있습니다.몇 번
packer push
했더라면 그 이력서도 여기로 출력됐을 거야.자세한 빌드 상태를 확인하려면
virtualbox-iso
의 오른쪽 끝을 클릭합니다.구축이 완료되면 상태가finished 또는 error로 변경됩니다.
$ vagrant init niwashun/centos-7.0
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
구축된 Box 파일은 Private입니다.이 상태에서 해보고 싶다면
vagrant login
이 필요하다.$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'niwashun/centos-7.0' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
The box 'niwashun/centos-7.0' could not be found or
could not be accessed in the remote catalog. If this is a private
box on Vagrant Cloud, please verify you're logged in via
`vagrant login`. Also, please double-check the name. The expanded
URL and error message are shown below:
URL: ["https://vagrantcloud.com/niwashun/centos-7.0"]
Error: The requested URL returned error: 404 Not Found
vagrant login
해보세요.$ vagrant login
In a moment we'll ask for your username and password to Vagrant Cloud.
After authenticating, we will store an access token locally. Your
login details will be transmitted over a secure connection, and are
never stored on disk locally.
If you don't have a Vagrant Cloud account, sign up at vagrantcloud.com
Username or Email: niwashun
Password (will be hidden):
You're now logged in!
이렇게 하면 됩니다vagrant up
.$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Box 'niwashun/centos-7.0' could not be found. Attempting to find and install...
default: Box Provider: virtualbox
default: Box Version: >= 0
==> default: Loading metadata for box 'niwashun/centos-7.0'
default: URL: https://vagrantcloud.com/niwashun/centos-7.0
==> default: Adding box 'niwashun/centos-7.0' (v0.0.1) for provider: virtualbox
default: Downloading: https://vagrantcloud.com/niwashun/boxes/centos-7.0/versions/0.0.1/providers/virtualbox.box
The "metadata.json" file for the box 'niwashun/centos-7.0' was not found.
Boxes require this file in order for Vagrant to determine the
provider it was made for. If you made the box, please add a
"metadata.json" file to it. If someone else made the box, please
notify the box creator that the box is corrupt. Documentation for
box file format can be found at the URL below:
http://docs.vagrantup.com/v2/boxes/format.html
・・!그리고 못해!?
Missing metadata.json (Packer (push) -> ATLAS (build) -> Vagrant (download)) #2090
훌훌
참고 자료
Packer in Atlas: Automate the Building and Managing of Vagrant Boxes and Machine Images
Reference
이 문제에 관하여(Packer in Atlas), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/niwashun/items/c93664d15226ee76d10b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)