Run vagrant-bootstrap.sh and add your credentials to your personal Vagrantfile.
# Amazon Credentials - used to provision AWS Cloud environments AMAZON_ACCESS_KEY_ID = "XXX" AMAZON_SECRET_ACCESS_KEY = "XXX" AMAZON_SSH_KEYPAIR_NAME = "vagrant" AMAZON_SSH_PRIVATE_KEY = "~/.aws/vagrant.pem" # Amazon Resources AMAZON_REGION = "us-west-2" AMAZON_SECURITY_GROUP = "sg-8669e0e3" AMAZON_SUBNET = "subnet-73407707" # Google Credentials - used to provision Google Cloud environments GOOGLE_PROJECT_ID = "XXX" GOOGLE_SERVCE_ACCOUNT_EMAIL = "XXX" GOOGLE_SERVCE_ACCOUNT_KEY = "~/.google/vagrant.p12" # Google Resources GOOGLE_ZONE = 'us-central2-a' # Vagrant SSH Credentials - used to SSH into environments created by Vagrant VAGRANT_SSH_USERNAME = "vagrant" VAGRANT_SSH_KEY = "~/.ssh/id_vagrant"
Enable X11 forwarding in SSH.
Host * ForwardX11 yes
Create a VM
vagrant up vbox vagrant up ec2 --provider=aws vagrant up gce --provider=google
SSH into VM w/ X11 forwarding
vagrant ssh vbox -- -Y vagrant ssh ec2 -- -Y vagrant ssh gce -- -Y
Tear down VM
vagrant destroy vbox vagrant destroy ec2 vagrant destroy gce
Create X11 session
vagrant ssh vbox -- -Y xpra start :$SESSION vagrant ssh ec2 -- -Y xpra start :$SESSION vagrant ssh gce -- -Y xpra start :$SESSION
Attach to X11 session
vagrant ssh vbox -- -Y xpra attach :$SESSION vagrant ssh ec2 -- -Y xpra attach :$SESSION vagrant ssh gce -- -Y xpra attach :$SESSION
Destroy X11 session
vagrant ssh vbox -- -Y xpra stop :$SESSION vagrant ssh ec2 -- -Y xpra stop :$SESSION vagrant ssh gce -- -Y xpra stop :$SESSION
Lifetime of a docker container connected to an X11 session that's run in the vagrant managed client. The X11 session from the client can be attached and detached from the host X11 session.
DISPLAY=:$SESSION XAUTH=/tmp/Xauthority-$SESSION XSOCK=/tmp/.X11-unix/X$SESSION xauth nlist $DISPLAY | sed -e 's/^..../ffff/' | xauth -f $XAUTH nmerge - SESSION=99 TAG=xclock CMD=xclock
Start an X11 session
vagrant ssh vbox -- -Y xpra start :$SESSION vagrant ssh ec2 -- -Y xpra start :$SESSION vagrant ssh gce -- -Y xpra start :$SESSION
Start container
vagrant ssh vbox -- -Y docker run -e DISPLAY=:$DISPLAY -e XAUTHORITY=$XAUTH -v $XSOCK:$XSOCK -v $XAUTH:$XAUTH -i -t $TAG $CMD vagrant ssh ec2 -- -Y docker run -e DISPLAY=:$DISPLAY -e XAUTHORITY=$XAUTH -v $XSOCK:$XSOCK -v $XAUTH:$XAUTH -i -t $TAG $CMD vagrant ssh gce -- -Y docker run -e DISPLAY=:$DISPLAY -e XAUTHORITY=$XAUTH -v $XSOCK:$XSOCK -v $XAUTH:$XAUTH -i -t $TAG $CMD
Attach to X11 session
vagrant ssh vbox -- -Y xpra attach :$SESSION vagrant ssh ec2 -- -Y xpra attach :$SESSION vagrant ssh gce -- -Y xpra attach :$SESSION
Stop / kill a docker container
vagrant ssh vbox -- -Y docker stop|kill $CONTAINER vagrant ssh ec2 -- -Y docker stop|kill $CONTAINER vagrant ssh gce -- -Y docker stop|kill $CONTAINER
Stop session
vagrant ssh vbox -- -Y xpra stop :$SESSION vagrant ssh ec2 -- -Y xpra stop :$SESSION vagrant ssh gce -- -Y xpra stop :$SESSION