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
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions