Subject: Re: [bug#42261] [PATCH 4/4] services: Add ganeti.

From: Marius Bakke <[email-masked]>
Date: Sat, 11 Jul 2020 23:54:29 +0200

Hi!

Thanks a bunch for reading through this.  :-)

Ludovic Courtès <[email-masked]> writes:

> Hello!
>
> Marius Bakke <[email-masked]> skribis:
>
>> * gnu/services/virtualization.scm (<ganeti-noded-configuration>,
>> <ganeti-confd-configuration>, <ganeti-wconfd-configuration>,
>> <ganeti-luxid-configuration>, <ganeti-rapi-configuration>,
>> <ganeti-kvmd-configuration>, <ganeti-mond-configuration>),
>> <ganeti-metad-configuration>, <ganeti-watcher-configuration>,
>> <ganeti-cleaner-configuration>, <ganeti-configuration>, <ganeti-os>,
>> <ganeti-os-variant>, <debootstrap-configuration>): 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!

:-)