[!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