This project makes use of git submodules and before you build any planemo machines, you'll need to initialize them:
This will simply execute the following command
git submodule init && git submodule update.
- Build and register Vagrant box (named
- Build a virtualbox OVA for this vagrant box.
- Build a modified variant of the recipes with a Dockerfile directly
(skipping packer). Skipping packer makes it easier to iterate on and applicable
for tools like Docker Hub, the cost is some amount of duplication between
Dockerfilein this directory and
To override the Docker command to use sudo for instance do
make docker DOCKER_COMMAND='sudo docker'
- Build docker image using development Dockerfile (
dev.Dockerfile). This Dockefile is broken out into more steps and will result in a much larger final container but can be quicker to develop against since the individual steps are checkmarked.
- Build Docker image (using packer directly).
The VM version of this build process will enable Docker by default - but when building a Docker image we disable this so the developer doesn't need to configure docker-in-docker functionality.
- Build Google Compute Engine image (untested). Follow instructions on
https://www.packer.io/docs/builders/googlecompute.html, you will
need to download your account file to gce_account.json (or set a
packer build -var 'gce_project_id=<PROJECT_ID>' --only googlecompute packer.json
- Build Amazon Web Services AMI (untested).
packer build -var 'ami_access_key=<AWS ACCESS KEY>' -var 'ami_secret_key=<AWS SECRET KEY>' --only googlecompute packer.json
How it works
packer.json contains a description of steps to execute to
provision a box - broken out by where it is being provisioned (Docker,
AWS,GCE, etc...). The main step is the ansible provisioning step preceeded
immediately by the execution of the
setup_ansible.sh script. These steps
are executed for all platforms. To get to that point however, the RAW image
needs to be configured - basically an Ubuntu 14.04 machine needs to be created
with a password-less sudoing user (defaulting to
ubuntu but overridable
-var 'username=XXX' argument to
packer - see for instance
vagrant_create_box.sh script which overrides this to be
The Ansible roles used to provision the box are found in
roles and the
ansible playbook used to specify and configure them is
Overview of the roles:
galaxyprojectdotorg.cloudmanimageA subset of the CloudMan image role, hopefully this can be refactored an trimmed down so this project and CloudMan can share the same base (via Ansible Galaxy or gitsubmodules).
galaxyprojectdotorg.cloudmandatabaseThe database role from CloudMan (maybe with added defaults that should be backported). Used to create postgres database.
galaxyprojectdotorg.galaxyNate's Galaxy image - clones Galaxy, fetches eggs, sets up static configuration, etc...
galaxyprojectdotorg.galaxyextrasNew role created by extracting and generalizing stuff in Bjoern's Galaxy stable. Sets up Slurm, Proftp, Supervisor, uwsgi, nginx.
galaxyprojectdotorg.devboxNew role created explicitly for allocating a development box. Install
planemo, and a
smola.java- these are modified roles from CloudMan that work but seem less important for the devbox. They are commented out in provision.yml but should be added back in once things stabilize to unify CloudMan and this project.