Vagrant allows for all kinds of nifty commands, but they need to be run from within a given project in order to work. Also, Aegir-up's architecture can appear complicated to new users. So, in an effort to simplify the interface, I'm proposing adding a number of 'aegir-up' commands.
So far, in lib/scripts, we have:
- aegir-up-init.sh: initialize a project (e.g., projects/my-project).
- aegir-up-user.sh: initialize user settings (i.e., ~/.aegir-up).
- aegir-up-remotes: add Puppet module remotes.
- vp: add an alias to allow provisioning from other than a project's root.
Here are some other ideas:
aegir-up-destroy.shaegir-up-delete.sh: run 'vagrant destroy' on a project, then 'rm -rf projects/my-project'. If we don't destroy the VMs first, it can be a real hassle to clean them up. DONE
- aegir-up-clone.sh: clone a project repo, and then initialize it locally. Sharing project repos can be a bit difficult, since we won't have user settings, may run into subnet collisions, etc.
- aegir-up-rebuild.sh: pull down project changes, and rebuild the project's VMs (basically 'vagrant destroy -f && git pull && vagrant up')
- aegir-up-provision.sh: replace vp (see above), and ensure that we use the vagrant user for provisioning.
- aegir-up-ssh.sh: ssh into any VM in any project from anywhere. Possibly add agent forwarding. DONE
- aegir-up-start.sh: launch, start or resume a VM (in any project, from anywhere).
- aegir-up-pause.sh: suspend one VM or all VMs in a project.
- aegir-up-stop.sh: shutdown one VM or all VMs in a project.
- aegir-up-basebox.sh: automate the building of the Aegir-up baseboxes.
- aegir-up-status.sh: show VM status across all projects.
.sh: wrapper linked to from the aegir-up root,that passes variables on to the appropriate sub-command (e.g. 'aegir-up init', 'aegir-up ssh my-project', &c.)
- aegir-up-upgrade.sh: manage stable version upgrades.