Skip to content

Instantly share code, notes, and snippets.

@brentp
Last active September 15, 2017 21:52
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brentp/f28bdad50cc04a06d22a1b65ae9ee469 to your computer and use it in GitHub Desktop.
Save brentp/f28bdad50cc04a06d22a1b65ae9ee469 to your computer and use it in GitHub Desktop.
# http://docs.aws.amazon.com/batch/latest/userguide/create-batch-ami.html
sudo yum update
sudo yum install -y grub
sudo yum install -y ecs-init
sudo reboot now
sudo stop ecs
sudo rm -rf /var/lib/ecs/data/ecs_agent_data.json
sudo -E su
n=$(ls /dev/nvme*n1 | wc -l)
mdadm --create --verbose /dev/md0 -R --level=stripe --raid-devices=$n /dev/nvme*n1 --force
mkfs -t ext4 -i 25165824 /dev/md0
blockdev --setra 65536 /dev/md0
mkdir /mnt/local
mount -o noatime /dev/md0 /mnt/local
rm -rf /mnt/local/*
chown ec2-user:ec2-user /mnt/local/
echo "bash /etc/drive.sh" >> /etc/rc.local
cat << 'EOF' > /etc/drive.sh
n=$(ls /dev/nvme*n1 | wc -l)
if [[ "x$n" -eq "x0" ]]; then
export vid=$(batchit ebsmount --size 200 -n 2 -m /mnt/local/)
chown ec2-user:ec2-user /mnt/local/
# detach and destroy volumes on reboot.
cd /etc/init.d/
echo -e '#!/bin/sh\n# chkconfig: 06 99 10\n' > K99_cleanup
echo -e "export vid=\"$vid\"\n" >> K99_cleanup
echo -e 'stop() { umount -l /mnt/local; batchit ddv '$vid'; };\n' >> K99_cleanup
echo -e '
case "$1" in
start) ;;
stop) stop;;
*)
echo $"Usage: $0 {start|stop}"
exit 1
esac
exit 0' >> K99_cleanup
chkconfig --add K99_cleanup
chmod a+x K99_cleanup
cd /etc/rc6.d/;ln -sf ../init.d/K99_cleanup .
cd /etc/rc0.d/;ln -sf ../init.d/K99_cleanup .
else
mdadm --create --verbose /dev/md0 -R --level=stripe --raid-devices=$n /dev/nvme*n1 --force
mkfs -t ext4 -i 25165824 /dev/md0
blockdev --setra 65536 /dev/md0
mkdir -p /mnt/local
mount -t ext4 -o noatime /dev/md0 /mnt/local
echo "/dev/md0 /mnt ext4 noatime,nofail 0 0" | tee -a /etc/fstab
rm -rf /mnt/local/*
chown ec2-user:ec2-user /mnt/local/
sleep 5
fi
EOF
# now go to console and hit save image.
# http://docs.aws.amazon.com/batch/latest/userguide/create-batch-ami.html
sudo yum update
sudo yum install -y grub
sudo yum install -y ecs-init
# copy cert and key to /tmp/cert/
# export AWS secret and access key
if [[ ! -e /dev/md0 ]]; then
sudo mdadm --create --verbose /dev/md0 -R --level=stripe --raid-devices=2 /dev/nvme0n1 /dev/nvme1n1
sudo mkfs -t ext4 /dev/md0
fi
sudo blockdev --setra 65536 /dev/md0
sudo mkdir /mnt/local
sudo mount -o noatime /dev/md0 /mnt/local
sudo rm -rf /mnt/local/*
sudo chown ec2-user:ec2-user /mnt/local/
sudo echo 'GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"' | sudo tee -a /etc/default/grub
sudo -E su
echo "bash /etc/drive.sh" >> /etc/rc.local
cat <<EOF > /etc/drive.sh
if [[ ! -e /dev/md0 ]]; then
mdadm --create --verbose /dev/md0 -R --level=stripe --raid-devices=2 /dev/nvme0n1 /dev/nvme1n1
mkfs -t ext4 /dev/md0
fi
blockdev --setra 65536 /dev/md0
mkdir -p /mnt/local
mount -t ext4 -o noatime /dev/md0 /mnt/local
echo "/dev/md0 /mnt ext4 noatime,nofail 0 0" | tee -a /etc/fstab
sed -i "/dev\/xvdb/d" /etc/fstab
rm -rf /mnt/local/*
chown ec2-user:ec2-user /mnt/local/
EOF
# now go to console and hit save image.
# http://docs.aws.amazon.com/batch/latest/userguide/create-batch-ami.html
sudo yum update
sudo yum install -y grub
sudo yum install -y ecs-init
# copy cert and key to /tmp/cert/
# export AWS secret and access key
sudo umount /media/ephemeral0/
sudo mdadm --create --verbose /dev/md0 -R --level=stripe --raid-devices=2 /dev/xvdb /dev/xvdc
sudo mkfs -t ext4 /dev/md0
sudo blockdev --setra 65536 /dev/md0
sudo mkdir /mnt/local
sudo mount -o noatime /dev/md0 /mnt/local
sudo rm -rf /mnt/local/*
sudo chown ec2-user:ec2-user /mnt/local/
sudo echo 'GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"' | sudo tee -a /etc/default/grub
sudo -E su
sed -i "/dev\/xvdb/d" /etc/fstab
sed -i "/dev\/sdb/d" /etc/fstab
echo "bash /etc/drive.sh" >> /etc/rc.local
sudo cat <<EOF > /etc/drive.sh
umount /media/ephemeral0
mdadm --create --verbose /dev/md0 -R --level=stripe --raid-devices=2 /dev/xvdb /dev/xvdc
mkfs -t ext4 /dev/md0
blockdev --setra 65536 /dev/md0
mkdir -p /mnt/local
mount -o noatime /dev/md0 /mnt/local
echo "/dev/md0 /mnt ext4 noatime,nofail 0 0" | tee -a /etc/fstab
sed -i "/dev\/xvdb/d" /etc/fstab
rm -rf /mnt/local/*
chown ec2-user:ec2-user /mnt/local/
EOF
ec2-bundle-vol -d /mnt/local/ -k /tmp/cert/instance-store-key.pem -c /tmp/cert/instance-store-certificate.pem -u 3216-2074-0768 -r x86_64 -e /tmp/cert/ --partition gpt
exit
cd /mnt/local
mv image.manifest.xml{,.bak}
xmllint --format image.manifest.xml.bak > image.manifest.xml
name=base2-instance-store
ec2-upload-bundle -b base2-bundle/$name/$name -m image.manifest.xml -a "$AWS_ACCESS_KEY_ID" -s "$AWS_SECRET_ACCESS_KEY" --region us-east-1
aws ec2 register-image --image-location base2-bundle/$name/$name/image.manifest.xml --name base2-instance-store --virtualization-type hvm --region us-east-1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment