I recently started testing Vagrant for my personal projects around XWiki. Vagrant is a tool that allows to quickly spin up a development environment inside a virtual machine, which you can use for one of your projects :
HashiCorp Vagrant provides the same, easy workflow regardless of your role as a developer, operator, or designer. It leverages a declarative configuration file which describes all your software requirements, packages, operating system configuration, users, and more.
I find this approach interesting when XWiki needs to be integrated along with other infrastructure components : an Apache2 server, an external Solr index, …
In Vagrant, it is possible to “kickstart” a development environment from a base “box” (which is essentially the image of the virtual machine, plus some metadata). Vagrant provides a catalog of boxes from which a project can be kickstarted. You can find “simple” boxes, such as a base Debian box, or boxes with pre-installed software, which is the case of this one, with Elastic pre-installed.
I’d like to propose to publish Vagrant boxes with a default XWiki installation. The idea would be to provide these boxes as a “contrib” installation method : where the project does not commit to update the boxes at each release, and then see how it goes. In the team I work in at XWiki SAS, we may have some needs for such development environment, and may push some improvements to the boxes over time.
WDYT of the idea ?
In the meantime, I’ll create a contrib repository for now in xwiki-contrib/vagrant ; as well as the JIRA project VAGRANT to put the code that I have so far for building the boxes.