We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

OpenBSD: add VMM to 'packer' (porting Go software)

00:00

Formale Metadaten

Titel
OpenBSD: add VMM to 'packer' (porting Go software)
Untertitel
The red pill taken to develop a Go "plugin" for packer.io to be able to create VM images on OpenBSD for VMM and many other virtualizers
Serientitel
Anzahl der Teile
34
Autor
Lizenz
CC-Namensnennung 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
The sysadmin view of virtualization usually starts at a hypervisor running some kind of "image". Packer is a framework to create such an image using various host and virtualized operating systems and adding some more bolts. This talk shows the efforts and pitfalls of building a plugin for packer using the VMM framework on OpenBSD. Some details go down the rabbit hole (or reducing it) to provide a Go binary runnable as a plugin. For ease of installation, the ways how to package this as an OpenBSD 'port' are shown. On top a bigger picture is provided on how to provide configurable OpenBSD images "at scale" by using the above accomplishments.
DokumentenverwaltungssystemSpezialrechnerPhysikalisches SystemStetige FunktionStochastische AbhängigkeitDienst <Informatik>GruppoidMigration <Informatik>SkalierbarkeitPunktwolkeComputersicherheitServerMarketinginformationssystemStellenringFormation <Mathematik>Physikalisches SystemTermInternetworkingInstallation <Informatik>PunktwolkeDomain <Netzwerk>MultiplikationsoperatorApp <Programm>Computeranimation
DokumentenverwaltungssystemSpezialrechnerPhysikalisches SystemStochastische AbhängigkeitDienst <Informatik>Migration <Informatik>PunktwolkeStetige FunktionComputersicherheitGruppoidSoftwareentwicklerArchitektur <Informatik>ServerSystemplattformSkalierbarkeitMaßstabExogene VariableOSS <Rechnernetz>Lokales MinimumWurm <Informatik>StrebeVirtuelle MaschineQuellcodeNichtunterscheidbarkeitOperations ResearchDatenverwaltungKonfigurationsraumInstallation <Informatik>SurjektivitätPlug inVariableStreaming <Kommunikationstechnik>EinsBruchrechnungPhysikalisches SystemBootenSoftwareschwachstelleVirtualisierungComputeranimation
DokumentenverwaltungssystemSpezialrechnerPhysikalisches SystemStetige FunktionStochastische AbhängigkeitDienst <Informatik>GruppoidMigration <Informatik>SkalierbarkeitPunktwolkeComputersicherheitMaßstabSoftwareentwicklerArchitektur <Informatik>ServerSystemplattformVirtuelle MaschineQuellcodeOperations ResearchDatenverwaltungKonfigurationsraumSoftwareInstallation <Informatik>SurjektivitätBinärdatenVariableGammafunktionVerschlingungVirtuelle RealitätROM <Informatik>Textur-MappingMini-DiscDämon <Informatik>TemplateGebäude <Mathematik>BefehlsprozessorTaskCodeVerband <Mathematik>Spannweite <Stochastik>Nabel <Mathematik>SkriptspracheBildschirmmaskeWeb-SeiteDefaultKeller <Informatik>HypercubeEmulationOffene MengeOrakel <Informatik>Leistung <Physik>Elektronische PublikationAuswahlaxiomEinfügungsdämpfungBildgebendes VerfahrenCodeDatenverwaltungMathematikRechenzentrumSoftwareTypentheorieGebäude <Mathematik>VariableTaskBitHyperbelverfahrenLeistung <Physik>MereologieMomentenproblemPhysikalisches SystemSpeicherabzugFastringKonfigurationsraumVersionsverwaltungGüte der AnpassungZusammenhängender GraphNabel <Mathematik>Notebook-ComputerQuaderWeb-SeiteThreadVirtuelle RealitätMetadatenMailing-ListeSkriptspracheFramework <Informatik>Elektronische PublikationBootenDifferenteMini-DiscWechselseitige InformationPlug inZweiProgram SlicingVirtualisierungLie-GruppeOrdnung <Mathematik>Selbst organisierendes SystemKoalitionPhysikalischer EffektGesetz <Physik>GeradeGruppenoperationStellenringZahlenbereichMatchingParametersystemWurzel <Mathematik>Formation <Mathematik>GradientQuellcodeVorzeichen <Mathematik>SicherungskopieSichtenkonzeptStreaming <Kommunikationstechnik>Endliche ModelltheorieARM <Computerarchitektur>SchlussregelOntologie <Wissensverarbeitung>ComputeranimationXML
Virtuelle RealitätPunktwolkeDefaultCoprozessorKeller <Informatik>HypercubeEmulationMaßstabOffene MengeOrakel <Informatik>BinärdatenLeistung <Physik>Nabel <Mathematik>Elektronische PublikationDokumentenverwaltungssystemSpieltheorieGravitationsgesetzRechnernetzKonfigurationsraumVirtuelle MaschineROM <Informatik>BefehlsprozessorTextur-MappingMini-DiscDämon <Informatik>Plug inInterface <Schaltung>AggregatzustandZeitbereichTexteditorVerzeichnisdienstMinkowski-MetrikServerATMWeb-SeiteTemplateInformationAdressraumRechter WinkelSerielle SchnittstelleSpielkonsoleFunktion <Mathematik>Treiber <Programm>MaschinenschreibenMathematikSpieltheorieGesetz <Physik>Klon <Mathematik>ForcingGeradeGruppenoperationMereologieZeitzoneFamilie <Mathematik>Automatische HandlungsplanungPunktTonnelierter RaumInformationsspeicherungWort <Informatik>KreisflächeService providerEinfügungsdämpfungVollständiger VerbandGraphfärbungPlastikkarteKanalkapazitätBestimmtheitsmaßARM <Computerarchitektur>SchlussregelRechter WinkelOntologie <Wissensverarbeitung>EinsCodeSoftwareDeskriptive StatistikHackerTypentheorieBandmatrixTaskBitPhysikalisches SystemSpeicherabzugTermVirtuelle MaschineVerschlingungKonfigurationsraumServerCASE <Informatik>VerzeichnisdienstZusammenhängender GraphNabel <Mathematik>SchnittmengeInteraktives FernsehenElektronische PublikationWeb SiteMini-DiscWeb logPlug inSchreiben <Datenverarbeitung>Message-PassingMinkowski-MetrikGamecontrollerComputeranimation
Web-SeiteKonfigurationsraumTemplateMini-DiscInformationAdressraumRechter WinkelSerielle SchnittstelleSpielkonsoleInterface <Schaltung>Funktion <Mathematik>Treiber <Programm>DokumentenverwaltungssystemVerzeichnisdienstKonfiguration <Informatik>ROM <Informatik>FehlermeldungKernel <Informatik>Einfach zusammenhängender RaumURLPlug inGammafunktionInstallation <Informatik>Demo <Programm>SpieltheorieCodeDatenstrukturInformationOrdnung <Mathematik>SoftwareDeskriptive StatistikFunktion <Mathematik>HalbleiterspeicherTypentheorieGebäude <Mathematik>VariableBitFunktionalMereologieTermVirtuelle MaschineZusammengesetzte VerteilungKonfigurationsraumServerInternetworkingCoprozessorAusnahmebehandlungVerzeichnisdienstFehlermeldungAdditionRepository <Informatik>StrömungsrichtungQuaderNetzadresseInformationsspeicherungWeb-SeiteInstallation <Informatik>AuswahlverfahrenAdressraumSchnelltasteQuellcodeElektronische PublikationBootenPlug inDemo <Programm>Lie-GruppeRelativitätstheorieSpieltheorieGesetz <Physik>GruppenoperationVertauschungsrelationZahlenbereichZentrische StreckungQuick-SortFlächeninhaltWasserdampftafelProzess <Informatik>VererbungshierarchieRichtungFokalpunktSpielkonsoleOpen SourceSichtenkonzeptNP-hartes ProblemSchlüsselverwaltungTouchscreenARM <Computerarchitektur>SchlussregelWurm <Informatik>Ontologie <Wissensverarbeitung>XML
SichtenkonzeptDokumentenverwaltungssystemChi-Quadrat-VerteilungBenutzerfreundlichkeitInformationRationale ZahlSpieltheorieIntegralTaskPhysikalischer EffektArithmetisches MittelAuswahlaxiomLeistung <Physik>MereologieMomentenproblemPhysikalische TheorieSystemaufrufProzess <Informatik>FehlermeldungInformationsspeicherungGraphfärbungQuellcodeMixed RealityART-NetzStreaming <Kommunikationstechnik>ARM <Computerarchitektur>Dreiecksfreier GraphZweiEinsBildgebendes VerfahrenKreisprozessFunktion <Mathematik>TypentheorieTotal <Mathematik>FunktionalTreiber <Programm>Virtuelle MaschineSerielle SchnittstelleSampler <Musikinstrument>QuaderNegative ZahlSchnittmengeEin-AusgabeKernel <Informatik>Installation <Informatik>SkriptspracheSpielkonsoleMeterBootenPortal <Internet>Plug inVirtualisierungComputeranimation
Fibonacci-FolgeDokumentenverwaltungssystemSichtenkonzeptInformationGruppenoperationNichtlineares GleichungssystemRuhmasseWort <Informatik>KreisflächeFokalpunktEinsBildgebendes VerfahrenSoftwareOvalInternetworkingPunktInstallation <Informatik>SpielkonsoleElektronische PublikationBootenMini-DiscMultiplikationsoperatorDemo <Programm>Computeranimation
Installation <Informatik>Mini-DiscDemo <Programm>DokumentenverwaltungssystemDämpfungDesintegration <Mathematik>VariableRechnernetzSpieltheorieKlon <Mathematik>PunktwolkeBildgebendes VerfahrenDatensatzInformationComputerarchitekturRoboterSoftwareTopologieGebäude <Mathematik>MAPTaskMereologieMultiplikationProjektive EbeneTermTreiber <Programm>VisualisierungDatensichtgerätKonfigurationsraumServerAutomatische HandlungsplanungCoprozessorFehlermeldungTemplateQuaderDateiformatVerkehrsinformationElektronische PublikationPunktwolkeDifferenteMini-Discp-BlockMeta-TagComputerspielSelbst organisierendes SystemAggregatzustandGrundraumGruppenoperationLastSpeicherabzugSystemaufrufExogene VariableParametersystemPunktVererbungshierarchieAbstimmung <Frequenz>Wort <Informatik>Quelle <Physik>SoundverarbeitungSichtenkonzeptARM <Computerarchitektur>GamecontrollerComputeranimation
DokumentenverwaltungssystemInterrupt <Informatik>MultiplikationMini-DiscVerschlingungCoprozessorKlon <Mathematik>PunktwolkeDesintegration <Mathematik>BitProzess <Informatik>Lesen <Datenverarbeitung>QuellcodeARM <Computerarchitektur>Bildgebendes VerfahrenProgrammierumgebungFaserbündelBinärcodeDistributionenraumElektronische PublikationOpen SourceXML
GammafunktionDokumentenverwaltungssystemCodeRechenschieberInterrupt <Informatik>MultiplikationMini-DiscVerschlingungGruppenoperationSystemaufrufHierarchische StrukturQuellcodeEndliche ModelltheorieDifferenteARM <Computerarchitektur>MultiplikationsoperatorSchlussregelRechter WinkelOffice-PaketSoftwareentwicklerCodeSoftwareHackerProgrammierumgebungMultiplikationPaarvergleichTreiber <Programm>Nabel <Mathematik>SkriptspracheBootenMini-DiscQR-CodeXML
DokumentenverwaltungssystemRationale ZahlKonfiguration <Informatik>GruppenoperationSystemaufrufRechenschieberAbgeschlossene Menge
DokumentenverwaltungssystemSpezialrechnerInstallation <Informatik>Wurzel <Mathematik>Mini-DiscDemo <Programm>Konfiguration <Informatik>Treiber <Programm>ROM <Informatik>FehlermeldungKernel <Informatik>SpielkonsoleURLSichtenkonzeptAutomatische HandlungsplanungInstallation <Informatik>BootenFahne <Mathematik>XMLComputeranimation
Installation <Informatik>Mini-DiscDemo <Programm>DokumentenverwaltungssystemWurzel <Mathematik>VariableRechnernetzVerschlingungSystemaufrufRückkopplungXMLComputeranimation
Transkript: Englisch(automatisch erzeugt)
Okay. Welcome to my talk. I'm Philip. I'm a Unix nerd for roughly 25 or so years now. For three or four years, I was obviously developed by the domain of the app as well, but time was always an issue. In 2000, I co-founded Syspark, and created the
domain prints before the term cloud internet system. My domain these days is especially unattended for my domain installing, calling anything or any problem, especially in terms of physical systems installations may not work. But also, of course, in the VM that
we have, this is still pretty disabled.
So, the main thing that I'll virtualize is how to get a bootable system image, or very weak means, like for example, Amazon streaming, blockwise, and their EBS systems that are created. So, these kind of denominators probably just wrote these files, and we
will just pick up the boot sector and bring the whole stuff up.
What I, technically, especially, is I want to have infrastructure to grow, as I name it, which means all the stuff we are doing physically in the data center or whatever I want to have on my laptop itself, to simulate all the provisioning process,
and that should even work if I'm sitting in a plane or in a data center with a good parabellum cage style of protection. And that helps me to have reproducible provisioning scripting and all that. And for that reason, I need to have a tool that can do that
on different host systems, like, I don't know what's left up here, but the target system might be Xamarin KVM, or in our case, VMM now, and along with virtualizer changes as well, on my laptop it's VirtualBox, and VMM now, or just AMI much more.
So, to be chosen is Packer. My Packer is for the next slide, but when I was looking
for installation solutions or whatever, I found that more or less everybody is writing his own installing framework shell scripts or whatever, or they use something from GitHub or other stuff from the internet, the famous code something shell script I
call Batch, which is, well, I don't need to tell you, or you really have a provisioning guide, and when that one is on holidays or so, all your images are available. So, I ended up with Packer, and it was last year's year we speak on an Ant-1
approach near about, hey, here's Packer, I know I'm using it, but it should also work on OST, which the Packer software itself already does, but it needs a bit
fiddling around to use VMM, and he asked me if I want to look into it, to have a really native support for VMM, and it was, who was last year here listening
to my background talk? Oh, I missed some. Same problem here, and I was thinking, oh, I was already tackling HashiCorp software, okay, more movie, just to find out that Packer's written Go, and I didn't know any Go, only you, but that was a nice
opportunity to learn Go with Slope, and he started to tackle it, and Packer itself has a really big advantage that you have a single configuration, the older image
building will be also in parallel, so you maybe want to create an AMI image, or a movie car engine, or a commercial box, all that, and it will run all those build parts in parallel, which gives a nice speed because your
uplink, for example, Amazon is very slow, and you're doing that serialized running around, so they might be over. It's not a conflict management or
provisioning tool by itself, it will just reach out if you want to, to add third-party software and all that, while, you know, inline shell scripting, or partnership as a building, whatever you, or type of a list on support at once,
on the next or second-next page. And then when we go down, the Packer Core itself is just an RPC server, so to say, and all the build, the other components are so-called plugins, and the core, the distributed Packer software is just one
binary, so obviously if you look at the P list of the package, it's just binary, it's an open-ended Packer, that simple.
And the configuration is basically one, or maybe a second JSON file with variables you could use in the JSON Packer app, or else. So it's a pretty easy setup for the Core component. Some terminology from Packer, so you have
this later on, for example, we'll show a box of VMM, so just draw a
business card, or UI, ID, and all that. Builds are exactly that running task to create those artifacts, and that's using the whole build log, which will interact with our case, maybe with our VMCTL and all that,
to create the artifact. And you have optional provisionals, like I already said, where you can just after the installation, the setup has finished, you can just run more package at all your shared recipe or
more threads and all that. And then there are post-processors which care to take those artifacts, like in the toolbox, the disk image in the metadata.json and power that up into a thoughtbox, slice away print, and can use it directly.
And text files are not VM templates, like in some other projects, but that's just JSON configuration, defining the builds, the provisionals, post-processors, and all that at the moment.
So I said there are a lot of builders, that's the full list, I just found out OpenNepula is missing for whatever reason, but like I did, you can just write your own plugin to support your
virtualizer issue, but the list is pretty complete, I think. Anyone having a virtualized environment that's not listed here? I don't think so. And write your own plugin,
you cannot relink it to the main single binary, but you have to put your single Go binary either in a on the directory packet of these plugins, or in the directory of your
packet binaries, so there would be a package here and there, it would land in the username. And for provisioning within a pattern, you can use that, so the big players are all in there,
and it will check off and solve, or just inline shell, or even if you have a bigger shell environment, to make your shell add a few zest here, depending on how your shell is spread, and when it is uploaded,
you can execute it. So on the optimistic side, probably most of you know those components for VMM, but I'm just hiring them here for to cover it all, especially in case
my build up plugin is interacting here with OpenVST components. So we make our own site VMD, our steering, even for VMs, and VMC to interact on here. Systems are with VMD, and hacker blogging
is more or less calling out to VMC TLC, and VMC TLC to create our intended VMs. VMConf would be for hacker configurations for that. In terms of the blogging, I have no use for that
right now, but it might come the other day. And then there's Nuance, because you can run the hacker itself, just your regular user, or maybe a build user, but for example VMD, you need to run this route, and so there is inline
handling of Nuance, but for some reasons, I cannot interact with the user TTY, so you type in your password, so you need no pass in Nuance.conf, persist
typically, time-outing too fast, it's only five minutes, complex installation or over no bandwidth line, then those five minutes won't do it, and you're also not
getting your own message at that point, I will figure it out here today, but just if you're writing it, have that in mind that your user into this code is no pass. Additional configuration
you will need. It's only if you need to reach out to the internet like you're doing an HTTP based install from your CDN or your own
local whatever, if you do a CD based installation which I will show in the demo, then you could skip that part. Right, so before worry details are coming up, any questions?
The last slide, settings that go on the host machine that you use? That's on the host machine, this network is what VM is providing
on the host side to have a network link into the VM, and those are unrooted, so you need to match them to whatever is usable, and that's just an oil in the main server. Of course you have to start with a vehicle, and that's probably the
plugin itself that can detect is there a VM running or not, and you'll fire it up if not something else. So to write a PECO plugin,
obviously you need Go. PECO itself is the main core component and Git, or if you want to work with my plugin, you need Git because it's on GitHub. If you're doing your own thing
with CS, Macrios, and all that, some survivors of that, of course, and the dependencies right now for this plugin is around 1.4 gigabytes, and you will, whatever you are doing,
you will need to have that disk space available as well. If you get my repo, you will get that directory layout, and that's the layout of most of the plugins as well. Some are, let's say, upside down.
When I have main Go in a subdirectory, or the main working Go files in the main directory, matter of taste, I would say. Whether you know, there's any special reason why they are doing it. In detail, I have a little main file, just to
keep things simple to install. So that's the narrative. VMD is just build me a VM with debugging output, go formatting. Wacking is about resolving
the dependency tree. The task is made on its own. Entry point for the plugin is main.go, and it will import, initialize, and register this server plugin with
the Packet Core, so it knows that there's something out there called Packet Builder of this DVMM, and if you trigger that by the configuration, then it will know, oh, I have to talk to that guy. And that's all going over Go RBC
controls. And then the server goes into, I call it demonized, so it's just sitting there waiting for the port to trigger, hey, please do something. And the work server has conflict.go,
which is more or less only the complete description of the configuration struct, where all your new configuration and some of your back configuration is defined and how it is accessible in terms of sub-structs
and which types and all that. And since that's a bit bigger, I have put that in the home file, but you could do it in many other drivers as well.
BillerGo will so-called driver, then read additional configuration, that's like gathering configuration, like what's the current setup of the machine.
And then the one part of the plugin will, I call it tokenizing all the build steps into so-called steps. So it's like I have to leave it on the next page. And when the build has finished, it will populate a data structure I
would use for a post processor, for example. So I know which artifacts are there and where are they and all that. Since all is paralysed, the post processor could be running five minutes later or something and that's more or less the
storage of configuration information. DriverGo is where the fun part is in terms of interacting with the actual virtualizer, like please create me a disk, start this VM, stop the VM, do whatever.
Currently, I have an unturned function in there, exactly to be able to reach out from that temporary VM into the internet or network in general. I need to know which IP address I have, so to say, on the outside,
the capital face of the host. And the code is just yet missing to pass IF config or whatever. Currently, it will just return 100.64.1.2 because it's always true or correct
for a VM with the ID 1. I was talking to some people, actually it should be possible even for VMctl as the official tool format, that I can
query a VMD in the kernel, hey what's the configuration? Because right now, the configuration in usernet can only be seen by IF config and not just tedious. It's ok for a human because you get a description line, which VM this belongs to. But from an automation perspective, that's
not ideal. And there are actual steps for doing that, depending on the configuration of the
output directory for the artifacts. And then just again, like VMctl to do what is it, create or create a PhD? Create the disk in either raw or qcal2. And then run up
the VM. Again, based on the configuration, you will see that on how much memory, which kernel, will it be slash bsdrd or somewhere else. And right now I have a bit of a problem between the debugging,
error handling and actually successful builds to deal with the VM hanging around or exiting too early or error exiting. That means a bit more error handling. So we might end up with a broken packet build and the VM is still
running. And then you have to shut down that first because otherwise the VM will get ID too. And then the network stuff, as I said, fixed return will not work anymore. So two fixes that should come up pretty soon and that's not a mixture
anymore. Boot command is the most interesting part, probably. Packer can be told while the build is running, please bring up an HTTP server and
this will bind to a more or less random port and I have to gather which port is that and pass it on to the actual boot command. We will see in the demo how that looks like and why this is really useful.
This built-in HTTP can run or shouldn't run on 480. So the current way auto install tries to retrieve install.conf can work. So you have to
more or less fix URL but the IP and the port is a variable you can use in the JSON file. I will have to look into it this way.
The first thing we need to do in order to address would be hostname install.conf or update.conf or MAC address and then the following. Here is that packer, the second command will more or less type in this information.
So this is needed in regards to an ISO based
installation with some configuration about how much memory and all that. And what I was just talking about is exactly that. So .hpip and port is a packer internal variable. My plugin has to
get values into it and then you just say which configuration file you want. And this configuration file will be looked for in this document or whatever you define it. So that's really a
local installation. It's not reaching out to whatever remote thing. So you can have all in one place. With an ISO based installation, the way the thing right now works is that it will call vmctl with a dash r. So that will be
attached to the VM as a CD0. And then you can just choose a set source with CD0 and what you know. I'm not so good with the demo box.
So online but also in the GitHub repo after asking a cast file so I can do that offline as well.
There's a rock with BMM. I don't know if it's really possible to get that type of fix because serial consoles are not meant to be to be connected twice.
So the stackbook command will attach to the serial console as a TTY. And if you are trying to debug your plugin or your auto-installer comp setup and you just
think oh well vmctl connect one, you will get a completely garbled output. And you cannot fix it. I was trying like speed settings and whatever. What's wrong? Because the garbling looks just like wrong speed settings. But Mike told me there's no way
you can do it. So I more or less capture the TTY input and output and then writing that into this. That's the name of your build and just a rock. That's why I'm painting this. Because the way
you ask a cinema I can come from a second calendar. Why this is just boring. So that's the call. Just pack the build with your JSON. And we create the image and then boot up the VM. And this is just the serial
console output as it starts. And here's the boot because I'm booting directly the bsd.rd. But it's attached at the very moment the VM is coming up. Exactly.
So it tries to do all those automatic fetching of the install.com but you cannot find it so it will fall back and ask you. And
the plugin is just typing in the URL and here is the dynamically generated port. And then just running down on the information that's in there. That's just a pretty good. Obviously auto install. One thing if you're wondering
it's not stored. The way this TTY catch so to say works is based on the live feed here. So you can see like
install base 6.5 on each set and then you have your progress meter. It will just sit here and you won't see before it has completely 100 percent. So that's just boring. But it's good enough for live on. Probably it's called unattended install
for a reason. Questions in the green while this is running?
I don't think that will work. When Packer connects to the serial port does Packer have enough intelligence to figure out the device name itself that it needs to connect to or is it using a helper script or what?
It's just if you're starting to be actually going to see you getting a direct account of that artist and just hooking up to them. I'm not going to the device anymore where I'm just grabbing the TTY as it comes.
Do you need to provide any hypervisor negatives to transfer the information and allow it to be used? Yes.
So what I was talking about the problem with our side is just asking B and D. It really depends on the virtualizer for example virtual box. You can have the box managed and you can dump it in the machine. Readable format, everything you know about that thing, but that's not here yet.
So congrats for boring installation with an online portal. Rebooting is actually misleading because the install, well it triggers a reboot and it will shut down the VM.
Well it tries to reboot by a power cycle but the VM has no clue of a power cycle. B and D wouldn't spin up the VM just again because
all the information around it like which kernel and so on is gone at that moment so it cannot respin. For now I'm just on the other side of the game I cannot scroll there. Right now it has a static timeout of 240 seconds and this one is a bit
easy, faster. So currently Packer is just sitting there for a total of 240 seconds and then it will continue.
No, it has to be done. Now we are here for a second.
I just have to add some driver function which will just pull VMctl and the moment the VM is gone I can just go on instead of a timeout. So I won't configure a timeout but I will just pull the MCTL, when the VM is gone I can put it in here and we are good.
Gotcha. So with this I have an artifact where I'm already analyzing the images. Now just proving the point, just
with the network and the local sub and the connected console and this image file and now you can see it's just holding up that very nicely.
So you see obviously first time that it's really a fresh boot after install.
So you're not losing that possibility for chicken egg problems. I can log in with the user information from the JSON file, actually from the install point.
Well it works, it has internet and that's about the demo. Other questions? Everybody, raise your voice. This is great. I could say
I want to find the end to spit out. So is it possible to say don't spit out one VM and spit out five? You wouldn't want Packerware, you wouldn't pass them up locally and keep them running.
You want Packer to grab the disk image and then apply the VM manually with it. Ok, so this is only to create the image once you create the image. If you want five different images, for example with different InstaCon settings, you are just repeating that with different names and different configurations and then
it will rush out and drive five in Python. Just not yet because of the networking thing but by design of Packer, yes, it will do that. If you need five running VMs from the same image, then copy it around of course. Actually that's a task for
the post processor to grab that image in the visual box at meta.json and whatever and then
multiple of those for example. So the possibilities are way great here with Packer. What kind of status of the approach
are on the VM side? Everything is fine besides that thing about I would like to have VMD reporting that configuration stuff but well that's not punishing maybe. The planning itself is from the steps and the architecture are more
or less complete and I have all the part about creating a disk with all the infrastructure let's say the packability map server to provide the Insta.Con for download. But there is stuff to do, to fix
the one thing is get the 10 IP address, is your putting request ready? Ok, but what was ready just for lunch is QCOW2 support. So in the JSON report it was this format is wrong, but
since two hours or something takes to check, you can use QCOW2 as well. And that's what I was just saying about if they cannot observe the VM, if it's gone, the whole thing has finished and then just advance because the timeout would be bad
always, like faster disk, slower disk, faster network or I'm just adding a package at what has an insane dependency tree for a server at least maybe technical and that's pulling in
so many other packages and suddenly your timeout is bad again Observe it and proceed with the following tasks and just afterwards. I was talking about that, so if the entity isn't running, a packer will just fail around
and you will not really know why, and I want to have some checks for it at least amidst a warning at VMD missing, that is an error, it will error out anyway, but if your path doesn't have those natural rules, that could be still intentional.
Making a package, that should be more as a no-brainer for any seasoned package builder or bot offer. I want to have more information I can get from the driver to be used in either
our install prompt or in the JSON file. One feature of the install is you can use a display template or a different display layout of the amount points, although that's completely missing and not needed for let's say
simple VMs, just on top of that is multiple disks, and I'm going to think about having more than one NIC in the VM and configure that and all that and whatever is coming up, for example, a VMD
can become a possibility. And then for next year, taking all those building blocks and information, how to make this something like a puppet lot at your fingertips,
I need to finish my reference project in terms of creating a record binary, which is still between a mystery and a disaster. Discretizing, maybe it would not even happen, because GrowFS
isn't a problem, but we're calculating displayable offsets is painful and if you get it wrong, the thing is so corrupt you cannot repair anything. And also no cores or something, or maybe not
cloud in it and contacts that if you spin up the VMs in a bigger cloud environment, where you have further auto-configuration of the VM before it is completely coming up. So that's Outlook next year, whatever.
Audience question. Is the question just making the package or is the question making the package know about VMs because it knows about other providers? Just look at my talk from last year.
So the whole background on OpenVST using VMM is all finished. The problem is I'm still using it with bundle exec, it's Ruby code, but having this background
Ruby, what happened? You run into a binary that's doing that what you get when you just, for example, on Linux you install a binary that's doing the right thing and the process from your Ruby built environment to
creating a binary distribution isn't open source. It's holding hands on that for reasons I'm not going into. There are several approaches that are dealing with that problem, but like I said, it's a disaster and all that.
So this one had to come up first because having images ready was a bit more important than that background as a package and as a binary distribution.
How does this compare to using VMD and creating a file that could be a device and then using that and unpacking the tiles into it? Just small things, what can you do more stuff with it? I have missed one thing here.
No, it's exactly here. We have been trying and playing around with booting the VM with a PC-enabled virus, C virus,
but that's always broken in different ways. My liking is getting mad over it in the meantime. How about if we could use or change the install script itself that
I can say, hey, you have been booted from disk, but please assume it was a net boot and then it will start our comparison will go to DHCPd, try to download the software and all that. This was where this
is coming from. And yes, Packer is one way and you can do it a lot of different other ways. And if you don't need that feature or possibilities about
parallelized running and all good. A lot of people know Packer, but they don't know your script environment or whatever. Sure, you don't need that. The development of this thing had some outcome that will help other people who are running
shell scripts. So let's bring the code and slides up here. I started effectively at Hack for Claros where I'm moving to Veeam. Again, finishing up that stuff that's just perfect to have a weekend, another Hack for a weekend to
publish the rough edges I have right now, especially the networking thing. Do you say Rubenod or Brabenod? He was adding the module handling because I didn't know that so far.
Isensnash and Hugo support some more funky little things. And of course if someone else wants to work on for example multi disk or disk driver support, more than welcome. Any more questions?
This QR code is just that URL and I'm here tonight at the closing session of course in the auction. Please everybody come in. Give me money for the charity.
And I have a slide about Ghost but maybe not.
Questions? Let me go back to just
before this flag was added, if you start from slash bsd rd it will not even consider
automatic install. If you call it with minus capital B net, then it will exactly insert this part.
It's failing and then the installer will notice oh, there was a bitsy boot so I met boot. No more questions? Who thinks that this is cool?
Thank you.
By the way, don't forget about the handlebar feedback stuff on the bsd-handrops side. Thank you very much.