Skip to content

Finalize configuration format #104

@cilki

Description

@cilki

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.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions