From: ludo@gnu.org (Ludovic Courtès)
To: David Thompson <dthompson2@worcester.edu>
Cc: guix-devel@gnu.org
Subject: Re: Guix "ops"
Date: Fri, 01 May 2015 16:48:57 +0200 [thread overview]
Message-ID: <87mw1obbfq.fsf@gnu.org> (raw)
In-Reply-To: <87fv7h5zhk.fsf@fsf.org> (David Thompson's message of "Thu, 30 Apr 2015 12:53:43 -0400")
David Thompson <dthompson2@worcester.edu> skribis:
> Ludovic Courtès <ludo@gnu.org> writes:
>
>> David Thompson <dthompson2@worcester.edu> skribis:
>>
>>> * The 'nixops' command is stateful. It stores necessary state about
>>> deployed systems in a special directory ($HOME/.nixops by default),
>>> such as the IP addresses of the deployed systems. Because of this,
>>> each deployment needs a unique identifier.
>>
>> Oh, I remember “charon create” creating this ‘network.json’ file
>> containing the list of machines and the file names of the Nix expression
>> used to create that deployment.
>>
>> I’m not 100% clear on why this state needs to be stored; it seems more
>> like a cache to me, no? That is, Charon/NixOps can always recreate it
>> from the source Nix expressions.
>
> The state that I am concerned with are the details of the resources that
> have been provisioned by 'guix ops'. For example, in a system that
> provisions VMs on behalf of the user, the IP address of the machine
> isn't known until the provisioning has happened. This detail needs to
> be saved so that 'guix ops' knows how to perform future operations on
> the machine.
Hmm, I see.
> Caching the file names of the expressions with a unique key seems hacky
> to me, and I don't want to copy that without good reason.
I agree. There must be a way to at least to a one-way mapping from the
<machine> object to the corresponding key in the cache.
>>> * <machine>: Describes a single system in the deployment. Contains a
>>> name string, an <operating-system>, and a <platform>.
>>
>> Yes (it’s best to keep it separate from <operating-system>; in NixOps
>> it’s a ‘deployment’ attribute in the OS attribute set.)
>
> Yes, though I do have a question here. Some platforms don't do anything
> with a bootloader, or in the case of containers (looking towards the
> future here) the 'kernel' field will be benign as the system shares the
> kernel of its host. I'm not sure how to deal with this extraneous
> information. In the case of the 'bootloader', it currently must be
> specified, so the user would have to input bootloader details that are
> irrelevant. Thoughts?
What about simply ignoring them? ‘guix system vm’ ignores the
bootloader, for instance, unless it is passed --full-boot.
> So far, I have created the barebones 'guix ops' subcommand and defined
> the new data types. One can run 'guix ops build deployment.scm' to
> build all of the machines in a deployment, but no other subcommands have
> been implemented. For the prototype, I envision 'guix ops deploy
> local-vm-deployment.scm' to work much like 'guix system vm system.scm',
> except that it builds and boots multiple VMs.
Sounds good to me.
The thing that needs more thought is how to handle things like
networking. I guess the tool would need to automatically add, say, a
‘dhcp-client-service’ to each <operating-system> object, and to remove
existing services that provide ‘networking’, and probably fiddle with
other parameters such as the initrd and file systems. (Similar to what
‘virtualized-operating-system’ does in (gnu system vm).)
In effect, one would not be deploying the exact OS that is specified,
but rather a variant automatically customized for the deployment target.
So probably each <deployment> object must specified an
<operating-system> -> <operating-system> procedure that does this
transformation.
WDYT?
BTW, I’d prefer something like ‘guix deploy’ over ‘guix ops’, but then
another name would need to be found for the ‘deploy’ sub-command, maybe
‘realize’?
Thanks,
Ludo’.
next prev parent reply other threads:[~2015-05-01 14:49 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-04-27 23:38 Guix "ops" David Thompson
2015-04-30 15:25 ` Ludovic Courtès
2015-04-30 16:53 ` David Thompson
2015-05-01 14:48 ` Ludovic Courtès [this message]
2015-05-04 23:51 ` Carlos Sosa
2015-05-05 2:00 ` David Thompson
2015-05-05 7:57 ` Ludovic Courtès
2015-05-07 3:02 ` Christopher Allan Webber
2015-05-22 14:59 ` David Thompson
2015-05-22 16:06 ` Ludovic Courtès
2015-05-22 16:24 ` David Thompson
2015-05-27 18:47 ` Carlos Sosa
2015-05-28 16:10 ` Thompson, David
2015-05-27 19:41 ` Ludovic Courtès
2015-05-28 16:13 ` Thompson, David
2015-07-09 18:27 ` OpenStack and GuixOps (was: Re: Guix "ops") Christopher Allan Webber
2015-07-10 2:18 ` Ian Denhardt
2015-07-10 17:24 ` OpenStack and GuixOps Ludovic Courtès
2015-06-01 15:18 ` Guix "ops" Pjotr Prins
2015-06-01 16:49 ` Thompson, David
2015-06-01 19:35 ` Guix deploy (and replace Puppet/Chef) Pjotr Prins
2015-07-10 16:37 ` Guix "ops" Christopher Allan Webber
2016-10-16 23:36 ` Christopher Allan Webber
2016-10-17 14:51 ` Ludovic Courtès
2016-10-19 21:10 ` Christopher Allan Webber
2016-10-20 13:29 ` Ludovic Courtès
2016-10-20 17:01 ` Christopher Allan Webber
2016-10-20 19:41 ` Ludovic Courtès
2019-02-11 13:31 ` It's time to build "guix deploy" Christopher Lemmer Webber
2019-02-11 14:02 ` Pjotr Prins
2019-02-11 14:47 ` Christopher Lemmer Webber
2019-02-11 18:11 ` Amirouche Boubekki
2019-02-11 14:57 ` Christopher Lemmer Webber
2019-02-11 15:25 ` Pjotr Prins
2019-02-11 16:58 ` Thompson, David
2019-02-11 20:49 ` Ricardo Wurmus
2019-02-13 19:04 ` Giovanni Biscuolo
2019-02-14 7:14 ` swedebugia
2019-02-14 8:17 ` Pjotr Prins
2019-02-14 15:35 ` Giovanni Biscuolo
2019-02-14 16:55 ` Pjotr Prins
2019-02-14 14:17 ` Giovanni Biscuolo
2019-02-17 8:41 ` swedebugia
2019-02-17 15:42 ` Giovanni Biscuolo
2019-02-12 13:34 ` Christopher Lemmer Webber
2019-02-12 14:53 ` Thompson, David
2019-03-09 23:29 ` building " Thompson, David
2019-03-10 17:42 ` Ludovic Courtès
2019-03-11 14:41 ` Christopher Lemmer Webber
2019-03-12 13:08 ` Ludovic Courtès
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87mw1obbfq.fsf@gnu.org \
--to=ludo@gnu.org \
--cc=dthompson2@worcester.edu \
--cc=guix-devel@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.