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.