[!DANGER] Alpha releases.
Although Virshle is stable enough to be the engine propelling Crocuda_vps, You shouldn't use it in production as you may encounter unnoticed breaking changes.
Virshle is a single cli to manage multiple virtual machines.
It works on top of:
- cloud-hypervisor and linux-kvm for machines virtualization,
- pipelight-init for fast vm provisioning on boot,
- openvswitch for network configuration.
Enable the module by adding the repository url to your flake input.
# flake.nix inputs = { virshle = { url = "github:pipelight/virshle"; }; };
Add the module to your host configuration.
nixosConfiguration = { default = pkgs.lib.nixosSystem { modules = [ inputs.virshle.nixosModules.default ]; }; }
Enable the service.
# default.nix services.virshle = { enable = true; logLevel = "info"; # error | warn | info | debug | trace user = "anon"; # The user to run the node as (default to root). };
In the vein of NixOs, you get a declarative/reproducible approach of VM creation.
A single template can spin up multiple identical VMs.
Define custom VM templates...
# /etc/virshle/config.toml ######################### ## Templates: # Vm standard sizes with decents presets. [[template.vm]] name = "xxs" vcpu = 1 vram = "1GiB" [[template.vm.disk]] name = "os" path = "/var/lib/virshle/cache/nixos.xxs.efi.img" [[template.vm.net]] name = "main" [template.vm.net.type.tap]
...add some user defined data...
# ./user-data.toml ######################### # Conventional user-data added to the VM. [[user]] name = "anon" [user.ssh] # Key is appended at /etc/ssh/authorized_keys.d/<user.name> authorized_keys = ["ssh-ed25519 AAAAC3N..."]
...and twist multiple copy of a VM.
v vm create --template xxs --user-data ~./user-data.tomlCheck out the docs directory or on the documentation website at
virshle.crocuda.com.
Set the CARGO_TEST_TRACING_LEVEL environment variable
to run tests and print pretty logs when needed.
CARGO_TEST_TRACING_LEVEL='error' cargo test