Studio theYANG, as a collaborator on the pilot project of LXDock during version 0.2 to 0.3, favours the integration of LXDock in devOps practice of web systems as the configuration of development environments.
LXDock is a Python wrapper around LXD that “allows developers to orchestrate their development environments using a workflow similar to Vagrant.” The latest version 0.4.1 has supported three most common provisioners: bash shell, Ansible and Puppet. Studio theYANG has proudly implemented the first experimental version of LXDock’s Puppet provisioner that makes possible to convert a Vagrant setting into an LXDock one with zero effort.
Advantages
The devOps practice expects developers to have the exact configuration of the production environment in their development environments. Vagrant, initially released on March 8th, 2010, has historically been the choice for programmatically maintaining multiple virtual machines interconnected with each other on a developer’s local host. Even using KVM (Kernel-based virtual machine) on Linux, however, launching multiple virtual machines still incurs a significant overhead on hardware-level emulation.
LXDock, ultimately utilizing LXC (Linux Container), seeks a lightweight alternative solution on OS-level emulation of multiple Linux machines on a Linux host. Initiated by Virgil Dupras and Morgan Aubert in late 2016 and generously supported by the Montreal company Savoir-faire Linux, LXDock, as a pilot project, debuted in community with its first release version 0.1 on March 9th, 2017. With its slogan “Vagrant is too heavy,” LXDock has quickly received 200 stars on GitHub.
Compared to Docker, the popular containerization solution which is also based on Linux chroot system call, LXC’s functionalities are more akin to ones of virtual machines and it is therefore possible to test with a development environment that is stateful and can have background processes, simply like operating on real Linux machines.
Future Possible Enhancements
LXDock has been picked up by a vibe community towards its 0.5 release. Major enhancements in the future may include:
- The support of remote LXD daemons;
- A reimplementation from scratch in Go.
