3个版本
0.0.3 | 2024年6月2日 |
---|---|
0.0.2 | 2024年5月12日 |
0.0.1 | 2024年3月17日 |
#1028 in 过程宏
在 3 个库中使用 (通过 goldboot)
3KB
人们通常不会经常从零开始重新安装操作系统。当他们这样做的时候,当他们达到那个原始的桌面或终端时,就会陷入混乱。设置会改变,应用程序会被安装,冗余软件会被移除,文件会被下载到各个地方。系统通常是通过一系列手动鼠标点击和按键操作,从原始状态变为新的“定制”状态。
这种标准方法就像 可变基础设施,意味着你反复更改系统的状态,直到它最终满足你的需求。当出现问题的时候,你必须进行必要的更改才能使其恢复正常。
对于大多数人来说,可变基础设施工作得很好,直到发生重大故障或他们必须完全迁移到新计算机。在这些情况下,他们可能不得不从头开始,并再次应用他们的更改(这次可能略有不同)。
高级计算机精英可能实践 不可变基础设施。这意味着每次他们启动系统时,其状态几乎与之前完全相同。在运行时所做的任何更改在重启时都会消失。这种方法有一些实际的好处,但需要用户付出相当多的努力。
goldboot
是一个工具,用于为实际硬件构建机器镜像,可以帮助你实现几乎不可变基础设施,而不会给自己带来太多额外的工作。
在 goldboot
方法中,你为要部署的每台机器创建一个声明性配置文件。使用此配置,goldboot
在本地机器或像 GitHub Actions 这样的 CI 平台上构建镜像。生成的镜像可以通过 USB 驱动器或通过 PXE 启动部署到实际硬件。
警告:这个工具完全不完整,仅应用于测试!自行承担风险!
goldboot
大约相当于将 docker
和 packer
混合在一起的结果。不同于构建容器或虚拟机,goldboot
构建的是用于真实硬件的镜像。
这些机器镜像(也称为 金镜像)包含您的操作系统、应用程序、软件补丁和配置,全部封装在一个易于部署的包中。
与Docker镜像类似,您的 goldboot
镜像可以存储在注册表中,并拉取到真实硬件上。
安装
Docker
从Docker Hub安装
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构建金镜像是一种常见做法,因此还有一个 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驱动器并重新启动机器。
依赖
~260–700KB
~17K SLoC