Re: Dynamic hostname in rc.conf (for bhyve VMs)
- In reply to: Tomoaki AOKI : "Re: Dynamic hostname in rc.conf (for bhyve VMs)"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 17 Sep 2022 16:35:26 UTC
On 10/09/22 19:22, Tomoaki AOKI wrote: > On Sat, 10 Sep 2022 10:52:01 +0200 > Guido Falsi <mad@madpilot.net> wrote: > >> Hi, >> >> Since rc.conf is just a shell script I'd like to be able to set hostname >> dynamically. >> >> This is bhyve related because what I'd like to do is pass an hostname to >> VMs via the -e option to bhyveload(8), and then read it in rc.conf, >> maybe via sysctl to set the hostname accordingly. >> >> By the way I'm using vm-bhyve [1] to manage my VMs. its configuration >> files are also shell scripts, so I was planning to hack some simple >> logic there, host side, to derive the hostname from filesystem (useful >> for cloned VMs). >> >> Could not find any example or documentation about any step of this. >> >> Is this even possible with current tools? I'm open to hacky solutions to >> start with, then maybe refine them. >> >> >> I'm trying to do this because I'm using a local dnsmasq that exposes DNS >> with the hostnames provided by VMs, but clones get the same naem as the >> machien they're cloned from and mask those in this small internal DNS. >> If each clone could provide it's different name it would be much better. >> >> >> Thanks in advance for any help/suggestions. >> >> >> [1] https://github.com/churchers/vm-bhyve >> >> -- >> Guido Falsi <mad@madpilot.net> >> > > IIUC, and if you obtain IP addresses of each VMs via DHCP, > just keeping hostname on rc.conf would be suffice. > > /etc/rc.d/hostname has a functionality to get hostname by > hostname=`/bin/kenv dhcp.host-name`, meaning hostname is set using > what DHCP server supplied, if NOT in a jail. > > See the script for details. > Hi! Sorry for the delay in replying. Thanks for your suggestion of using kenv, I completely overlooked that! It was the missing piece for me. In fact my basic idea almost works perfectly once I use kenv to read variables passed by bhyveload. Only problem is that the vm configuration file used bu vm-bhyve is not a shell script but treated as a key pair. So i can't do logic in there. I ended up creating a very simple local patch to vm-bhyve here that does what I need: https://github.com/madpilot78/vm-bhyve/tree/bhyveload_pass_vm_hostname I think I will propose the patch upstream too, maybe with some cleanup. So thanks again! -- Guido Falsi <mad@madpilot.net>