From 5b95d6ee7f055f74176f7fa1abe21cb70191cca0 Mon Sep 17 00:00:00 2001 From: AJ Bowen Date: Sun, 29 Oct 2017 15:42:16 +0100 Subject: [PATCH] shfmt -i 4 -bn' to allow pipes to begin lines --- prepare-vms/lib/aws.sh | 28 ++--- prepare-vms/lib/commands.sh | 26 ++-- prepare-vms/lib/find-ubuntu-ami.sh | 188 +++++++++++++++++------------ prepare-vms/workshopctl | 8 +- 4 files changed, 139 insertions(+), 111 deletions(-) diff --git a/prepare-vms/lib/aws.sh b/prepare-vms/lib/aws.sh index 26e37114..e99abad7 100644 --- a/prepare-vms/lib/aws.sh +++ b/prepare-vms/lib/aws.sh @@ -1,19 +1,19 @@ aws_display_tags() { # Print all "Name" tags in our region with their instance count - echo "[#] [Status] [Token] [Tag]" | - awk '{ printf "%-7s %-12s %-25s %-25s\n", $1, $2, $3, $4}' + echo "[#] [Status] [Token] [Tag]" \ + | awk '{ printf "%-7s %-12s %-25s %-25s\n", $1, $2, $3, $4}' aws ec2 describe-instances \ - --query "Reservations[*].Instances[*].[State.Name,ClientToken,Tags[0].Value]" | - tr -d "\r" | - uniq -c | - sort -k 3 | - awk '{ printf "%-7s %-12s %-25s %-25s\n", $1, $2, $3, $4}' + --query "Reservations[*].Instances[*].[State.Name,ClientToken,Tags[0].Value]" \ + | tr -d "\r" \ + | uniq -c \ + | sort -k 3 \ + | awk '{ printf "%-7s %-12s %-25s %-25s\n", $1, $2, $3, $4}' } aws_get_tokens() { aws ec2 describe-instances --output text \ - --query 'Reservations[*].Instances[*].[ClientToken]' | - sort -u + --query 'Reservations[*].Instances[*].[ClientToken]' \ + | sort -u } aws_display_instance_statuses_by_tag() { @@ -74,9 +74,9 @@ aws_get_instance_ips_by_tag() { need_tag $TAG aws ec2 describe-instances --filter "Name=tag:Name,Values=$TAG" \ --output text \ - --query "Reservations[*].Instances[*].PublicIpAddress" | - tr "\t" "\n" | - sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 # sort IPs + --query "Reservations[*].Instances[*].PublicIpAddress" \ + | tr "\t" "\n" \ + | sort -n -t . -k 1,1 -k 2,2 -k 3,3 -k 4,4 # sort IPs } aws_kill_instances_by_tag() { @@ -89,8 +89,8 @@ aws_kill_instances_by_tag() { info "Deleting instances with tag $TAG." - aws ec2 terminate-instances --instance-ids $IDS | - grep ^TERMINATINGINSTANCES + aws ec2 terminate-instances --instance-ids $IDS \ + | grep ^TERMINATINGINSTANCES info "Deleted instances with tag $TAG." } diff --git a/prepare-vms/lib/commands.sh b/prepare-vms/lib/commands.sh index 94d3c1ed..6bc7a20c 100644 --- a/prepare-vms/lib/commands.sh +++ b/prepare-vms/lib/commands.sh @@ -411,9 +411,9 @@ wait_until_tag_is_running() { done_count=$(aws ec2 describe-instances \ --filters "Name=instance-state-name,Values=running" \ "Name=tag:Name,Values=$TAG" \ - --query "Reservations[*].Instances[*].State.Name" | - tr "\t" "\n" | - wc -l) + --query "Reservations[*].Instances[*].State.Name" \ + | tr "\t" "\n" \ + | wc -l) if [[ $i -gt $max_retry ]]; then die "Timed out while waiting for instance creation (after $max_retry retries)" @@ -461,12 +461,12 @@ test_vm() { "env" \ "ls -la /home/docker/.ssh"; do sep "$cmd" - echo "$cmd" | - ssh -A -q \ + echo "$cmd" \ + | ssh -A -q \ -o "UserKnownHostsFile /dev/null" \ -o "StrictHostKeyChecking=no" \ - $user@$ip sudo -u docker -i || - { + $user@$ip sudo -u docker -i \ + || { status=$? error "$cmd exit status: $status" errors="[$status] $cmd\n$errors" @@ -487,17 +487,17 @@ make_key_name() { sync_keys() { # make sure ssh-add -l contains "RSA" - ssh-add -l | grep -q RSA || - die "The output of \`ssh-add -l\` doesn't contain 'RSA'. Start the agent, add your keys?" + ssh-add -l | grep -q RSA \ + || die "The output of \`ssh-add -l\` doesn't contain 'RSA'. Start the agent, add your keys?" AWS_KEY_NAME=$(make_key_name) info "Syncing keys... " if ! aws ec2 describe-key-pairs --key-name "$AWS_KEY_NAME" &>/dev/null; then aws ec2 import-key-pair --key-name $AWS_KEY_NAME \ - --public-key-material "$(ssh-add -L | - grep -i RSA | - head -n1 | - cut -d " " -f 1-2)" &>/dev/null + --public-key-material "$(ssh-add -L \ + | grep -i RSA \ + | head -n1 \ + | cut -d " " -f 1-2)" &>/dev/null if ! aws ec2 describe-key-pairs --key-name "$AWS_KEY_NAME" &>/dev/null; then die "Somehow, importing the key didn't work. Make sure that 'ssh-add -l | grep RSA | head -n1' returns an RSA key?" diff --git a/prepare-vms/lib/find-ubuntu-ami.sh b/prepare-vms/lib/find-ubuntu-ami.sh index 94049908..6a6020bf 100644 --- a/prepare-vms/lib/find-ubuntu-ami.sh +++ b/prepare-vms/lib/find-ubuntu-ami.sh @@ -3,10 +3,10 @@ # That way, it can be safely invoked as a function from other scripts. find_ubuntu_ami() { -( + ( -usage() { - cat >&2 <<__ + usage() { + cat >&2 <<__ usage: find-ubuntu-ami.sh [ ... ] [ ] [ ] where: is pair of key and substring to search @@ -33,66 +33,94 @@ where: protip for Docker orchestration workshop admin: ./find-ubuntu-ami.sh -t hvm:ebs -r \$AWS_REGION -v 15.10 -N __ - exit 1 -} + exit 1 + } -args=`getopt hr:n:v:a:t:d:i:k:RNVATDIKq $*` -if [ $? != 0 ] ; then - echo >&2 - usage -fi + args=$(getopt hr:n:v:a:t:d:i:k:RNVATDIKq $*) + if [ $? != 0 ]; then + echo >&2 + usage + fi -region= -name= -version= -arch= -type= -date= -image= -kernel= + region= + name= + version= + arch= + type= + date= + image= + kernel= -sort=date + sort=date -quiet= + quiet= -set -- $args -for a ; do - case "$a" in - -h) usage ;; + set -- $args + for a; do + case "$a" in + -h) usage ;; - -r) region=$2 ; shift ;; - -n) name=$2 ; shift ;; - -v) version=$2 ; shift ;; - -a) arch=$2 ; shift ;; - -t) type=$2 ; shift ;; - -d) date=$2 ; shift ;; - -i) image=$2 ; shift ;; - -k) kernel=$2 ; shift ;; - - -R) sort=region ;; - -N) sort=name ;; - -V) sort=version ;; - -A) sort=arch ;; - -T) sort=type ;; - -D) sort=date ;; - -I) sort=image ;; - -K) sort=kernel ;; + -r) + region=$2 + shift + ;; + -n) + name=$2 + shift + ;; + -v) + version=$2 + shift + ;; + -a) + arch=$2 + shift + ;; + -t) + type=$2 + shift + ;; + -d) + date=$2 + shift + ;; + -i) + image=$2 + shift + ;; + -k) + kernel=$2 + shift + ;; - -q) quiet=y ;; - - --) shift ; break ;; - *) continue ;; - esac - shift -done + -R) sort=region ;; + -N) sort=name ;; + -V) sort=version ;; + -A) sort=arch ;; + -T) sort=type ;; + -D) sort=date ;; + -I) sort=image ;; + -K) sort=kernel ;; -[ $# = 0 ] || usage + -q) quiet=y ;; -fix_json() { - tr -d \\n | sed 's/,]}/]}/' -} + --) + shift + break + ;; + *) continue ;; + esac + shift + done -jq_query() { cat <<__ + [ $# = 0 ] || usage + + fix_json() { + tr -d \\n | sed 's/,]}/]}/' + } + + jq_query() { + cat <<__ .aaData | map ( { region: .[0], @@ -116,31 +144,31 @@ jq_query() { cat <<__ ) | sort_by(.$sort) | .[] | "\(.region)|\(.name)|\(.version)|\(.arch)|\(.type)|\(.date)|\(.image)|\(.kernel)" __ + } + + trim_quotes() { + sed 's/^"//;s/"$//' + } + + escape_spaces() { + sed 's/ /\\\ /g' + } + + url=http://cloud-images.ubuntu.com/locator/ec2/releasesTable + + { + [ "$quiet" ] || echo REGION NAME VERSION ARCH TYPE DATE IMAGE KERNEL + curl -s $url | fix_json | jq "$(jq_query)" | trim_quotes | escape_spaces | tr \| ' ' + } \ + | while read region name version arch type date image kernel; do + image=${image%<*} + image=${image#*>} + if [ "$quiet" ]; then + echo $image + else + echo "$region|$name|$version|$arch|$type|$date|$image|$kernel" + fi + done | column -t -s \| + + ) } - -trim_quotes() { - sed 's/^"//;s/"$//' -} - -escape_spaces() { - sed 's/ /\\\ /g' -} - -url=http://cloud-images.ubuntu.com/locator/ec2/releasesTable - -{ - [ "$quiet" ] || echo REGION NAME VERSION ARCH TYPE DATE IMAGE KERNEL - curl -s $url | fix_json | jq "`jq_query`" | trim_quotes | escape_spaces | tr \| ' ' -} | - while read region name version arch type date image kernel ; do - image=${image%<*} - image=${image#*>} - if [ "$quiet" ]; then - echo $image - else - echo "$region|$name|$version|$arch|$type|$date|$image|$kernel" - fi - done | column -t -s \| - -) -} \ No newline at end of file diff --git a/prepare-vms/workshopctl b/prepare-vms/workshopctl index c7d69db1..c8b26861 100755 --- a/prepare-vms/workshopctl +++ b/prepare-vms/workshopctl @@ -61,11 +61,11 @@ check_image() { docker inspect $TRAINER_IMAGE >/dev/null 2>&1 } -check_envvars || - die "Please set all required environment variables." +check_envvars \ + || die "Please set all required environment variables." -check_dependencies || - warning "At least one dependency is missing. Install it or try the image wrapper." +check_dependencies \ + || warning "At least one dependency is missing. Install it or try the image wrapper." # Now check which command was invoked and execute it if [ "$1" ]; then