Re: Re: Dynamic config for apps - download file(s) on boot, or mounting a network filesystem ?

  • From: lemonnierk@xxxxxxxxx
  • To: rumpkernel-users@xxxxxxxxxxxxx
  • Date: Sun, 15 Apr 2018 14:14:09 +0100

Sorry for the double mail, but it looks like I forgot to cc the mailing
list.

On Sat, Apr 14, 2018 at 11:09:53PM +0000, Antti Kantee wrote:

On 14/04/18 17:37, lemonnierk@xxxxxxxxx wrote:> Generating a .conf is 
easy enough, but I don't really know how to feed
it to haproxy. By hand I'd generate an iso file and start the unikernel
with that mounted as /etc/haproxy, but that'd required developping
something ton run on the hypervisors to generate the iso, not ideal.

Have a look at cookfs.  You can use it to generate components, which 
when baked into an image, have their files mapped into memory.  You need 
to have separate images, and a toolchain, so it might not be what you 
what, though.


That would require building the whole image, including binary and
config, dynamically which seems even harder.

Is there some way to run something before the "main binary" that got
baked is started somehow ? I'd be great to be able to run something like
wget <url>/config?id=<XXX> for example. I suppose that requires
including two binaries

Yes, you can do that.  You have to write the config file by hand.  Be 
warned, that while "kernel" process state is separate, libc process 
state and userspace symbol is the same.  So, you can't run two 
arbitrarily complex programs, and essentially the only way to know if 
two programs are compatible is to test them.  The book describes 
multiple programs at least to some extent.


I'm reading
https://github.com/rumpkernel/rumprun/blob/master/doc/config.md
As I understand it, I'd need to have wget as my first program in the rc
key, and the runmode would be default to make sure wget runs first and
blocks haproxy during the download. Can there be problem with running
two binaries one after another like that ? I can imagine how running the
two at the same time (runmode &, or even |) would be a problem, but I
guess runmode default should just work, am I correct ?
That sounds exactly like what I need.

Any doc on how to multibake ? I understand how to configure it a
runtime, but "rumprun multibake" on google doesn't seem to give me
anymore than that, I don't know how to actually compile that. Or do I
just put two binaries on the bake command ?

I suppose what I've been wanting to do for years would work too :
mounting any kind of network filesystems, but as far as I know it's
still not possible ?

Rump kernels support at least nfs and smb, and you could probably figure 
out how to use those in Rumprun with reasonable effort.  With rumpctrl 
it would be even less effort, but that may or may not provide the amount 
of moving parts that you'd like.

As usual, there probably isn't precise documentation telling how to do 
exactly what you want to do.  So, you'll have to figure out a bunch of 
details by yourself.  If you're really feeling energetic, write the 
documentation too.  Good luck! ;)

Well that's pretty much what I was told last time, and I never figured
it out. As I understand it, NFS's kernel side isn't enough to get a
mount, you need something in userspace, and that part doesn't exist in
rumprun. I assume that's what rumpctrl "replaces", but I'm indeed not
sure that'd work for my use case (that means the unikernel can't run on
it's own anymore .. but maybe rumpctrl could be on the hypervisor, I'd
have to test that out I suppose)

Thanks for your answer !

-- 
PGP Fingerprint : 0x624E42C734DAC346

Other related posts:

  • » Re: Re: Dynamic config for apps - download file(s) on boot, or mounting a network filesystem ? - lemonnierk