diff --git a/prepare-vms/Dockerfile b/prepare-vms/Dockerfile index 1ce09a95..6b6d83d5 100644 --- a/prepare-vms/Dockerfile +++ b/prepare-vms/Dockerfile @@ -2,7 +2,6 @@ FROM debian:jessie MAINTAINER AJ Bowen RUN apt-get update && apt-get install -y \ - wkhtmltopdf \ bsdmainutils \ ca-certificates \ curl \ @@ -12,9 +11,11 @@ RUN apt-get update && apt-get install -y \ man \ pssh \ python \ - python-pip \ python-docutils \ + python-pip \ ssh \ + wkhtmltopdf \ + xvfb \ --no-install-recommends \ && rm -rf /var/lib/apt/lists/* @@ -25,7 +26,5 @@ RUN pip install \ PyYAML \ termcolor -WORKDIR $$HOME -RUN echo "alias ll='ls -lahF'" >> /root/.bashrc -ENTRYPOINT ["/root/prepare-vms/scripts/trainer-cli"] - +RUN mv $(which wkhtmltopdf) $(which wkhtmltopdf).real +COPY lib/wkhtmltopdf /usr/local/bin/wkhtmltopdf diff --git a/prepare-vms/docker-compose.yml b/prepare-vms/docker-compose.yml index e394c1b9..aa607ad8 100644 --- a/prepare-vms/docker-compose.yml +++ b/prepare-vms/docker-compose.yml @@ -1,26 +1,19 @@ version: "2" services: - prepare-vms: + workshopctl: build: . - container_name: prepare-vms + image: workshopctl working_dir: /root/prepare-vms volumes: - $HOME/.aws/:/root/.aws/ - /etc/localtime:/etc/localtime:ro - - /tmp/.X11-unix:/tmp/.X11-unix - - $SSH_AUTH_DIRNAME:$SSH_AUTH_DIRNAME + - $SSH_AUTH_SOCK:$SSH_AUTH_SOCK - $PWD/:/root/prepare-vms/ environment: - SCRIPT_DIR: /root/prepare-vms - DISPLAY: ${DISPLAY} SSH_AUTH_SOCK: ${SSH_AUTH_SOCK} - SSH_AGENT_PID: ${SSH_AGENT_PID} AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION} - AWS_DEFAULT_OUTPUT: json - AWS_INSTANCE_TYPE: ${AWS_INSTANCE_TYPE} - AWS_VPC_ID: ${AWS_VPC_ID} USER: ${USER} - entrypoint: /root/prepare-vms/scripts/trainer-cli + entrypoint: /root/prepare-vms/workshopctl diff --git a/prepare-vms/lib/commands.sh b/prepare-vms/lib/commands.sh index 05b527b0..8110cc1a 100644 --- a/prepare-vms/lib/commands.sh +++ b/prepare-vms/lib/commands.sh @@ -22,6 +22,16 @@ _cmd_ami() { find_ubuntu_ami -r $AWS_DEFAULT_REGION -a amd64 -v 16.04 -t hvm:ebs -N -q } +_cmd build "Build the Docker image to run this program in a container" +_cmd_build() { + docker-compose build +} + +_cmd wrap "Run this program in a container" +_cmd_wrap() { + docker-compose run --rm workshopctl "$@" +} + _cmd cards "Generate ready-to-print cards for a batch of VMs" _cmd_cards() { TAG=$1 @@ -35,7 +45,7 @@ _cmd_cards() { rm -f ips.html ips.pdf # This will generate two files in the base dir: ips.pdf and ips.html - python scripts/ips-txt-to-html.py $SETTINGS + python lib/ips-txt-to-html.py $SETTINGS for f in ips.html ips.pdf; do # Remove old versions of cards if they exist @@ -353,29 +363,6 @@ greet() { info "Hello! You seem to be UNIX user $USER, and IAM user $IAMUSER." } -deploy_hq(){ - TAG=$1 - need_tag $TAG - REMOTE_USER=ubuntu - REMOTE_HOST=$(aws_get_instance_ips_by_tag $TAG) - echo "Trying to reach $TAG instances..." - while ! tag_is_reachable $TAG; do - echo -n "." - sleep 2 - done - env | grep -i aws > envvars.sh - scp \ - -o "UserKnownHostsFile /dev/null" \ - -o "StrictHostKeyChecking=no" \ - scripts/remote-execution.sh \ - envvars.sh \ - $REMOTE_USER@$REMOTE_HOST:/tmp/ - - ssh -A $REMOTE_USER@$REMOTE_HOST "bash /tmp/remote-execution.sh >>/tmp/pre.out 2>>/tmp/pre.err" - ssh -A $REMOTE_USER@$REMOTE_HOST -} - - link_tag() { TAG=$1 need_tag $TAG diff --git a/prepare-vms/lib/wkhtmltopdf b/prepare-vms/lib/wkhtmltopdf new file mode 100755 index 00000000..be4f49c4 --- /dev/null +++ b/prepare-vms/lib/wkhtmltopdf @@ -0,0 +1,4 @@ +#!/bin/sh +pidof Xvfb || Xvfb -terminate & +export DISPLAY=:0 +exec wkhtmltopdf.real "$@"