ci: add packer definition for creating ec2 AMIs
Created by: ggilmore
Adds a packer template that programmatically creates new AWS, GCP, etc. machine images for each Sourcegraph release. This has the following advantages:
- Customers no longer have to go through the boilerplate of setting up docker + pulling the sourcegraph/server image when setting up a new VM
- Docker configuration across all cloud providers will be standardized
- Startup times are improved over
cloud-init
scripts since the docker image is already baked into the VM - (most important IMO) Creating VMs in CI is essentially a pre-requisite to being able to submit Sourcegeraph to the AWS marketplace - which should greatly boost our discoverability
TODO:
-
Actually add this to buildkite - Actually building the new AMI takes several minutes, and the AMI needs to be copied to each region
- We need new AWS credentials for buildkite (packer works by actually spinning up a new EC2 instance for each job)
-
set up environment variable hooks for names, sourcegraph/server version, etc. instead of hard-coding it -
think through how server upgrades would work -
how do external EBS volumes factor into this