Как установить и использовать Packer на Ubuntu 18.04?
Packer – это инструмент с открытым исходным кодом для создания идентичных образов машин для нескольких платформ из одной исходной конфигурации.
Это кроссплатформенное и легковесное приложение для командной строки, способное генерировать образы компьютеров с высокой нагрузкой для нескольких платформ параллельно.
Проверьте варианты использования Packer, если вы не знакомы с ним и пытаетесь выяснить, какую выгоду вы получите от этого инструмента.
Что такое Packer образ ?
Образ машины – это одно статическое устройство, которое содержит предварительно сконфигурированную операционную систему и установленное программное обеспечение, которое используется для быстрого создания новых работающих машин.
Форматы образов машин меняются для каждой платформы.
Некоторые примеры включают AMI для EC2, файлы VMDK / VMX для VMware, экспорт OVF для VirtualBox и т. д.
Как установить Packer на Ubuntu 18.04
Packer может быть установлен из предварительно скомпилированного двоичного файла или из исходного кода.
Простым и рекомендуемым методом для всех пользователей является метод двоичной установки.
Это тот, который используется в этой статье.
Сначала проверьте последнюю версию Packer на странице загрузок.
Затем загрузите последнюю версию для вашей платформы.
Поскольку мы делаем это в Ubuntu 18.04, загрузите версию для Linux.
export VER="1.3.4" wget https://releases.hashicorp.com/packer/${VER}/packer_${VER}_linux_amd64.zip
Распакуйте загруженный файл.
unzip packer_${VER}_linux_amd64.zip
Переместите двоичный файл в каталог /usr/local/bin.
sudo mv packer /usr/local/bin
После установки Packer убедитесь, что установка работает, проверив, доступен ли Packer:
$ packer Usage: packer [--version] [--help] [] Available commands are: build build image(s) from template fix fixes templates from old versions of packer inspect see components of a template validate check that a template is valid version Prints the Packer version
Если вы поместили бинарник в другой каталог, переменная PATH должна содержать этот каталог.
Как использовать Packer
Builders используются для генерации образов и создания машин для различных платформ из шаблонов.
Вы можете увидеть полный список поддерживаемых builders.
Template – это файл конфигурации, используемый для определения того, какой образ создается, и его формат – JSON.
В нашем примере ниже мы будем использовать VirtualBox Builder для создания виртуальной машины Ubuntu 18.04 VirtualBox и экспортировать ее в формат OVA или OVF.
Давайте создадим наш рабочий каталог.
mkdir projects/packer/ cd projects/packer/
Создайте файл с именем build.json с содержанием ниже
{
"variables": {
"hostname": "ubuntu",
"domain": "local",
"ssh_user": "packer",
"ssh_pass": "p@ck3r"
},
"builders": [{
"type": "virtualbox-iso",
"guest_os_type": "Ubuntu_64",
"vm_name": "ubuntu-18.04-vbox-template",
"iso_url": "http://cdimage.ubuntu.com/releases/18.04/release/ubuntu-18.04.2-server-amd64.iso",
"iso_target_path": "/home/jmutai/iso/ubuntu-18.04.2-server-amd64.iso",
"iso_checksum": "34416ff83179728d54583bf3f18d42d2",
"iso_checksum_type": "md5",
"memory": "1024",
"cpus": "1",
"disk_size": "20000",
"format": "ova",
"guest_additions_mode": "upload",
"headless": "false",
"http_directory": "http",
"ssh_username": "{{user `ssh_user`}}",
"ssh_password": "{{user `ssh_pass`}}",
"ssh_wait_timeout": "20m",
"shutdown_command": "sudo /sbin/halt -p",
"boot_command": [
"<enter><wait><f6><esc><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs>",
"<bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs><bs>",
"/install/vmlinuz<wait>",
" auto<wait>",
" console-setup/ask_detect=false<wait>",
" console-setup/layoutcode=us<wait>",
" console-setup/modelcode=pc105<wait>",
" debconf/frontend=noninteractive<wait>",
" debian-installer=en_US<wait>",
" fb=false<wait>",
" initrd=/install/initrd.gz<wait>",
" kbd-chooser/method=us<wait>",
" keyboard-configuration/layout=USA<wait>",
" keyboard-configuration/variant=USA<wait>",
" locale=en_US<wait>",
" netcfg/get_domain={{user `domain`}}<wait>",
" netcfg/get_hostname={{user `hostname`}}<wait>",
" grub-installer/bootdev=/dev/sda<wait>",
" noapic<wait>",
" preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg",
" -- <wait>",
"<enter><wait>"
]
}],
"provisioners": [{
"type": "shell",
"inline": [
"sleep 30",
"sudo apt update",
"sudo apt -y install bash-completion wget vim php php-fpm php-mysql"
]
}]
}
Измените настройки в соответствии с дизайном развертывания ypur.
Нам также нужен файл preseed для автоматизации установки Ubuntu 18.04 на VirtualBox с Packer.
Создайте каталог http, как указано в файле сборки JSON.
mkdir http
Затем вставьте содержимое ниже в файл http/preseed.cfg.
# Language and Locale
d-i debian-installer/language string en
d-i debian-installer/locale string en_US.UTF-8
d-i localechooser/preferred-locale string en_US.UTF-8
d-i localechooser/supported-locales en_US.UTF-8
# Hostname / domain
d-i netcfg/get_hostname string ubuntu
d-i netcfg/get_domain string local
# Keyboard
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/layout select USA
d-i keyboard-configuration/variant select USA
d-i keyboard-configuration/modelcode string pc105
# Timezone / Time
d-i time/zone string UTC
d-i clock-setup/utc-auto boolean true
d-i clock-setup/utc boolean true
# Server
tasksel tasksel/first multiselect standard, ubuntu-server
# No proxy
d-i mirror/http/proxy string
# Packages Policy
d-i pkgsel/install-language-support boolean false
d-i pkgsel/update-policy select none
d-i pkgsel/upgrade select full-upgrade
d-i pkgsel/include string openssh-server cryptsetup build-essential libssl-dev libreadline-dev zlib1g-dev
# Partitioning
d-i partman-auto/method string lvm
d-i partman-auto-lvm/guided_size string max
d-i partman-auto/choose_recipe select atomic
d-i partman-auto/disk string /dev/sda
d-i partman-lvm/confirm boolean true
d-i partman-lvm/confirm_nooverwrite boolean true
d-i partman-lvm/device_remove_lvm boolean true
d-i partman/confirm_nooverwrite boolean true
d-i partman/confirm boolean true
d-i partman/confirm_write_new_label boolean true
d-i partman/choose_partition select finish
# Create packer user account.
d-i passwd/user-fullname string packer
d-i passwd/username string packer
d-i passwd/user-password password p@ck3r
d-i passwd/user-password-again password p@ck3r
d-i user-setup/allow-password-weak boolean true
d-i user-setup/encrypt-home boolean false
d-i passwd/user-default-groups packer sudo
При использовании этого примера вам нужно изменить имя пользователя и пароль для пользователя, который будет создан в файле preseed.
Чтобы построить свой образ, запустив следующую команду.
packer build build.json
Поскольку мы отключили установку в автономном режиме, вы сможете наблюдать за установкой в пользовательском интерфейсе VirtualBox.