Packer

Hashicorp Packer

Mit diesem Tool werden Images unterschiedlichster Art gebaut: Docker, AMI, VMWare, Virtualbox, ...


Getting Started

Packer besteht - Hashicorp typisch - nur aus einzigen Executable - somit keine Library-Abhängigkeiten - download, unzip and ready to use :-)

Ich verwende hier einen Windows-Rechner mit installiertem VirtualBox.

Mit dieser Beschreibung in der Datei ubuntu-14.04.json (hier findet man Ubuntu-Images)

{
    "builders": [
        {
            "type": "virtualbox-iso",
            "guest_os_type": "Ubuntu_64",
            "iso_checksum": "946a6077af6f5f95a51f82fdc44051c7aa19f9cfc5f737954845a6050543d7c2",
            "iso_url": "http://old-releases.ubuntu.com/releases/14.04.1/ubuntu-14.04.1-server-amd64.iso",
            "iso_checksum_type": "sha256",
            "output_directory": "output-ubuntu-14.04",
            "vm_name": "ubuntu-14.04",
            "disk_size": 15000,
            "headless": "true",
            "http_directory": "http",
            "boot_wait": "10s",
            "boot_command": [
                "<esc><wait>",
                "<esc><wait>",
                "<enter><wait>",
                "/install/vmlinuz<wait>",
                " initrd=/install/initrd.gz",
                " auto-install/enable=true",
                " debconf/priority=critical",
                " preseed/url=http://{{ .HTTPIP }}:{{ .HTTPPort }}/preseed.cfg<wait>",
                " -- <wait>",
                "<enter><wait>"
            ],
            "ssh_timeout": "60m",
            "ssh_username": "ubuntu",
            "ssh_password": "ubuntu",
            "shutdown_command": "sudo systemctl poweroff",
            "vboxmanage": [
                ["modifyvm", "{{.Name}}", "--memory", 512],
                ["modifyvm", "{{.Name}}", "--cpus", 1]
            ]
        }
    ],
	"provisioners": [
	]
}    ```

und der Datei `preseed.cfg` im Unterverzeichnis `http` mit folgendem Inhalt

Preseeding only locale sets language, country and locale.

d-i debian-installer/locale string en_US

Keyboard selection.

d-i console-setup/ask_detect boolean false d-i keyboard-configuration/xkb-keymap select us

choose-mirror-bin mirror/http/proxy string

Clock and time zone setup

d-i clock-setup/utc boolean true d-i time/zone string UTC

Avoid that last message about the install being complete.

d-i finish-install/reboot_in_progress note

This is fairly safe to set, it makes grub install automatically to the MBR

if no other operating system is detected on the machine.

d-i grub-installer/only_debian boolean true

This one makes grub-installer install to the MBR if it also finds some other

OS, which is less safe as it might not be able to boot that other OS.

d-i grub-installer/with_other_os boolean true

Mirror settings

If you select ftp, the mirror/country string does not need to be set.

d-i mirror/country string manual d-i mirror/http/directory string /ubuntu/ d-i mirror/http/hostname string archive.ubuntu.com d-i mirror/http/proxy string

Partitioning

d-i partman-auto/method string lvm

This makes partman automatically partition without confirmation.

d-i partman-md/confirm boolean true d-i partman-partitioning/confirm_write_new_label boolean true d-i partman/choose_partition select finish d-i partman/confirm boolean true d-i partman/confirm_nooverwrite boolean true

Account setup

d-i passwd/user-fullname string vagrant d-i passwd/user-uid string 1000 d-i passwd/user-password password vagrant d-i passwd/user-password-again password vagrant d-i passwd/username string vagrant

The installer will warn about weak passwords. If you are sure you know

what you're doing and want to override it, uncomment this.

d-i user-setup/allow-password-weak boolean true d-i user-setup/encrypt-home boolean false

Package selection

tasksel tasksel/first standard d-i pkgsel/include string openssh-server build-essential d-i pkgsel/install-language-support boolean false

disable automatic package updates

d-i pkgsel/update-policy select none d-i pkgsel/upgrade select full-upgrade

packer build ubuntu-14.04.json

Last updated

Was this helpful?