На 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
- packer.hcl
- packer-playbook.yml
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"
}
}
---
- name: install docker engine ubuntu
hosts: all
become: true
become_method: sudo
tasks:
- name: 1. Update the apt package index and install packages to allow apt to use a repository over HTTPS
apt:
name:
- apt-transport-https
- ca-certificates
- curl
- gnupg
- lsb-release
- python3-pip
- awscli
state: latest
update_cache: true
- name: 2. Add Docker’s official GPG key
apt_key:
url: https://download.docker.com/linux/ubuntu/gpg
state: present
- name: 3. Add Docker Repository
apt_repository:
repo: deb https://download.docker.com/linux/ubuntu focal stable # FIXME move to var
state: present
- name: 4. Install docker engine
apt:
name: docker-ce
state: latest
update_cache: true
# Docker post-install steps for ubuntu
- name: 1. Make sure that group "docker" exists
group:
name: docker
state: present
- name: 2. Add aws user to docker docker group
user:
name: ubuntu
groups: docker
append: true
post-processors
caution
Не протестировал
Штуки которые выполняются после сборки, например публикация в VagrantCloud (docker push)