github.com/blixtra/rkt@v0.8.1-0.20160204105720-ab0d1add1a43/tests/aws.sh (about)

     1  #!/bin/bash
     2  
     3  set -e
     4  
     5  SCRIPTPATH=$(dirname "$0")
     6  cd $SCRIPTPATH
     7  
     8  KEY_PAIR_NAME=rkt-testing-${USER}
     9  SECURITY_GROUP=rkt-testing-${USER}-security-group
    10  
    11  ## First time only
    12  if [ "$1" = "setup" ] ; then
    13    MYIP=$(curl --silent http://checkip.amazonaws.com/)
    14  
    15    aws ec2 create-key-pair --key-name $KEY_PAIR_NAME --query 'KeyMaterial' --output text > ${KEY_PAIR_NAME}.pem
    16    chmod 0600 ${KEY_PAIR_NAME}.pem
    17    aws ec2 create-security-group --group-name $SECURITY_GROUP --description "Security group for rkt testing"
    18    aws ec2 authorize-security-group-ingress --group-name $SECURITY_GROUP --protocol tcp --port 22 --cidr $MYIP/32
    19    exit 0
    20  fi
    21  
    22  DISTRO=$1
    23  GIT_URL=${2-https://github.com/coreos/rkt.git}
    24  GIT_BRANCH=${3-master}
    25  
    26  test -f cloudinit/${DISTRO}.cloudinit
    27  CLOUDINIT_IN=$PWD/cloudinit/${DISTRO}.cloudinit
    28  
    29  if [ "$DISTRO" = "fedora-22" ] ; then
    30    # https://getfedora.org/en/cloud/download/
    31    # Search on AWS or look at
    32    # https://apps.fedoraproject.org/datagrepper/raw?category=fedimg
    33    # Sources: https://github.com/fedora-infra/fedimg/blob/develop/bin/list-the-amis.py
    34  
    35    # Fedora-Cloud-Base-22-20151026.x86_64-eu-central-1-HVM-standard-0 was deleted
    36  
    37    # Fedora-Cloud-Base-22-20150521.x86_64-eu-central-1-HVM-standard-0
    38    AMI=ami-a88eb0b5
    39    AWS_USER=fedora
    40  elif [ "$DISTRO" = "fedora-23" ] ; then
    41    # Fedora-Cloud-Base-23-20160129.x86_64-eu-central-1-HVM-standard-0
    42    AMI=ami-4d3e2621
    43    AWS_USER=fedora
    44  elif [ "$DISTRO" = "fedora-rawhide" ] ; then
    45    # rawhide is currently broken
    46    # Error: nothing provides libpsl.so.0()(64bit) needed by wget-1.17.1-1.fc24.x86_64
    47  
    48    # Fedora-Cloud-Base-rawhide-20160127.x86_64-eu-central-1-HVM-standard-0
    49    AMI=ami-877068eb
    50    AWS_USER=fedora
    51  elif [ "$DISTRO" = "ubuntu-1604" ] ; then
    52    # https://cloud-images.ubuntu.com/locator/ec2/
    53    # ubuntu/images-milestone/hvm/ubuntu-xenial-alpha2-amd64-server-20160125
    54    AMI=ami-b4a5b9d8
    55    AWS_USER=ubuntu
    56  elif [ "$DISTRO" = "ubuntu-1510" ] ; then
    57    # https://cloud-images.ubuntu.com/locator/ec2/
    58    # ubuntu/images/hvm/ubuntu-wily-15.10-amd64-server-20160123
    59    AMI=ami-e9869f85
    60    AWS_USER=ubuntu
    61  elif [ "$DISTRO" = "debian" ] ; then
    62    # https://wiki.debian.org/Cloud/AmazonEC2Image/Jessie
    63    # Debian 8.1
    64    AMI=ami-02b78e1f
    65    AWS_USER=admin
    66  elif [ "$DISTRO" = "centos" ] ; then
    67    # Needs to subscribe first, see:
    68    # https://wiki.centos.org/Cloud/AWS
    69    # CentOS-7 x86_64 HVM
    70    AMI=ami-e68f82fb
    71    AWS_USER=centos
    72  fi
    73  
    74  test -n "$AMI"
    75  test -n "$AWS_USER"
    76  test -f "${KEY_PAIR_NAME}.pem"
    77  
    78  CLOUDINIT=$(mktemp --tmpdir rkt-cloudinit.XXXXXXXXXX)
    79  sed -e "s#@GIT_URL@#${GIT_URL}#g" \
    80      -e "s#@GIT_BRANCH@#${GIT_BRANCH}#g" \
    81      < $CLOUDINIT_IN >> $CLOUDINIT
    82  
    83  INSTANCE_ID=$(aws ec2 run-instances \
    84  	--image-id $AMI \
    85  	--count 1 \
    86  	--key-name $KEY_PAIR_NAME \
    87  	--security-groups $SECURITY_GROUP \
    88  	--instance-type t2.micro \
    89  	--instance-initiated-shutdown-behavior terminate \
    90  	--user-data file://$CLOUDINIT \
    91  	--output text \
    92  	--query 'Instances[*].InstanceId' \
    93  	)
    94  echo INSTANCE_ID=$INSTANCE_ID
    95  
    96  while state=$(aws ec2 describe-instances \
    97  	--instance-ids $INSTANCE_ID \
    98  	--output text \
    99  	--query 'Reservations[*].Instances[*].State.Name' \
   100  	); test "$state" = "pending"; do
   101    sleep 1; echo -n '.'
   102  done; echo " $state"
   103  
   104  AWS_IP=$(aws ec2 describe-instances \
   105  	--instance-ids $INSTANCE_ID \
   106  	--output text \
   107  	--query 'Reservations[*].Instances[*].PublicIpAddress' \
   108  	)
   109  echo AWS_IP=$AWS_IP
   110  
   111  rm -f $CLOUDINIT
   112  
   113  sleep 5
   114  aws ec2 get-console-output --instance-id $INSTANCE_ID --output text |
   115    perl -ne 'print if /BEGIN SSH .* FINGERPRINTS/../END SSH .* FINGERPRINTS/'
   116  
   117  echo "Connect with:"
   118  echo ssh -o ServerAliveInterval=20 -i ${SCRIPTPATH}/${KEY_PAIR_NAME}.pem ${AWS_USER}@${AWS_IP}
   119  echo "Check the logs with:"
   120  echo tail -n 5000 -f /var/tmp/rkt-test.log
   121