Skip to main content

Selfmade Vagrant box

· 2 min read

На VagrantCloud не нашел нормальных box-ов с GUI.

Процесс

info

Буду делать аналогии с docker

config file

Описываем конфигурацию нашего VagrantBox (DockerImage) в формате .hcl (terraform)

source "vagrant" "ubuntu" {
add_force = true
communicator = "ssh"
provider = "virtualbox"
source_path = "ubuntu/focal64"
}

build {
name = "learn-packer"
sources = [
"source.vagrant.ubuntu"
]
}
tip

Полезные команды:

packer validate packer.hcl  # валидирует файл
packer fmt . # форматирует файлы, и кажется, выполняет валидацию

build

С помощью packer (docker engine) собираем образ.

packer build packer.hcl

Через некоторое время в директории learn-packer появится файл .box (docker_image)

push

Заливаем получившийся файл на VagrantCloud. Понадобиться собрать хэш-сумму файла, например через md5

provisioner

note

Любимый провиженер - ansible, но можно использовать shell

source "vagrant" "ubuntu" {
add_force = true
communicator = "ssh"
provider = "virtualbox"
source_path = "ubuntu/focal64"
}

build {
name = "learn-packer"
sources = [
"source.vagrant.ubuntu"
]
provisioner "ansible" {
playbook_file = "./ansible/packer-playbook.yml"
}
}

post-processors

caution

Не протестировал

Штуки которые выполняются после сборки, например публикация в VagrantCloud (docker push)

GitHub repo