A Vagrant base box for Mastodon

dependabot[bot] 49d82360c4 Bump ansible from 2.10.7 to 4.2.0 (#5) 2 gadi atpakaļ
ansible @ ce3f400453 4a85989bd3 Updated Ansible scripts, update cleanup script, update README 7 gadi atpakaļ
config ba46cdb7e7 Try to work around some issues with the build 7 gadi atpakaļ
preseeds 18b4a8d8b2 Preparing the build env for Packer Enterprise 7 gadi atpakaļ
scripts 4a85989bd3 Updated Ansible scripts, update cleanup script, update README 7 gadi atpakaļ
.gitignore 364fbbc399 Updated to newest Packer definitions; removed Atlas integration (deprecated) 6 gadi atpakaļ
.gitmodules ba46cdb7e7 Try to work around some issues with the build 7 gadi atpakaļ
LICENSE.md 364fbbc399 Updated to newest Packer definitions; removed Atlas integration (deprecated) 6 gadi atpakaļ
README.md 364fbbc399 Updated to newest Packer definitions; removed Atlas integration (deprecated) 6 gadi atpakaļ
Vagrantfile 11e58921d9 Add insecure Vagrant default key, set a default root password, update Ansible submodule, prepare Vagrant tests 7 gadi atpakaļ
packer.json 364fbbc399 Updated to newest Packer definitions; removed Atlas integration (deprecated) 6 gadi atpakaļ
requirements.txt 49d82360c4 Bump ansible from 2.10.7 to 4.2.0 (#5) 2 gadi atpakaļ

README.md

A VirtualBox image for Mastodon development

This VirtualBox base image contains all the required packages and configuration for running/instantiating a Mastodon instance for development. It is build using Hashicorp's Packer, the provisioning is done with Ansible through a dedicated git submodule called mastodon-ansible. The tests are using ServerSpec. It's made available through Hashicorp's Vagrant Cloud at mastodon/ubuntu-xenial64.

Note: Some of the content of the scripts in scripts/ is borrowed from the Bento project.

Prerequisites (for building on your own)

  • VirtualBox >= 5.1.x
  • Packer >= 1.0.0
  • Python >= 2.x
  • pip/python-pip >= 8.x

for testing purposes:

  • Vagrant >= 2.0.3

Setup

$ virtualenv env
$ source env/bin/activate
$ pip install -r requirements.txt

Building the box locally

Just execute:

$ packer build packer.json

Note: It will take at least roughly 5 - 10 minutes for the ISO to get preseeded ("pre-provisioned") by the Debian installer, hence the rather long timeout/waiting period before packer actually starts provisioning. If you're unsure whether there is any progress change the values headless in the packer.json from true to false and re-run the process. This will give have VirtualBox show you the output of the console the ISO is running on.

This will preseed the Ubuntu ISO image for Ubuntu Xenial 64bit with a couple of sane defaults and packages. Afterwards, the Ansible provisioner is run using the playbooks from the mastodon-ansible repository.

In the end you should have a box in builds/ with all the required components installed you can run directly in Vagrant.

Publishing to Vagrant Cloud

Note: You need a valid access token to submit new versions of the box to Vagrant Cloud. It will not work otherwise. There is a organization called mastodon which is responsible for the Vagrant boxes under the same namespace. If you think you can/want to contribute send me a message on @moritzheiber@mastodon.social and I'll add your to the organization.

If you have a valid VAGRANT_CLOUD_TOKEN you can use the vagrant-cloud post-processor to upload a new version to Vagrant Cloud. It'll be done automatically if the token is set:

$ VAGRANT_CLOUD_TOKEN="my-token" packer build packer.json

Testing

TODO