Hi! Thanks a bunch for reading through this. :-) Ludovic Courtès writes: > Hello! > > Marius Bakke skribis: > >> * gnu/services/virtualization.scm (, >> , , >> , , >> , ), >> , , >> , , , >> , ): New record types. >> (%default-ganeti-environment-variables, ganeti-noded-service, >> ganeti-noded-service-type, ganeti-confd-service, ganeti-confd-service-type, >> ganeti-wconfd-service, ganeti-wconfd-service-type, ganeti-luxid-service, >> ganeti-luxid-service-type, ganeti-rapi-service, ganeti-rapi-service-type, >> ganeti-kvmd-service, ganeti-kvmd-service-type, ganeti-mond-service, >> ganeti-mond-service-type, ganeti-metad-service, ganeti-metad-service-type, >> ganeti-watcher-command, ganeti-watcher-jobs, ganeti-watcher-service-type, >> ganeti-cleaner-jobs, ganeti-cleaner-service-type, ganeti-activation, >> ganeti-shepherd-services, ganeti-mcron-jobs, ganeti-service-type, >> hooks->directory, debootstrap-configuration-compiler, debootstrap-variant, >> ganeti-os-variant->configuration, ganeti-os->directory, ganeti-directory, >> file-storage-file, ganeti-etc-service, ganeti-service-type): New variables. >> * gnu/tests/virtualization.scm (%debootstrap-hooks, %ganeti-os, >> run-ganeti-test, %test-ganeti-kvm, %test-ganeti-lxc): New variables. >> * doc/guix.texi (Virtualization Services): Document accordingly. > > Since it’s a big chunk, perhaps it could live in (gnu services ganeti)? I was "on the fence" about this myself, so I'm happy that you tipped me over so to speak. >> +Ganeti is a cluster-based virtual machine management system. It consists > ^ > Maybe add one more sentence to give an idea of what it does or what > features it provides. That makes sense. I explained more in the transient blog post, but the permanent documentation deserves better treatment. >> +of multiple services which are described later in this section. In addition >> +to the Ganeti service, you will need the OpenSSH service >> +(@pxref{Networking Services, @code{openssh-service-type}}), and update the >> +@file{/etc/hosts} file (@pxref{operating-system Reference, @code{hosts-file}}) >> +with the cluster name and address (or use a DNS server). Here is an example >> +configuration for a Ganeti cluster node: > ^ > Add “that does X and Y”, or “with X nodes running Y”, something like > that. :-) Thanks. :-) >> +There is also a >> +@url{https://guix.gnu.org/blog/2020/ganeti-cluster-on-guix/,blog post} >> +describing how to configure a small cluster. > > It’d be great to see if part of the examples in the post (which I > haven’t read yet) can be folded in the manual. Agreed. I kind of wrote them together, before the service was "finalized", and focused mostly on the end-to-end tutorial. I'll try to extract generic parts into the manual. >> +@table @asis >> +@item @code{ganeti} (default: @code{ganeti}) >> +The @code{ganeti} package to use. It will be installed to the system profile >> +and make @command{gnt-cluster}, @command{gnt-instance}, etc available. Note >> +that the value specified here does not affect the other services as each refer >> +to a specific @code{ganeti} package (see below). >> + >> +@item @code{noded-configuration} (default: @code{(ganeti-noded-configuration)}) >> +@item @code{confd-configuration} (default: @code{(ganeti-confd-configuration)}) >> +@item @code{wconfd-configuration} (default: @code{(ganeti-wconfd-configuration)}) >> +@item @code{luxid-configuration} (default: @code{(ganeti-luxid-configuration)}) >> +@item @code{rapi-configuration} (default: @code{(ganeti-rapi-configuration)}) >> +@item @code{kvmd-configuration} (default: @code{(ganeti-kvmd-configuration)}) >> +@item @code{mond-configuration} (default: @code{(ganeti-mond-configuration)}) >> +@item @code{watcher-configuration} (default: @code{(ganeti-watcher-configuration)}) >> +@item @code{cleaner-configuration} (default: @code{(ganeti-cleaner-configuration)}) > > You need @itemx for all but the first one. Ahh, that's much better, thanks again! > Anyway, that looks very nice! :-)