4个版本
0.0.4 | 2024年6月2日 |
---|---|
0.0.3 | 2024年6月2日 |
0.0.2 | 2024年5月12日 |
0.0.1 | 2024年3月17日 |
#551 in 密码学
在 3 个crate中使用
115KB
922 行
人们通常不会经常从头开始重新安装操作系统。当他们这样做时,一旦到达那片纯净的桌面或终端,混乱就随之而来。设置被更改,应用程序被安装,冗余软件被删除,文件被下载到各个地方。系统通常通过一系列手动点击和按键操作从原始状态改变为新的“自定义”状态。
这种标准方法类似于可变基础设施,意味着你反复修改系统的状态,直到它最终满足你的需求。当事情出错时,你必须进行必要的更改以使其恢复正常。
对于大多数人来说,可变基础设施在出现重大故障或他们不得不迁移到新计算机的情况下才会出现问题。在这些情况下,他们可能不得不从头开始,并重新应用他们的更改(这次可能略有不同)。
高级计算机精英可能会实践不可变基础设施。这意味着每次他们启动系统时,其状态几乎与上一次启动时相同。在运行时所做的任何更改在重启时都会消失。这种方法有一些真正的优势,但需要用户付出相当多的努力。
goldboot
是一个构建真实硬件机器镜像的工具,可以帮助你实现接近不可变基础设施,而不需要为你自己创造太多额外的工作。
在 goldboot
方法中,你为要部署的每台机器创建一个声明性配置文件。使用此配置,goldboot
在你的本地机器或像 Github Actions 这样的CI平台上构建镜像。生成的镜像可以通过USB驱动器或通过PXE启动部署到真实硬件。
警告:此工具完全未完成,仅应用于测试!自行承担风险!
goldboot
大约是你将得到的结果,如果将 docker
和 packer
混合在一起。
这些机器镜像(也称为黄金镜像)包含你的操作系统、应用程序、软件补丁和配置,全部打包成一个易于部署的包。
与Docker镜像类似,您的goldboot
镜像可以存储在注册表中,并拉取到真实硬件上。
安装
Docker
从DockerHub安装
alias goldboot="docker run --rm -v .:/root fossable/goldboot"
Crates.io
从crates.io安装
cargo install goldboot
Arch Linux
从AUR安装
cd /tmp
curl https://aur.archlinux.org/cgit/aur.git/snapshot/goldboot.tar.gz | tar xf -
makepkg -si
Github Releases
从Github releases手动安装
curl -o /usr/bin/goldboot https://github.com/fossable/goldboot/releases/download/goldboot-v0.0.7/goldboot_<platform>
chmod +x /usr/bin/goldboot
依赖
apt-get install -y libudev1 libgtk-4-1 libglib2.0-0
Github Actions
在Github actions上运行
使用CI构建Golden镜像是一种常见的做法,因此还有一个Github action使其变得简单
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build goldboot image
uses: fossable/goldboot-action@main
with:
config-path: goldboot.json
output-path: image.gb
- name: Save image artifact
uses: actions/upload-artifact@v3
with:
name: my_image.gb
path: image.gb
示例
goldboot-examples仓库包含所有支持的操作系统类型和系统架构的示例配置。它们是在每周的安排下基于最新版本的goldboot
构建的。
Linux | Windows | macos |
---|---|---|
示例教程
让我们构建一个基本的Arch Linux 镜像来证明我们是真正的Linux用户。
首先,创建一个目录来保存我们的配置(这可以在以后进行版本控制)
mkdir Test && cd Test
初始化目录,并选择以ArchLinux
开始
goldboot init \
--name Test \
--os ArchLinux \
--size 10G \
--format json
这将创建goldboot.json
,其中包含可以调整以满足您需求的配置选项。例如
{
"alloy": [
{
"os": {
"ArchLinux": {
"hostname": "YeahIUseArch",
"root_password": {
"plaintext": "123456"
}
}
},
"source": {
"Iso": {
"url": "https://mirrors.edge.kernel.org/archlinux/iso/2024.01.01/archlinux-2024.01.01-x86_64.iso",
"checksum": "sha256:12addd7d4154df1caf5f258b80ad72e7a724d33e75e6c2e6adc1475298d47155"
}
}
}
],
"arch": "Amd64",
"name": "Test",
"size": "10G"
}
有许多自定义镜像的方法,但在此阶段只需构建它
goldboot cast .
一旦构建成功,镜像将被保存到系统的库目录中。要将它部署到物理磁盘,您可以将镜像包含在新的可启动USB驱动器上
# THIS WILL OVERWRITE /dev/sdX!
goldboot liveusb --output /dev/sdX --include Test
一旦创建了USB,您可以使用它来启动goldboot live环境,并选择一个要部署的镜像
一旦镜像被部署,请移除可启动的USB驱动器并重新启动机器。
依赖
~9.5MB
~173K SLoC