• Graceful Shutdown of QEMU Guest from Python

    In this tutorial I want to show how you can trigger a clean shutdown of your QEMU guest VM from Python. This is not as simple as one might expect, but also not so difficult. If you only stop the QEMU process, it will be a reset inside the guest VM. For a clean shutdown of a QEMU guest we have to use the QEMU monitor and send a shutdown command there.

  • Persistent QEMU Instances with systemd

    If you’re running QEMU instances without libvirt, you have the problem that there is no daemon managing your instances. If your host reboots, the VMs will not be re-created. In this part of my cloud computing tutorial I will use systemd to create QEMU VMs that are managed by a daemon (in this case systemd). If you haven’t followed along my tutorial series, you can just read the systemd info and skip the Python parts.

  • VDE Networking for our Cloud Computing

    If you’ve followed the first part of this series, you’ll remember that our server script currently requires root privileges to setup a TAP device for each QEMU instance. It would be much nicer if this was not needed and instead our script could run in user-mode. This is possible with VDE networking.

  • Using flask-log-request-id in Backend Workers without an HTTP Request

    flask-log-request-id is a small extension for Flask to forward a request ID from HTTP requests to logging. By default, it works with X-Request-ID, X-Correlation-ID, and AWS’s X-Amzn-Trace-Id. I recently wanted to propagate the request ID to a worker that does not use HTTP and thus does not receive any of the above headers.

  • Let's Program our own Cloud Computing Provider with Python, RabbitMQ and QEMU

    In this tutorial I show how we can create a very simple scalable cloud computing provider for fun. It will allow us to start VMs from base images by sending messages to a message broker. All of this will be based on QEMU to run VMs, RabbitMQ to handle messaging and Python for the code.