|
| 1 | +--- |
| 2 | +stage: Systems |
| 3 | +group: Distribution |
| 4 | +info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/product/ux/technical-writing/#assignments |
| 5 | +--- |
| 6 | + |
| 7 | +# Amazon Machine Images (AMIs) and Marketplace Listings |
| 8 | + |
| 9 | +GitLab caters to the AWS ecosystem via the following methods |
| 10 | + |
| 11 | +1. Community AMIs |
| 12 | + 1. [GitLab CE](https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Images:visibility=public-images;ownerAlias=782774275127;search=GitLab%20CE;sort=desc:name) - amd64 and arm64 |
| 13 | + 1. [GitLab EE](https://console.aws.amazon.com/ec2/v2/home?region=us-east-1#Images:visibility=public-images;ownerAlias=782774275127;search=GitLab%20EE;sort=desc:name) (Unlicensed) - amd64 and arm64 |
| 14 | + |
| 15 | +1. [AWS Marketplace listing](https://aws.amazon.com/marketplace/seller-profile?id=9657c703-ca56-4b54-b029-9ded0fadd970) |
| 16 | + 1. [GitLab CE](https://aws.amazon.com/marketplace/pp/prodview-w6ykryurkesjq?sr=0-3&ref_=beagle&applicationId=AWSMPContessa) |
| 17 | + 1. [GitLab EE Premium (5 seat pre-licensed)](https://aws.amazon.com/marketplace/pp/prodview-amk6tacbois2k?sr=0-1&ref_=beagle&applicationId=AWSMPContessa) |
| 18 | + 1. [GitLab EE Ultimate (5 seat pre-licensed)](https://aws.amazon.com/marketplace/pp/prodview-g6ktjmpuc33zk?sr=0-2&ref_=beagle&applicationId=AWSMPContessa) |
| 19 | + |
| 20 | +## Building the AMIs |
| 21 | + |
| 22 | +AMIs are built as part of regular release process in the tag pipelines that run |
| 23 | +in the [Build mirror](https://dev.gitlab.org/gitlab/omnibus-gitlab), and use the |
| 24 | +Ubuntu 22.04 packages under the hood. They are built using [`packer`](https://www.packer.io/) |
| 25 | +with their [`Amazon EBS`](https://developer.hashicorp.com/packer/integrations/hashicorp/amazon/latest/components/builder/ebs) |
| 26 | +builder. Each Community AMI listed above has a corresponding packer |
| 27 | +configuration file to specify the build and AMI attributes and an update script |
| 28 | +to install the GitLab package and configure the AMI's startup behaviors. The |
| 29 | +update script downloads the Ubuntu 22.04 package and installs it on the VM. It |
| 30 | +also installs a [`cloud-init`](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#amazon-linux-cloud-init) |
| 31 | +script which automatically configures (with a `gitlab-ctl reconfigure` run) the |
| 32 | +GitLab instance to work with the VM's external IP address on startup. |
| 33 | + |
| 34 | +In addition to these public Community AMIs, two private AMIs are also built - |
| 35 | +for GitLab EE Premium and Ultimate tiers, which ships 5-seat licenses of the |
| 36 | +respective GitLab tier. This license file gets used as part of the initial |
| 37 | +`gitlab-ctl reconfigure` run on VM startup. These AMIs are backing our AWS |
| 38 | +Marketplace listings. |
| 39 | + |
| 40 | +## Releasing to AWS Marketplace |
| 41 | + |
| 42 | +In addition to building the AMIs during the release process, Omnibus GitLab |
| 43 | +tag pipeline also publishes the new version of the respective AWS Marketplace |
| 44 | +listing. The private AMIs mentioned above are used to back these listings. As |
| 45 | +part of release pipeline, we submit a changeset to publish the new version. |
| 46 | +Unlike AMI creation, this process is not immediate and we need to manually check |
| 47 | +the status of the changeset periodically to ensure it got applied to the |
| 48 | +listings, preferably after 24 hours. |
| 49 | + |
| 50 | +## Common release blocker events |
| 51 | + |
| 52 | +The following events has happen often in the past, and has caused the release |
| 53 | +pipeline to fail, and needs immediate attention: |
| 54 | + |
| 55 | +1. Exhausting quota on Public AMIs - When builds fail due to quota exhaustion, |
| 56 | + as an immediate fix, request a quota increase. Then discuss with |
| 57 | + Alliances/Product on de-registering or making private AMIs of some of the |
| 58 | + older versions. |
| 59 | + Also check [issue discussing retention policy of AMIs](https://gitlab.com/gitlab-org/distribution/team-tasks/-/issues/1149). |
| 60 | + |
| 61 | +1. AWS Marketplace version limit - AWS Marketplace has a 100 versions limit for |
| 62 | + each product, exhausting which we can't publish newer versions. However, they |
| 63 | + usually inform us (via email to a specific email account which is forwarded |
| 64 | + to selected Distribution Build team and Alliance team members) which is when |
| 65 | + we are nearing that limit, and we work with Alliances/Product to unlist some |
| 66 | + of the older versions. |
| 67 | + |
| 68 | +1. AWS Marketplace listing blocked by a pending changeset - When this happens, |
| 69 | + the changeset needs to be manually cancelled, and the Marketplace release job |
| 70 | + in the release pipeline needs to be retried. This requires someone with |
| 71 | + Maintainer level access to the Build mirror of `omnibus-gitlab` project. |
0 commit comments