VIRTUALBMC(1)

πŸ“¦ version 3.3.0, in ubuntu stonking

✨ VIRTUALBMC(1) ✨

okay so bestie, welcome to the virtualbmc page πŸ’– (it's in manual section 1, virtualbmc, version 3.3.0, and yes i'm about to make you obsessed with pretending your VMs are real servers)

πŸ’… NAME πŸ’…

virtualbmc β€” virtualbmc 3.3.0

The VirtualBMC tool simulates a Baseboard Management Controller <https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface#Baseboard_management_controller> (BMC) by exposing IPMI <https://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface> responder to the network and talking to libvirt <https://en.wikipedia.org/wiki/Libvirt> at the host vBMC is running at to manipulate virtual machines which pretend to be bare metal servers.

Contents:


πŸŽ€ INSTALLATION πŸŽ€

At the command line:

$ pip install virtualbmc

Or, if you have virtualenvwrapper installed:

$ mkvirtualenv virtualbmc
$ pip install virtualbmc

no cap, that's literally it 🫢


🌸 HOW TO USE VIRTUALBMC 🌸

okay so before the VirtualBMC tool can do its thing, you first need to create libvirt domain(s) β€” for example, via virsh. yes bestie, domains first, vibes second ✨

The VirtualBMC tool is a client-server system where the vbmcd server does all the heavy-lifting (it speaks IPMI, it calls libvirt) while the vbmc client is merely a command-line tool sending commands to the server and rendering responses back to you πŸ’–

Both tools can make use of an optional configuration file, which is looked for in the following locations (in this order, no skipping the line πŸ‘‘):

  • VIRTUALBMC_CONFIG environment variable pointing to a file
  • $HOME/.vbmc/virtualbmc.conf file
  • /etc/virtualbmc/virtualbmc.conf file

If no configuration file has been found, the internal defaults apply. the defaults ate, fr fr πŸ’…

You should set up your systemd to launch the vbmcd server on system start up β€” or you can just run vbmcd from the command line if you do not need the tool running persistently on the system. Once the server is up and running, you can use the vbmc tool to configure your libvirt domains as if they were physical hardware servers. main character energy honestly 😭

The vbmc client can only communicate with the vbmcd server if both are running on the same host. However vbmcd can manage libvirt domains remotely β€” so like, the server is the social butterfly, the client is a homebody, iykyk 🌈

By this moment you should be able to have the ipmitool managing VirtualBMC instances over the network. slay.

πŸ¦‹ Configuring virtual servers πŸ¦‹

Use the vbmc command-line tool to create, delete, list, start and stop virtual BMCs for the virtual machines being managed over IPMI. let's gooo πŸ”₯

  • In order to see all command options supported by the vbmc tool do:
$ vbmc --help

It's also possible to list the options from a specific command. For example, in order to know what can be provided as part of the add command do:

$ vbmc add --help
  • Adding a new virtual BMC to control libvirt domain called node-0:
$ vbmc add node-0
  • Adding a new virtual BMC to control libvirt domain called node-1 that will listen for IPMI commands on port 6230:
$ vbmc add node-1 --port 6230

Alternatively, libvirt can be configured to ssh into a remote machine and manage libvirt domain through ssh connection:

$ vbmc add node-1 --port 6230 \
    --libvirt-uri qemu+ssh://username@192.168.122.1/system
Note: Binding a network port number below 1025 is restricted and only users with privilege will be able to start a virtual BMC on those ports. so like, low ports are lowkey gatekept πŸ’€
  • Starting the virtual BMC to control libvirt domain node-0:
$ vbmc start node-0
  • Stopping the virtual BMC that controls libvirt domain node-0:
$ vbmc stop node-0
  • Getting the list of virtual BMCs including their libvirt domains and IPMI network endpoints they are reachable at:
$ vbmc list
+-------------+---------+---------+------+
| Domain name |  Status | Address | Port |
+-------------+---------+---------+------+
|    node-0   | running |    ::   | 623  |
|    node-1   | running |    ::   | 6230 |
+-------------+---------+---------+------+

look at that table. it's giving organized 🌸

  • To view configuration information for a specific virtual BMC:
$ vbmc show node-0
+-----------------------+----------------+
|        Property       |     Value      |
+-----------------------+----------------+
|        address        |       ::       |
|      domain_name      |     node-0     |
| libvirt_sasl_password |      ***       |
| libvirt_sasl_username |      None      |
|      libvirt_uri      | qemu:///system |
|        password       |      ***       |
|          port         |      623       |
|         status        |    running     |
|        username       |     admin      |
+-----------------------+----------------+

notice the *** bestie, we do NOT leak passwords around here πŸ™ˆπŸ’œ

🧚 Server simulation 🧚

Once the virtual BMC for a specific domain has been created and started you can then issue IPMI commands against the address and port of that virtual BMC to control the libvirt domain. For example:

  • To power on the virtual machine:
$ ipmitool -I lanplus -U admin -P password -H 127.0.0.1 -p 6230 power on
  • To check its power status:
$ ipmitool -I lanplus -U admin -P password -H 127.0.0.1 -p 6230 power status
  • To set the boot device to disk:
$ ipmitool -I lanplus -U admin -P password -H 127.0.0.1 -p 6230 chassis bootdev disk
  • To get the current boot device:
$ ipmitool -I lanplus -U admin -P password -H 127.0.0.1 -p 6230 chassis bootparam get 5

literally controlling a whole "server" with ipmitool, iconic πŸ’…βœ¨

πŸ’œ Backward compatible behaviour πŸ’œ

In the past the vbmc tool was the only part of the vBMC system. To help users keeping their existing server-less workflows, the vbmc tool attempts to spawn the vbmcd piece whenever it figures server is not running. cute, right? it's helping πŸ₯Ί

Warning: The backward compabible behaviour will be removed in two-cycle time past Queens. so like, enjoy it while it lasts bestie, it's on borrowed time πŸ’€

πŸ‘‘ CONTRIBUTING πŸ‘‘

If you would like to contribute to the development of OpenStack, you must follow the steps in this page:

<http://docs.openstack.org/infra/manual/developers.html>

If you already have a good understanding of how the system works and your OpenStack accounts are set up, you can skip to the development workflow section of this documentation to learn how changes to OpenStack should be submitted for review via the Gerrit tool:

<http://docs.openstack.org/infra/manual/developers.html#development-workflow>

Pull requests submitted through GitHub will be ignored. ignored. bestie don't do it, i'm begging 😭

Bugs should be filed in Launchpad, not GitHub:

<https://bugs.launchpad.net/virtualbmc>

⭐ Author ⭐

Author name not set 😭 (who wrote this?? show yourself 🫢)

2016, OpenStack Foundation


and that's the whole page bestie!! this was virtualbmc version 3.3.0, dated Mar 20, 2026, from the virtualbmc manual β€” go forth and fake some bare metal, you absolute legend πŸ‘‘πŸ’–βœ¨

πŸ“¦ where this page comes from