如何在Ubuntu 20.04/18.04/16.04上安装和使用Packer
时间:2020-02-23 14:33:10 来源:igfitidea点击:
如何在Ubuntu 20.04/18.04/16.04上安装packer?
Packer是一个开源工具,用于从单个源配置中为多个平台创建相同的机器图像。
它是一种跨平台命令行和轻量级应用,能够并行地为多个平台生成和高度机器图像。
如何在Ubuntu 20.04/18.04/16.04上安装packer?
封隔器可以从预编译的二进制文件或者源安装。
所有用户的简单和推荐方法是二进制安装方法。
这是本文中使用的。
首先,检查下载页面上的最新版本包。
然后下载最近的平台版本。
由于我们在Ubuntu 20.04/18.04/16.04上执行此操作,从而下载Linux版本。
export VER="1.5.6" wget https://releases.hashicorp.com/packer/${VER}/packer_${VER}_linux_amd64.zip
解压缩下载的文件。
sudo apt install unzip unzip packer_${VER}_linux_amd64.zip
移动 packer
二进制到 /usr/local/bin
目录。
$sudo mv packer /usr/local/bin $packer version Packer v1.5.6
安装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
如果将packer bi放在不同的目录中,则 PATH
变量应包含此目录。
如何使用packer
构建器用于生成图像并为来自模板的各种平台创建计算机。
我们可以看到已支持的构建器列表。
模板是用于定义构建的图像的配置文件,它的格式是JSON。
在下面的示例中,我们将使用VirtualBox Builder创建Ubuntu虚拟机并以OVA或者OVF格式导出。
让我们创建我们的工作目录。
mkdir projects/packer/ cd projects/packer/
创建一个名为 build.json
有以下内容
{ "variables": { "hostname": "ubuntu", "domain": "local", "ssh_user": "packer", "ssh_pass": "Hyman@theitroad" }, "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
使用packer自动安装Ubuntu 18.04的安装Ubuntu 18.04.
在JSON构建文件中创建一个http目录。
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 Hyman@theitroad d-i passwd/user-password-again password Hyman@theitroad 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