Поиск по сайту:

Установите и используйте Packer в Ubuntu 22.04/20.04/18.04/16.04 |


Как установить Packer на Ubuntu 22.04/20.04/18.04/16.04?. Packer — это инструмент с открытым исходным кодом для создания идентичных образов машин для нескольких платформ из одной конфигурации. Это кроссплатформенное и легкое приложение командной строки, способное параллельно генерировать и обрабатывать высокопроизводительные образы для нескольких платформ.

Проверьте варианты использования Packer, если вы новичок в нем и пытаетесь выяснить, какую пользу вы получите от этого инструмента.

Что такое изображение упаковочной машины?

Образ машины — это единая статическая единица, содержащая предварительно настроенную операционную систему и установленное программное обеспечение, которое используется для быстрого создания новых работающих машин. Форматы образов машин меняются для каждой платформы. Некоторые примеры включают AMI для EC2, файлы VMDK/VMX для VMware, экспорт OVF для VirtualBox и т. д.

Установите Packer на Ubuntu 22.04/20.04/18.04/16.04.

Packer можно установить из предварительно скомпилированного двоичного файла или из исходного кода. Самый простой и рекомендуемый метод для всех пользователей — метод бинарной установки. Именно этот используется в этой статье.

Сначала проверьте последнюю версию Packer на странице «Загрузки». Затем загрузите последнюю версию для вашей платформы. Но для нас мы выполним установку из репозитория APT:

Установите основные зависимости:

sudo apt update
sudo apt -y install apt-transport-https ca-certificates curl software-properties-common

Импортируйте ключ GPG, используемый при подписании пакета:

curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/hashicorp.gpg

Добавьте репозиторий Hashicorp APT в вашу систему Ubuntu:

sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"

Наконец обновите индекс пакета и установите упаковщик:

sudo apt update && sudo apt install packer

После установки Packer убедитесь, что установка работает, проверив, что упаковщик доступен:

$ packer
Usage: packer [--version] [--help] 
 []

Available commands are:
    build           build image(s) from template
    console         creates a console for testing variable interpolation
    fix             fixes templates from old versions of packer
    fmt             Rewrites HCL2 config files to canonical format
    hcl2_upgrade    transform a JSON template into an HCL2 configuration
    init            Install missing plugins or upgrade plugins
    inspect         see components of a template
    plugins         Interact with Packer plugins and catalog
    validate        check that a template is valid
    version         Prints the Packer version

Чтобы проверить версию программного обеспечения, выполните:

$ packer --version
1.9.4

Если вы поместили упаковщик bi в другой каталог, переменная PATH должна содержать этот каталог.

Использование Packer в Ubuntu 22.04/20.04/18.04/16.04

Строители используются для генерации образов и создания машин для различных платформ из шаблонов. Вы можете увидеть полный список поддерживаемых сборщиков. Шаблон — это файл конфигурации, используемый для определения того, какое изображение создается, и его формат — JSON.

В нашем примере ниже мы будем использовать VirtualBox Builder для создания виртуальной машины Ubuntu и экспорта ее в формат 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.6-server-amd64.iso",
        "iso_target_path": "/tmp/ubuntu-18.04.6-server-amd64.iso",
        "iso_checksum": "f5cbb8104348f0097a8e513b10173a07dbc6684595e331cb06f93f385d0aecf6",
        "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"
        ]
    }]
}

Измените настройки в соответствии с вашим дизайном развертывания. Нам также нужен файл 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

Если вы используете этот пример, вам нужно будет изменить имя пользователя и пароль для пользователя, который будет создан в предварительном файле.

Чтобы создать свой образ, выполните следующую команду.

$ packer build build.json

Поскольку мы отключили установку в автономном режиме, вы сможете наблюдать за установкой в пользовательском интерфейсе VirtualBox.

В следующих руководствах я расскажу об использовании других провайдеров, таких как Docker, AWS, CloudStack, QEMU и т. д. Подпишитесь на нашу рассылку, чтобы получать мгновенные обновления.

Также проверьте:

  • Создание шаблонов виртуальных машин CentOS/Fedora/RHEL на KVM
  • Предоставление виртуальных машин на KVM с помощью Terraform

Статьи по данной тематике: