Bento 是一个封装 Packer 模板的项目,用于构建 Vagrant 基础盒子。构建模板的子集并将其发布到 Vagrant Cloud 上的 Bento 组织。这些已发布的框用作 kitchen-vagrant 的默认框。
*笔记:
bento test
命令正常工作,必须安装 test-kitchen 和 kitchen-vagrant gemsvboxmanage = []
添加到os_pkrvars文件中。向 Vagrant 添加便当盒
vagrant box add bento/ubuntu-18.04
在 Vagrantfile 中使用便当盒
Vagrant . configure ( "2" ) do | config |
config . vm . box = "bento/ubuntu-18.04"
end
*1注意:对这些提供商的支持被视为实验性的,相应的 Vagrant Cloud 镜像可能存在也可能不存在。
*2注意: AARCH64 或 ARM64 支持是一项正在进行的工作,仅通过 Parallels 和 vmware 提供商保证。
bento
可执行文件要使用 Bento 工具以及os_pkrvars
目录中提供的模板构建 Debian vagrant box,我们可以使用以下命令:
bento build --cpus 2 os_pkrvars/debian/debian-12-x86_64.pkrvars.hcl
其他可用选项:
用于列出可用于工作站 CPU 架构的所有版本。该列表也由 build.yml 文件 do_not_build: 部分过滤。所有条目都通过正则表达式进行匹配,以从列表中过滤掉构建模板。
这仅显示使用bento build
构建的内容,并且未指定模板。如果指定了任何模板,即使它位于要过滤的 build.yml 中,它也会覆盖过滤器。
bento list
如果您已使用 Bento 工具成功构建了 vagrant box,则builds
文件夹中应该有 vagrant box 和元数据文件。您可以使用这些文件通过测试厨房配置来测试构建。运行以下命令来测试构建。
bento test
要将构建目录中的框上传到您的 vagrant 云帐户,请更新 build.yml 文件以指定您的帐户名称以及哪些操作系统将公开。
确保您已配置 vagrant cli 并登录您的帐户以使上传命令正常工作。
bento upload
运行bento upload
时,它将读取每个 <box_name>._metadata.json 文件,并使用提供的数据生成vagrant cloud publish
命令,其中的描述、版本、提供程序和校验和均来自 <box_name>._metadata.json文件。
packer
仅为 VirtualBox 提供商构建 Ubuntu 22.04 盒子
cd < path/to > /bento
packer init -upgrade ./packer_templates
packer build -only=virtualbox-iso.vm -var-file=os_pkrvars/ubuntu/ubuntu-22.04-x86_64.pkrvars.hcl ./packer_templates
为所有可能的提供商(同时)构建最新的 Debian 12 盒子
cd < path/to > /bento
packer init -upgrade ./packer_templates
packer build -var-file=os_pkrvars/debian/debian-12-x86_64.pkrvars.hcl ./packer_templates
为除 VMware 和 Parallels 之外的所有提供商构建最新的 CentOS 7 盒子
cd < path/to > /bento
packer init -upgrade ./packer_templates
packer build -except=parallels-iso.vm,vmware-iso.vm -var-file=os_pkrvars/centos/centos-7-x86_64.pkrvars.hcl ./packer_templates
使用备用网址
cd < path/to > /bento
packer init -upgrade ./packer_templates
packer build -var ' iso_url=https://mirrors.rit.edu/fedora/fedora/linux/releases/39/Server/x86_64/iso/Fedora-Server-dvd-x86_64-39-1.5.iso ' -var-file=os_pkrvars/fedora/fedora-39-x86_64.pkrvars.hcl ./packer_templates
如果构建成功,您的 box 文件将位于存储库根目录的builds
目录中。
您必须下载带有半虚拟化 KVM/qemu 硬件的 Windows 驱动程序的 iso 映像,并将其放置在 builds/iso/ 目录中。您可以从命令行执行此操作: mkdir -p builds/iso/; wget -nv -nc https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso -O builds/iso/virtio-win.iso
您可以使用以下示例命令构建 KVM/qemu Windows 盒子:
packer init -upgrade ./packer_templates
packer build --only=qemu.vm -var-file=os_pkrvars/windows/windows-2022-x86_64.pkrvars.hcl ./packer_templates
存储库中还提供了仅通过许可证或订阅提供的操作系统模板,包括但不限于:Red Hat Enterprise Linux 和 SUSE Linux Enterprise。由于 ISO 不公开,因此需要酌情覆盖 URL 值。我们依靠有权访问操作系统许可版本的人员的努力来使这些版本保持最新。
大多数提供商希望不受限制地访问网络,以便按预期进行构建。我们无法枚举所有可能的防火墙配置,但在下面包含一些可能对用户有用的片段。
$VS = " Standardswitch "
$IF_ALIAS = ( Get-NetAdapter - Name " vEthernet ( $VS ) " ).ifAlias
New-NetFirewallRule - Displayname " Allow incomming from $VS " - Direction Inbound - InterfaceAlias $IF_ALIAS - Action Allow
Hyper-V Gen 2 VM 不支持软盘驱动器。如果您之前使用软盘驱动器提供了资源,则必须将这些文件添加到 Gen 2 iso 映像中,特别是:
autounattend.xml
:第 2 代autounattend.xml
文件支持 EFI 分区。使用适合您的系统的正确 Windows 版本更新autounattend.xml
,并确保分区适合您的情况。您还需要管理包含 hyper-v 来宾服务驱动程序的驱动程序磁盘,并根据需要调整autounattend.xml
文件。请使用 GitHub issues 报告错误、功能或其他问题。
非常感谢这些相关项目,我们从中获得了灵感,并经常用作基础盒构建复杂世界中解决方法的来源。
这些基础盒模板是从最初基于 Tim Dysinger 所做工作的 veewee 定义转换而来的,目的是制作“不要重复自己”(DRY) 模块化基础盒。谢谢蒂姆!
Copyright 2012-2024, Progress Software, Inc. (<[email protected]>)
Copyright 2011-2012, Tim Dysinger (<[email protected]>)
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.