The main bottleneck here is finishing the config format which is a critical component that everything else depends. It's user-facing, so it should be both intuitive and stable.
Some required features:
- Support multiboot images
- Flexible enough to conveniently support any kind of operating system
- Support custom provisioners for certain operating systems (
MirrorlistProvisioner for certain Linux distributions, for example)
- JSON, YAML, and maybe even TOML
- Documentation can be generated from Rust structs
This format is what I was working towards previously, but I think there's still room for improvement:
{
"name": "ArchLinux",
"arch": "x86_64",
"templates": [
{
"base": "ArchLinux",
"iso_checksum": "sha1:3700a16d4fcabbd29e9a7fbc97da732c4577dc2a",
"iso_url": "https://mirrors.edge.kernel.org/archlinux/iso/latest/archlinux-2022.05.01-x86_64.iso",
"mirrorlist": [
"https://mirrors.edge.kernel.org/archlinux/$repo/os/$arch"
],
"root_password": "root",
"storage_size": "4Gb",
"provisioners": [
{
"type": "ansible",
"playbook": "ansible.yml"
}
]
}
]
}
Since the above isn't fully implemented yet, there's still time to pivot onto a slightly better path if there is one.
The main bottleneck here is finishing the config format which is a critical component that everything else depends. It's user-facing, so it should be both intuitive and stable.
Some required features:
MirrorlistProvisionerfor certain Linux distributions, for example)This format is what I was working towards previously, but I think there's still room for improvement:
{ "name": "ArchLinux", "arch": "x86_64", "templates": [ { "base": "ArchLinux", "iso_checksum": "sha1:3700a16d4fcabbd29e9a7fbc97da732c4577dc2a", "iso_url": "https://mirrors.edge.kernel.org/archlinux/iso/latest/archlinux-2022.05.01-x86_64.iso", "mirrorlist": [ "https://mirrors.edge.kernel.org/archlinux/$repo/os/$arch" ], "root_password": "root", "storage_size": "4Gb", "provisioners": [ { "type": "ansible", "playbook": "ansible.yml" } ] } ] }Since the above isn't fully implemented yet, there's still time to pivot onto a slightly better path if there is one.