mirror of
https://github.com/gravitational/teleport.git
synced 2026-09-21 14:35:22 +08:00
Remove support for legacy (Amazon Linux 2) AMIs (#36153)
Legacy (Amazon Linux 2) AMIs are deprecated and no longer supported as of Teleport 15. Ref #34282.
This commit is contained in:
+1
-73
@@ -1607,78 +1607,6 @@ image_pull_secrets:
|
||||
# Generated at dronegen/gha.go (main.ghaMultiBuildPipeline)
|
||||
################################################
|
||||
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: build-legacy-amis
|
||||
trigger:
|
||||
event:
|
||||
include:
|
||||
- tag
|
||||
ref:
|
||||
include:
|
||||
- refs/tags/v*
|
||||
repo:
|
||||
include:
|
||||
- gravitational/*
|
||||
workspace:
|
||||
path: /go
|
||||
clone:
|
||||
disable: true
|
||||
depends_on:
|
||||
- build-linux-amd64
|
||||
- build-linux-amd64-fips
|
||||
steps:
|
||||
- name: Check out code
|
||||
image: docker:git
|
||||
pull: if-not-exists
|
||||
commands:
|
||||
- mkdir -pv "/go/src/github.com/gravitational/teleport"
|
||||
- cd "/go/src/github.com/gravitational/teleport"
|
||||
- git init
|
||||
- git remote add origin ${DRONE_REMOTE_URL}
|
||||
- git fetch origin --tags
|
||||
- git checkout -qf "${DRONE_COMMIT_SHA}"
|
||||
- mkdir -m 0700 /root/.ssh && echo "$GITHUB_PRIVATE_KEY" > /root/.ssh/id_rsa &&
|
||||
chmod 600 /root/.ssh/id_rsa
|
||||
- ssh-keyscan -H github.com > /root/.ssh/known_hosts 2>/dev/null && chmod 600 /root/.ssh/known_hosts
|
||||
- git submodule update --init e
|
||||
- mkdir -pv /go/cache
|
||||
- rm -f /root/.ssh/id_rsa
|
||||
environment:
|
||||
GITHUB_PRIVATE_KEY:
|
||||
from_secret: GITHUB_PRIVATE_KEY
|
||||
- name: Delegate build to GitHub
|
||||
image: golang:1.18-alpine
|
||||
pull: if-not-exists
|
||||
commands:
|
||||
- cd "/go/src/github.com/gravitational/teleport/build.assets/tooling"
|
||||
- 'go run ./cmd/gh-trigger-workflow -owner ${DRONE_REPO_OWNER} -repo teleport.e
|
||||
-tag-workflow -timeout 2h30m0s -workflow release-teleport-legacy-amis.yaml -workflow-ref=${DRONE_TAG}
|
||||
-input oss-teleport-repo=${DRONE_REPO} -input oss-teleport-ref=${DRONE_TAG} '
|
||||
environment:
|
||||
GHA_APP_KEY:
|
||||
from_secret: GITHUB_WORKFLOW_APP_PRIVATE_KEY
|
||||
- name: Send Slack notification
|
||||
image: plugins/slack:1.4.1
|
||||
settings:
|
||||
template: |-
|
||||
*✘ Failed:* `{{ build.event }}` / `${DRONE_STAGE_NAME}` / <{{ build.link }}|Build: #{{ build.number }}>
|
||||
Author: <https://github.com/{{ build.author }}|{{ build.author }}> Repo: <https://github.com/{{ repo.owner }}/{{ repo.name }}/|{{ repo.owner }}/{{ repo.name }}> Branch: <https://github.com/{{ repo.owner }}/{{ repo.name }}/commits/{{ build.branch }}|{{ build.branch }}> Commit: <https://github.com/{{ repo.owner }}/{{ repo.name }}/commit/{{ build.commit }}|{{ truncate build.commit 8 }}>
|
||||
webhook:
|
||||
from_secret: SLACK_WEBHOOK_DEV_TELEPORT
|
||||
when:
|
||||
status:
|
||||
- failure
|
||||
image_pull_secrets:
|
||||
- DOCKERHUB_CREDENTIALS
|
||||
|
||||
---
|
||||
################################################
|
||||
# Generated using dronegen, do not edit by hand!
|
||||
# Use 'make dronegen' to update.
|
||||
# Generated at dronegen/gha.go (main.ghaMultiBuildPipeline)
|
||||
################################################
|
||||
|
||||
kind: pipeline
|
||||
type: kubernetes
|
||||
name: build-oci
|
||||
@@ -12048,6 +11976,6 @@ image_pull_secrets:
|
||||
- DOCKERHUB_CREDENTIALS
|
||||
---
|
||||
kind: signature
|
||||
hmac: 4ebe6803bd4211a77094240d8e91c2cc9ac7e9b97956e277fbfa3b5e52962fdd
|
||||
hmac: 759cdb197a5962b5bbd5f2e21bffb709d04429e28e18f07e0894d78d12073450
|
||||
|
||||
...
|
||||
|
||||
@@ -150,6 +150,15 @@ naming scheme for these AMIs has been changed to include the architecture.
|
||||
- Previous naming scheme: `teleport-oss-14.0.0-$TIMESTAMP`
|
||||
- New naming scheme: `teleport-oss-15.0.0-x86_64-$TIMESTAMP`
|
||||
|
||||
##### Legacy Amazon Linux 2 AMIs
|
||||
|
||||
Teleport-provided Amazon Linux 2 AMIs were deprecated, and Teleport 14 is the
|
||||
last version to produce such legacy AMIs. With Teleport 15's release, only
|
||||
the newer hardened Amazon Linux 2023 AMIs will be produced.
|
||||
|
||||
The legacy AMIs will continue to be published for Teleport 13 and 14 throughout
|
||||
the remainder of these releases' lifecycle.
|
||||
|
||||
## 14.0.0 (09/20/23)
|
||||
|
||||
Teleport 14 brings the following new major features and improvements:
|
||||
|
||||
+4
-90
@@ -1,112 +1,26 @@
|
||||
# VPC ID used for builds
|
||||
BUILD_VPC_ID ?=
|
||||
|
||||
# VPC subnet used for builds
|
||||
BUILD_SUBNET_ID ?=
|
||||
|
||||
# Public AMI name
|
||||
PUBLIC_AMI_NAME ?=
|
||||
|
||||
# Default build region
|
||||
AWS_REGION ?= us-west-2
|
||||
|
||||
# Teleport version
|
||||
# This must be a _released_ version of Teleport, i.e. one which has binaries
|
||||
# available for download on https://gravitational.com/teleport/download
|
||||
# available for download on https://goteleport.com/download
|
||||
# Unreleased versions will fail to build.
|
||||
TELEPORT_VERSION ?= 14.3.0
|
||||
|
||||
# Teleport UID is the UID of a non-privileged 'teleport' user
|
||||
TELEPORT_UID ?= 1007
|
||||
|
||||
# Instance type to build the AMI on
|
||||
INSTANCE_TYPE ?= t2.medium
|
||||
|
||||
# Use comma-separated values without spaces for multiple regions
|
||||
# For now, limit AMI publishing to non opt-in regions
|
||||
# https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-regions-availability-zones.html
|
||||
# You can get this with $(AWS_DEFAULT_REGION=us-west-2 aws ec2 describe-regions | jq -r '.Regions | map(.RegionName) | join(",")')
|
||||
DESTINATION_REGIONS ?= eu-north-1,ap-south-1,eu-west-3,eu-west-2,eu-west-1,ap-northeast-3,ap-northeast-2,ap-northeast-1,sa-east-1,ca-central-1,ap-southeast-1,ap-southeast-2,eu-central-1,us-east-1,us-east-2,us-west-1,us-west-2
|
||||
DESTINATION_REGIONS ?= ap-northeast-1,ap-northeast-2,ap-northeast-3,ap-south-1,ap-southeast-1,ap-southeast-2,ca-central-1,eu-central-1,eu-north-1,eu-west-1,eu-west-2,eu-west-3,sa-east-1,us-east-1,us-east-2,us-west-1,us-west-2
|
||||
|
||||
# Generate timestamp for builds
|
||||
BUILD_TIMESTAMP := $(shell TZ=UTC /bin/date "+%Y%m%d-%H%M%S%Z")
|
||||
|
||||
# Telegraf version
|
||||
TELEGRAF_VERSION ?= 1.9.3
|
||||
|
||||
# InfluxDB version
|
||||
INFLUXDB_VERSION ?= 1.8.5
|
||||
|
||||
# Grafana version
|
||||
GRAFANA_VERSION ?= 9.0.7
|
||||
|
||||
# AWS account ID which hosts the public Teleport AMIs
|
||||
AWS_ACCOUNT_ID ?= 126027368216
|
||||
AWS_ACCOUNT_ID ?= 146628656107
|
||||
export
|
||||
|
||||
|
||||
# Build local 'debug' AMI
|
||||
.PHONY: oss
|
||||
oss: TELEPORT_TYPE=oss
|
||||
oss: check-vars
|
||||
oss:
|
||||
@echo "Building image $(TELEPORT_VERSION) $(TELEPORT_TYPE)"
|
||||
@echo "BUILD_TIMESTAMP=$(BUILD_TIMESTAMP)"
|
||||
mkdir -p files/build
|
||||
packer build -force -var build_timestamp=$(BUILD_TIMESTAMP) -only teleport-aws-linux -var destination_regions=$(AWS_REGION) single-ami.json
|
||||
@echo "$(BUILD_TIMESTAMP)" > files/build/oss_build_timestamp.txt
|
||||
|
||||
# Build named 'production' AMI and marketplace version
|
||||
.PHONY: oss-ci-build
|
||||
oss-ci-build: TELEPORT_TYPE=oss
|
||||
oss-ci-build: check-vars
|
||||
oss-ci-build:
|
||||
@echo "Building image $(TELEPORT_VERSION) $(TELEPORT_TYPE) via CI"
|
||||
@echo "Public AMI name: $(PUBLIC_AMI_NAME)"
|
||||
@echo "BUILD_TIMESTAMP=$(BUILD_TIMESTAMP)"
|
||||
mkdir -p files/build
|
||||
packer build -force -var ami_name=$(PUBLIC_AMI_NAME) -var build_timestamp=$(BUILD_TIMESTAMP) -except teleport-aws-linux-fips single-ami.json
|
||||
@echo "$(BUILD_TIMESTAMP)" > files/build/oss_build_timestamp.txt
|
||||
|
||||
.PHONY: change-amis-to-public-oss
|
||||
change-amis-to-public-oss:
|
||||
@echo "Making OSS AMIs public"
|
||||
bash files/make-amis-public.sh oss $(DESTINATION_REGIONS)
|
||||
|
||||
# Build local 'debug' AMI
|
||||
.PHONY: ent
|
||||
ent: TELEPORT_TYPE=ent
|
||||
ent: check-vars
|
||||
@echo "Building image $(TELEPORT_VERSION) $(TELEPORT_TYPE)"
|
||||
@echo "BUILD_TIMESTAMP=$(BUILD_TIMESTAMP)"
|
||||
mkdir -p files/build
|
||||
packer build -force -var build_timestamp=$(BUILD_TIMESTAMP) -only teleport-aws-linux -var destination_regions=$(AWS_REGION) single-ami.json
|
||||
@echo "$(BUILD_TIMESTAMP)" > files/build/ent_build_timestamp.txt
|
||||
|
||||
# Build named 'production' AMI and marketplace version
|
||||
.PHONY: ent-ci-build
|
||||
ent-ci-build: TELEPORT_TYPE=ent
|
||||
ent-ci-build: check-vars
|
||||
ent-ci-build:
|
||||
@echo "Building image $(TELEPORT_VERSION) $(TELEPORT_TYPE) via CI"
|
||||
@echo "Public AMI name: $(PUBLIC_AMI_NAME)"
|
||||
@echo "FIPS AMI name: $(FIPS_AMI_NAME)"
|
||||
@echo "BUILD_TIMESTAMP=$(BUILD_TIMESTAMP)"
|
||||
mkdir -p files/build
|
||||
packer build -force -var ami_name=$(PUBLIC_AMI_NAME) -var fips_ami_name=$(FIPS_AMI_NAME) -var build_timestamp=$(BUILD_TIMESTAMP) single-ami.json
|
||||
@echo "$(BUILD_TIMESTAMP)" > files/build/ent_build_timestamp.txt
|
||||
|
||||
.PHONY: change-amis-to-public-ent
|
||||
change-amis-to-public-ent:
|
||||
@echo "Making Enterprise AMIs public"
|
||||
bash files/make-amis-public.sh ent $(DESTINATION_REGIONS)
|
||||
|
||||
.PHONY: change-amis-to-public-ent-fips
|
||||
change-amis-to-public-ent-fips:
|
||||
@echo "Making FIPS Enterprise AMIs public"
|
||||
bash files/make-amis-public.sh ent-fips $(DESTINATION_REGIONS)
|
||||
|
||||
|
||||
# Other helpers
|
||||
.PHONY: check-vars
|
||||
check-vars:
|
||||
@@ -123,7 +37,7 @@ update-ami-ids-terraform:
|
||||
@echo -e "\nUpdating Enterprise FIPS Terraform image IDs"
|
||||
go run ./cmd/update-ami-id --aws-account $(AWS_ACCOUNT_ID) --regions $(DESTINATION_REGIONS) --version $(TELEPORT_VERSION) --type ent-fips
|
||||
|
||||
# you will need the Github 'gh' CLI installed and working to be able to use this target
|
||||
# you will need the GitHub 'gh' CLI installed and working to be able to use this target
|
||||
# https://github.com/cli/cli/releases/latest
|
||||
AUTO_BRANCH_NAME := "ami-auto-branch-$(shell date +%s)"
|
||||
MAKEFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
||||
|
||||
@@ -8,8 +8,8 @@ Instructions for building Teleport AWS AMIs.
|
||||
|
||||
AWS CLI and Packer are required to build Teleport AMIs.
|
||||
|
||||
Minimum versions:
|
||||
awscli == 1.14
|
||||
Minimum versions:
|
||||
awscli == 1.14
|
||||
packer == v1.4.0
|
||||
|
||||
On macOS:
|
||||
@@ -35,11 +35,7 @@ Follow instructions at: https://www.packer.io/docs/install/index.html
|
||||
|
||||
| Param | Description |
|
||||
|---------------------|-------------------------------------------------------------------------------------------------------------|
|
||||
| BUILD_VPC_ID | With the region you selected in step 3, create or use an existing VPC. ex. `vpc-xxxxxxxx`. |
|
||||
| BUILD_SUBNET_ID | Within the VPC above, select a subnet. ex. `subnet-xxxxxxxx` |
|
||||
| AWS_REGION | Region you selected in step 3. ex. `us-east-1` |
|
||||
| TELEPORT_VERSION | Teleport version. See [Teleport releases](https://github.com/gravitational/teleport/releases). ex. `4.2.10` |
|
||||
| INSTANCE_TYPE | The instance type used for the build. ex. `t2.micro` |
|
||||
| DESTINATION_REGIONS | The regions the AMI will be replicated to. ex. `us-east-1,us-east-2` |
|
||||
|
||||
5. Run
|
||||
@@ -47,7 +43,7 @@ Follow instructions at: https://www.packer.io/docs/install/index.html
|
||||
make oss
|
||||
```
|
||||
|
||||
6. Once complete, your AMI should be available, in the regions you specified, with the name `teleport-debug-ami-<type>-<version>`. (e.g. teleport-debug-ami-oss-4.2.10)
|
||||
6. Once complete, your AMI should be available, in the regions you specified, with the name `teleport-<type>-<version>-<arch>`. (e.g. teleport-oss-4.2.10-arm64)
|
||||
|
||||
## Usage instructions
|
||||
|
||||
|
||||
@@ -43,40 +43,56 @@ func main() {
|
||||
|
||||
ctx := context.Background()
|
||||
|
||||
imageIDs := make(map[string]string)
|
||||
imageIDs := make(map[string]map[string]string)
|
||||
|
||||
for _, region := range strings.Split(*regions, ",") {
|
||||
stub := fmt.Sprintf("gravitational-teleport-ami-%v-%v", *amiType, *version)
|
||||
if *amiType == "ent-fips" {
|
||||
stub = fmt.Sprintf("gravitational-teleport-ami-ent-%v-fips", *version)
|
||||
}
|
||||
for _, arch := range []string{"x86_64", "arm64"} {
|
||||
edition := *amiType
|
||||
fips := "false"
|
||||
if *amiType == "ent-fips" {
|
||||
edition = "ent"
|
||||
fips = "true"
|
||||
}
|
||||
|
||||
cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion(region))
|
||||
if err != nil {
|
||||
log.Fatalf("could not load AWS config: %v", err)
|
||||
}
|
||||
cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion(region))
|
||||
if err != nil {
|
||||
log.Fatalf("could not load AWS config for %q: %v", region, err)
|
||||
}
|
||||
|
||||
client := ec2.NewFromConfig(cfg)
|
||||
resp, err := client.DescribeImages(ctx, &ec2.DescribeImagesInput{
|
||||
Filters: []types.Filter{
|
||||
{Name: aws.String("name"), Values: []string{stub}},
|
||||
{Name: aws.String("is-public"), Values: []string{"true"}},
|
||||
},
|
||||
Owners: []string{*account},
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("describe images: %v", err)
|
||||
}
|
||||
client := ec2.NewFromConfig(cfg)
|
||||
resp, err := client.DescribeImages(ctx, &ec2.DescribeImagesInput{
|
||||
Filters: []types.Filter{
|
||||
{Name: aws.String("name"), Values: []string{"teleport-*"}},
|
||||
{Name: aws.String("is-public"), Values: []string{"true"}},
|
||||
{Name: aws.String("tag:Architecture"), Values: []string{arch}},
|
||||
{Name: aws.String("tag:TeleportVersion"), Values: []string{*version}},
|
||||
{Name: aws.String("tag:TeleportEdition"), Values: []string{edition}},
|
||||
{Name: aws.String("tag:TeleportFipsEnabled"), Values: []string{fips}},
|
||||
{Name: aws.String("tag:BuildType"), Values: []string{"production"}},
|
||||
},
|
||||
Owners: []string{*account},
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("describe images in %q: %v", region, err)
|
||||
}
|
||||
|
||||
if l := len(resp.Images); l != 1 {
|
||||
log.Fatalf("expected 1 image for %v, got %v", stub, l)
|
||||
}
|
||||
if l := len(resp.Images); l != 1 {
|
||||
if l == 0 {
|
||||
log.Printf("missing image for region %q type %q ver %q arch %q", region, *amiType, *version, arch)
|
||||
continue
|
||||
}
|
||||
log.Fatalf("expected 1 image for region %q type %q ver %q arch %q, got %v", region, *amiType, *version, arch, l)
|
||||
}
|
||||
|
||||
id := resp.Images[0].ImageId
|
||||
if id == nil {
|
||||
log.Fatalf("image %v is missing ID", stub)
|
||||
id := resp.Images[0].ImageId
|
||||
if id == nil {
|
||||
log.Fatalf("image for region %q type %q ver %q arch %q is missing ID", region, *amiType, *version, arch)
|
||||
}
|
||||
if _, ok := imageIDs[region]; !ok {
|
||||
imageIDs[region] = make(map[string]string)
|
||||
}
|
||||
imageIDs[region][arch] = *id
|
||||
}
|
||||
imageIDs[region] = *id
|
||||
}
|
||||
|
||||
tfDir := filepath.Join("..", "..", "examples", "aws", "terraform")
|
||||
@@ -96,7 +112,7 @@ func main() {
|
||||
// change version in TF_VAR_ami_name strings
|
||||
for _, tfMode := range tfModes {
|
||||
log.Printf("Updating version in README for %v", tfMode)
|
||||
re, err := regexp.Compile(fmt.Sprintf(`gravitational-teleport-ami-%s-([0-9.]+)`, *amiType))
|
||||
re, err := regexp.Compile(fmt.Sprintf(`teleport-%s-([0-9.]+)`, *amiType))
|
||||
if err != nil {
|
||||
log.Fatalf("invalid regexp for type %q: %v", *amiType, err)
|
||||
}
|
||||
@@ -107,7 +123,7 @@ func main() {
|
||||
log.Fatalf("could not find README.md for terraform mode %q: %v", tfMode, err)
|
||||
}
|
||||
|
||||
replaced := re.ReplaceAll(b, []byte(fmt.Sprintf("gravitational-teleport-ami-%s-%s", *amiType, *version)))
|
||||
replaced := re.ReplaceAll(b, []byte(fmt.Sprintf("teleport-%s-%s", *amiType, *version)))
|
||||
if err := os.WriteFile(readme, replaced, 0644); err != nil {
|
||||
log.Fatalf("could not update %v: %v", readme, err)
|
||||
}
|
||||
@@ -120,18 +136,23 @@ func main() {
|
||||
}
|
||||
|
||||
for _, region := range strings.Split(*regions, ",") {
|
||||
newAMI := imageIDs[region]
|
||||
for _, arch := range []string{"x86_64", "arm64"} {
|
||||
newAMI := imageIDs[region][arch]
|
||||
if newAMI == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
ts := AMIType(*amiType)
|
||||
re, err := regexp.Compile(fmt.Sprintf(`(?m)^# %s v(.*) %s: (ami-.*)$`, region, ts.FriendlyType()))
|
||||
if err != nil {
|
||||
log.Fatalf("invalid regexp for region %q type %q: %v", region, *amiType, err)
|
||||
ts := AMIType(*amiType)
|
||||
re, err := regexp.Compile(fmt.Sprintf(`(?m)^# %s v(.*) %s %s: (ami-.*)$`, region, arch, ts.FriendlyType()))
|
||||
if err != nil {
|
||||
log.Fatalf("invalid regexp for region %q type %q arch %q: %v", region, *amiType, arch, err)
|
||||
}
|
||||
|
||||
repl := fmt.Sprintf(`# %s v%s %s %s: %s`, region, *version, arch, ts.FriendlyType(), newAMI)
|
||||
md = re.ReplaceAll(md, []byte(repl))
|
||||
|
||||
log.Printf("[%v %v: %v] -> %v", *amiType, arch, region, newAMI)
|
||||
}
|
||||
|
||||
repl := fmt.Sprintf(`# %s v%s %s: %s`, region, *version, ts.FriendlyType(), newAMI)
|
||||
md = re.ReplaceAll(md, []byte(repl))
|
||||
|
||||
log.Printf("[%v: %v] -> %v", *amiType, region, newAMI)
|
||||
}
|
||||
if err := os.WriteFile(tfPath, md, 0644); err != nil {
|
||||
log.Fatalf("could not update %v: %v", tfPath, err)
|
||||
|
||||
@@ -1,124 +0,0 @@
|
||||
#!/bin/bash
|
||||
if [[ "${DEBUG:-false}" == "true" ]]; then
|
||||
set -x
|
||||
fi
|
||||
|
||||
# Update packages
|
||||
yum -y update
|
||||
|
||||
# Install uuid used for random token generation, nginx for grafana frontend
|
||||
yum install -y uuid libffi-devel gcc openssl-devel adduser libfontconfig
|
||||
|
||||
# Install nginx
|
||||
amazon-linux-extras install nginx1
|
||||
|
||||
# Set some curl options so that temporary failures get retried
|
||||
# More info: https://ec.haxx.se/usingcurl-timeouts.html
|
||||
CURL_OPTS="-L --retry 100 --retry-delay 0 --connect-timeout 10 --max-time 300"
|
||||
|
||||
# Install telegraf to collect stats from influx
|
||||
curl ${CURL_OPTS} -o /tmp/telegraf.rpm "https://dl.influxdata.com/telegraf/releases/telegraf-${TELEGRAF_VERSION}-1.x86_64.rpm"
|
||||
yum install -y /tmp/telegraf.rpm
|
||||
rm -f /tmp/telegraf.rpm
|
||||
|
||||
# Install grafana
|
||||
curl ${CURL_OPTS} -o /tmp/grafana.rpm "https://dl.grafana.com/oss/release/grafana-${GRAFANA_VERSION}-1.x86_64.rpm"
|
||||
yum install -y /tmp/grafana.rpm
|
||||
rm -f /tmp/grafana.rpm
|
||||
|
||||
# Install InfluxDB
|
||||
curl $CURL_OPTS -o /tmp/influxdb.rpm "https://dl.influxdata.com/influxdb/releases/influxdb-${INFLUXDB_VERSION}.x86_64.rpm"
|
||||
yum install -y /tmp/influxdb.rpm
|
||||
rm -f /tmp/influxdb.rpm
|
||||
|
||||
# Install certbot to rotate certificates
|
||||
# Certbot is a tool to request letsencrypt certificates,
|
||||
# remove it if you don't need letsencrypt.
|
||||
yum -y install python3 python3-pip
|
||||
# pip needs to be upgraded to work around issues with the 'cryptography' package
|
||||
pip3 install --upgrade pip
|
||||
# add new pip3 install location to PATH temporarily
|
||||
export PATH=/usr/local/bin:$PATH
|
||||
pip3 install -I awscli requests
|
||||
pip3 install certbot certbot-dns-route53
|
||||
|
||||
# Create teleport user. It is helpful to share the same UID
|
||||
# to have the same permissions on shared NFS volumes across auth servers and for consistency.
|
||||
useradd -r teleport -u ${TELEPORT_UID} -d /var/lib/teleport
|
||||
# Add teleport to adm group to read and write logs
|
||||
usermod -a -G adm teleport
|
||||
|
||||
# Setup teleport run dir for pid files
|
||||
mkdir -p /run/teleport/ /var/lib/teleport /etc/teleport.d
|
||||
chmod 0700 /var/lib/teleport
|
||||
chown -R teleport:adm /run/teleport /var/lib/teleport /etc/teleport.d/
|
||||
|
||||
# Download and install teleport binaries
|
||||
pushd /tmp || exit
|
||||
# Install the FIPS version of Teleport if /tmp/teleport-fips is present
|
||||
if [ -f /tmp/teleport-fips ]; then
|
||||
TARBALL_FILENAME="/tmp/files/teleport-ent-v${TELEPORT_VERSION}-linux-amd64-fips-bin.tar.gz"
|
||||
# Use a Teleport artifact uploaded from the build machine, if present
|
||||
if [ -f ${TARBALL_FILENAME} ]; then
|
||||
echo "Found locally uploaded Enterprise FIPS tarball ${TARBALL_FILENAME}, moving to /tmp/teleport.tar.gz"
|
||||
mv ${TARBALL_FILENAME} /tmp/teleport.tar.gz
|
||||
else
|
||||
echo "Installing Enterprise Teleport version ${TELEPORT_VERSION} with FIPS support"
|
||||
curl ${CURL_OPTS} -o teleport.tar.gz https://cdn.teleport.dev/teleport-ent-v${TELEPORT_VERSION}-linux-amd64-fips-bin.tar.gz
|
||||
fi
|
||||
tar -xzf teleport.tar.gz
|
||||
cp teleport-ent/tctl teleport-ent/tsh teleport-ent/teleport teleport-ent/tbot /usr/local/bin
|
||||
rm -rf /tmp/teleport.tar.gz /tmp/teleport-ent
|
||||
# add --fips to 'teleport start' commands in FIPS mode
|
||||
sed -i -E "s_ExecStart=/usr/local/bin/teleport start(.*)_ExecStart=/usr/local/bin/teleport start --fips\1_g" /etc/systemd/system/teleport*.service
|
||||
# https://aws.amazon.com/blogs/publicsector/enabling-fips-mode-amazon-linux-2/
|
||||
yum install -y dracut-fips
|
||||
dracut -f
|
||||
/sbin/grubby --update-kernel=ALL --args="fips=1"
|
||||
else
|
||||
if [[ "${TELEPORT_TYPE}" == "oss" ]]; then
|
||||
TARBALL_FILENAME="/tmp/files/teleport-v${TELEPORT_VERSION}-linux-amd64-bin.tar.gz"
|
||||
# Use a Teleport artifact uploaded from the build machine, if present
|
||||
if [ -f ${TARBALL_FILENAME} ]; then
|
||||
echo "Found locally uploaded OSS tarball ${TARBALL_FILENAME}, moving to /tmp/teleport.tar.gz"
|
||||
mv ${TARBALL_FILENAME} /tmp/teleport.tar.gz
|
||||
else
|
||||
echo "Installing OSS Teleport version ${TELEPORT_VERSION}"
|
||||
curl ${CURL_OPTS} -o teleport.tar.gz https://cdn.teleport.dev/teleport-v${TELEPORT_VERSION}-linux-amd64-bin.tar.gz
|
||||
fi
|
||||
tar -xzf teleport.tar.gz
|
||||
cp teleport/tctl teleport/tsh teleport/teleport teleport/tbot /usr/local/bin
|
||||
rm -rf /tmp/teleport.tar.gz /tmp/teleport
|
||||
else
|
||||
TARBALL_FILENAME="/tmp/files/teleport-ent-v${TELEPORT_VERSION}-linux-amd64-bin.tar.gz"
|
||||
# Use a Teleport artifact uploaded from the build machine, if present
|
||||
if [ -f ${TARBALL_FILENAME} ]; then
|
||||
echo "Found locally uploaded Enterprise tarball ${TARBALL_FILENAME}, moving to /tmp/teleport.tar.gz"
|
||||
mv ${TARBALL_FILENAME} /tmp/teleport.tar.gz
|
||||
else
|
||||
echo "Installing Enterprise Teleport version ${TELEPORT_VERSION}"
|
||||
curl ${CURL_OPTS} -o teleport.tar.gz https://cdn.teleport.dev/teleport-ent-v${TELEPORT_VERSION}-linux-amd64-bin.tar.gz
|
||||
fi
|
||||
tar -xzf teleport.tar.gz
|
||||
cp teleport-ent/tctl teleport-ent/tsh teleport-ent/teleport teleport-ent/tbot /usr/local/bin
|
||||
rm -rf /tmp/teleport.tar.gz /tmp/teleport-ent
|
||||
fi
|
||||
fi
|
||||
popd || exit
|
||||
|
||||
# Add /usr/local/bin to path used by sudo (so 'sudo tctl users add' will work as per the docs)
|
||||
echo "Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin" > /etc/sudoers.d/secure_path
|
||||
|
||||
# Clean up the authorized keys not used
|
||||
rm -f /root/.ssh/authorized_keys
|
||||
rm -f /home/ec2-user/.ssh/authorized_keys
|
||||
|
||||
# Clean up copied temp files
|
||||
rm -rf /tmp/files
|
||||
|
||||
# Clean up all packages
|
||||
yum -y clean all
|
||||
|
||||
# Enable Teleport services to start on boot
|
||||
systemctl enable teleport-generate-config.service
|
||||
systemctl enable teleport.service
|
||||
@@ -1,62 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
# Exit if required parameters not provided
|
||||
if [[ "$1" == "" ]] || [[ "$2" == "" ]]; then
|
||||
echo "Usage: $(basename $0) [oss/ent/ent-fips] [comma-separated-destination-region-list]"
|
||||
exit 1
|
||||
else
|
||||
RUN_MODE="$1"
|
||||
REGION_LIST="$2"
|
||||
fi
|
||||
|
||||
# Note: to run this script on MacOS you will need to install coreutils (using Brew), then edit the PATH in your shell's
|
||||
# RC file to use coreutils versions first (something like "export PATH=/usr/local/opt/coreutils/libexec/gnubin:$PATH")
|
||||
ABSPATH=$(readlink -f "$0")
|
||||
SCRIPT_DIR=$(dirname "${ABSPATH}")
|
||||
BUILD_DIR=$(readlink -f "${SCRIPT_DIR}/build")
|
||||
|
||||
AMI_TAG="production"
|
||||
OUTFILE="amis.txt"
|
||||
BUILD_TIMESTAMP_FILENAME="${RUN_MODE}_build_timestamp.txt"
|
||||
NAME_FILTER="*${RUN_MODE}*"
|
||||
# Conditionally set variables for FIPS
|
||||
if [[ "${RUN_MODE}" == "ent-fips" ]]; then
|
||||
AMI_TAG="production-fips"
|
||||
OUTFILE="amis-fips.txt"
|
||||
BUILD_TIMESTAMP_FILENAME="ent_build_timestamp.txt"
|
||||
NAME_FILTER="*-fips"
|
||||
fi
|
||||
|
||||
# Remove existing AMI ID file if present
|
||||
if [ -f "${BUILD_DIR}/${OUTFILE}.txt" ]; then
|
||||
rm -f "${BUILD_DIR}/${OUTFILE}.txt"
|
||||
fi
|
||||
|
||||
# Read build timestamp from file
|
||||
TIMESTAMP_FILE="${BUILD_DIR}/${BUILD_TIMESTAMP_FILENAME}"
|
||||
if [ ! -f "${TIMESTAMP_FILE}" ]; then
|
||||
echo "Cannot find \"${TIMESTAMP_FILE}\""
|
||||
exit 1
|
||||
fi
|
||||
BUILD_TIMESTAMP=$(<"${TIMESTAMP_FILE}")
|
||||
|
||||
# Iterate through AMIs
|
||||
IFS=","
|
||||
for REGION in ${REGION_LIST}; do
|
||||
AMI_ID=$(aws ec2 describe-images --region ${REGION} --filters "Name=name,Values=${NAME_FILTER}" "Name=tag:BuildTimestamp,Values=${BUILD_TIMESTAMP}" "Name=tag:BuildType,Values=${AMI_TAG}"| jq -r '.Images[0].ImageId')
|
||||
if [[ "${AMI_ID}" == "" || "${AMI_ID}" == "null" ]]; then
|
||||
echo "Error: cannot get AMI ID for ${REGION}"
|
||||
exit 2
|
||||
fi
|
||||
# Make each AMI public (set launchPermission to 'all')
|
||||
aws ec2 modify-image-attribute --region ${REGION} --image-id ${AMI_ID} --launch-permission "Add=[{Group=all}]"
|
||||
# Check that the AMI was successfully made public by listing it again
|
||||
# The output will be "true" if the AMI is public and "" if it doesn't exist or is private
|
||||
PUBLIC_CHECK=$(aws ec2 describe-images --region ${REGION} --filters "Name=image-id,Values=${AMI_ID}" "Name=is-public,Values=true" | jq -r '.Images[].Public')
|
||||
if [[ "${PUBLIC_CHECK}" == "true" ]]; then
|
||||
echo "AMI ID ${AMI_ID} for ${REGION} set to public"
|
||||
else
|
||||
echo "WARNING: There was an error making ${AMI_ID} in ${REGION} public!"
|
||||
fi
|
||||
done
|
||||
@@ -1,92 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Source variables from user-data
|
||||
. /etc/teleport.d/conf
|
||||
|
||||
# Enable/start grafana
|
||||
systemctl enable grafana-server
|
||||
systemctl start grafana-server
|
||||
|
||||
# Enable/start influxdb
|
||||
systemctl enable influxdb.service
|
||||
systemctl restart influxdb.service
|
||||
|
||||
# Import dashboard and data source
|
||||
until curl --output /dev/null --silent --head --fail http://localhost:3000; do
|
||||
echo "waiting for grafana to respond"
|
||||
sleep 5
|
||||
done
|
||||
|
||||
echo "Grafana is up setting up dashboards and data sources"
|
||||
|
||||
GRAFANA_PASS="$(aws ssm get-parameter --with-decryption --name /teleport/${TELEPORT_CLUSTER_NAME}/grafana_pass --region ${EC2_REGION} --query 'Parameter.Value' --output text)"
|
||||
|
||||
# if the password hasn't been changed from the default, set it to a random value (for security) and then also write that
|
||||
# parameter back to SSM so the user can find out what it is
|
||||
if [[ "${GRAFANA_PASS}" == "CHANGE_THIS_VALUE" ]]; then
|
||||
GRAFANA_PASS=$(hexdump -n 16 -e '4/4 "%08X" 1 "\n"' /dev/urandom)
|
||||
aws ssm put-parameter --name /teleport/${TELEPORT_CLUSTER_NAME}/grafana_pass --region ${EC2_REGION} --value "${GRAFANA_PASS}" --type SecureString --overwrite
|
||||
echo "Grafana password has been set to ${GRAFANA_PASS} as it wasn't changed from the default CHANGE_THIS_VALUE"
|
||||
fi
|
||||
|
||||
# Change grafana password
|
||||
curl -X PUT -u admin:admin -H 'Content-Type: application/json' -d "{
|
||||
\"oldPassword\": \"admin\",
|
||||
\"newPassword\": \"${GRAFANA_PASS}\",
|
||||
\"confirmNew\": \"${GRAFANA_PASS}\"
|
||||
}" http://127.0.0.1:3000/api/user/password
|
||||
|
||||
# Set up default input
|
||||
curl -s -H "Content-Type: application/json" \
|
||||
-XPOST -u admin:${GRAFANA_PASS} http://127.0.0.1:3000/api/datasources \
|
||||
-d @- <<EOF
|
||||
{
|
||||
"name": "InfluxDB",
|
||||
"type": "influxdb",
|
||||
"access": "proxy",
|
||||
"url": "http://127.0.0.1:8086",
|
||||
"database": "telegraf"
|
||||
}
|
||||
EOF
|
||||
|
||||
# Download and setup teleport dashboard
|
||||
aws s3 --region=${EC2_REGION} cp s3://${TELEPORT_S3_BUCKET}/health-dashboard.json /tmp/health-dashboard.json
|
||||
curl -X POST -u admin:${GRAFANA_PASS} -H 'Content-Type: application/json' -d @/tmp/health-dashboard.json http://127.0.0.1:3000/api/dashboards/db
|
||||
# Star dashboard
|
||||
curl -X POST -u admin:${GRAFANA_PASS} -H 'X-Grafana-Org-Id: 1' http://127.0.0.1:3000/api/user/stars/dashboard/1
|
||||
# Set home/default dashboard
|
||||
curl -X PUT -u admin:${GRAFANA_PASS} -H 'X-Grafana-Org-Id: 1' -H 'Content-Type: application/json' -d "{
|
||||
\"theme\": \"\",
|
||||
\"homeDashboardId\":1,
|
||||
\"timezone\":\"utc\"
|
||||
}" http://127.0.0.1:3000/api/org/preferences
|
||||
|
||||
# Setup nginx frontend for grafana
|
||||
mkdir -p /etc/tls/certs
|
||||
cat >/lib/systemd/system/nginx.service <<EOF
|
||||
[Unit]
|
||||
Description=A high performance web server and a reverse proxy server
|
||||
Documentation=man:nginx(8)
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
Type=forking
|
||||
PIDFile=/run/nginx.pid
|
||||
ExecStartPre=/bin/aws s3 sync s3://${TELEPORT_S3_BUCKET}/live/${TELEPORT_DOMAIN_NAME} /etc/tls/certs
|
||||
ExecStartPre=/usr/sbin/nginx -t -q -g 'daemon on; master_process on;'
|
||||
ExecStart=/usr/sbin/nginx -g 'daemon on; master_process on;'
|
||||
ExecReload=/usr/sbin/nginx -g 'daemon on; master_process on;' -s reload
|
||||
ExecStop=-/sbin/start-stop-daemon --quiet --stop --retry QUIT/5 --pidfile /run/nginx.pid
|
||||
TimeoutStopSec=5
|
||||
KillMode=mixed
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
# Update nginx configuration to use TLS and frontend grafana and restart nginx
|
||||
aws s3 --region=${EC2_REGION} cp s3://${TELEPORT_S3_BUCKET}/grafana-nginx.conf /etc/nginx/nginx.conf
|
||||
systemctl daemon-reload
|
||||
systemctl restart nginx --no-block
|
||||
@@ -1,14 +0,0 @@
|
||||
[Unit]
|
||||
Description=Teleport Monitor Setup Service
|
||||
After=network.target cloud-final.service teleport-generate-config.service
|
||||
ConditionPathExists=/etc/teleport.d/role.monitor
|
||||
|
||||
[Service]
|
||||
User=root
|
||||
Group=adm
|
||||
Type=oneshot
|
||||
RuntimeDirectory=teleport
|
||||
ExecStart=/usr/local/bin/teleport-monitor-setup
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
@@ -1,146 +0,0 @@
|
||||
{
|
||||
"variables": {
|
||||
"vpc": "{{env `BUILD_VPC_ID`}}",
|
||||
"subnet": "{{env `BUILD_SUBNET_ID`}}",
|
||||
"aws_region": "{{env `AWS_REGION`}}",
|
||||
"destination_regions": "{{env `DESTINATION_REGIONS`}}",
|
||||
"instance_type": "{{env `INSTANCE_TYPE`}}",
|
||||
"teleport_version": "{{env `TELEPORT_VERSION`}}",
|
||||
"teleport_uid": "{{env `TELEPORT_UID`}}",
|
||||
"teleport_type": "{{env `TELEPORT_TYPE`}}",
|
||||
"telegraf_version": "{{env `TELEGRAF_VERSION`}}",
|
||||
"influxdb_version": "{{env `INFLUXDB_VERSION`}}",
|
||||
"grafana_version": "{{env `GRAFANA_VERSION`}}",
|
||||
"ami_name": "teleport-debug-ami-{{env `TELEPORT_TYPE`}}-{{env `TELEPORT_VERSION`}}",
|
||||
"build_type": "debug"
|
||||
},
|
||||
"builders": [{
|
||||
"name": "teleport-aws-linux",
|
||||
"ami_description": "Gravitational Teleport using Amazon Linux 2 AMI",
|
||||
"type": "amazon-ebs",
|
||||
"region": "{{user `aws_region`}}",
|
||||
"source_ami_filter": {
|
||||
"filters": {
|
||||
"virtualization-type": "hvm",
|
||||
"name": "amzn2-ami-hvm*-ebs",
|
||||
"root-device-type": "ebs"
|
||||
},
|
||||
"owners": ["amazon"],
|
||||
"most_recent": true
|
||||
},
|
||||
"instance_type": "{{user `instance_type`}}",
|
||||
"ssh_username": "ec2-user",
|
||||
"ami_name": "{{user `ami_name` | clean_resource_name}}",
|
||||
"imds_support": "v2.0",
|
||||
"metadata_options": {
|
||||
"http_endpoint": "enabled",
|
||||
"http_tokens": "required",
|
||||
"http_put_response_hop_limit": 2
|
||||
},
|
||||
"ssh_pty" : true,
|
||||
"associate_public_ip_address": true,
|
||||
"vpc_id": "{{user `vpc`}}",
|
||||
"subnet_id": "{{user `subnet`}}",
|
||||
"ami_regions": "{{user `destination_regions`}}",
|
||||
"force_delete_snapshot": "true",
|
||||
"tags": {
|
||||
"Name": "{{user `ami_name`}}",
|
||||
"BuildTimestamp": "{{user `build_timestamp`}}",
|
||||
"BuildType": "production"
|
||||
},
|
||||
"run_tags": {
|
||||
"Name": "{{user `ami_name`}}",
|
||||
"teleport.dev/is_public": "true"
|
||||
},
|
||||
"run_volume_tags": {
|
||||
"Name": "{{user `ami_name`}}"
|
||||
},
|
||||
"snapshot_tags": {
|
||||
"Name": "{{user `ami_name`}}"
|
||||
}
|
||||
},{
|
||||
"name": "teleport-aws-linux-fips",
|
||||
"ami_description": "Gravitational Teleport with FIPS support using Amazon Linux 2 AMI",
|
||||
"type": "amazon-ebs",
|
||||
"region": "{{user `aws_region`}}",
|
||||
"source_ami_filter": {
|
||||
"filters": {
|
||||
"virtualization-type": "hvm",
|
||||
"name": "amzn2-ami-hvm*-ebs",
|
||||
"root-device-type": "ebs"
|
||||
},
|
||||
"owners": ["amazon"],
|
||||
"most_recent": true
|
||||
},
|
||||
"instance_type": "{{user `instance_type`}}",
|
||||
"ssh_username": "ec2-user",
|
||||
"ami_name": "{{user `fips_ami_name` | clean_resource_name}}",
|
||||
"imds_support": "v2.0",
|
||||
"metadata_options": {
|
||||
"http_endpoint": "enabled",
|
||||
"http_tokens": "required",
|
||||
"http_put_response_hop_limit": 2
|
||||
},
|
||||
"ssh_pty" : true,
|
||||
"associate_public_ip_address": true,
|
||||
"vpc_id": "{{user `vpc`}}",
|
||||
"subnet_id": "{{user `subnet`}}",
|
||||
"ami_regions": "{{user `destination_regions`}}",
|
||||
"force_delete_snapshot": "true",
|
||||
"tags": {
|
||||
"Name": "{{user `fips_ami_name`}}",
|
||||
"BuildTimestamp": "{{user `build_timestamp`}}",
|
||||
"BuildType": "production-fips"
|
||||
},
|
||||
"run_tags": {
|
||||
"Name": "{{user `fips_ami_name`}}",
|
||||
"teleport.dev/is_public": "true"
|
||||
},
|
||||
"run_volume_tags": {
|
||||
"Name": "{{user `fips_ami_name`}}"
|
||||
},
|
||||
"snapshot_tags": {
|
||||
"Name": "{{user `fips_ami_name`}}"
|
||||
}
|
||||
}],
|
||||
"provisioners": [{
|
||||
"inline": [
|
||||
"mkdir /tmp/files"
|
||||
],
|
||||
"type": "shell"
|
||||
},{
|
||||
"type": "file",
|
||||
"source": "files/",
|
||||
"destination": "/tmp/files"
|
||||
},{
|
||||
"type": "file",
|
||||
"source": "monitor-files/",
|
||||
"destination": "/tmp/files"
|
||||
},{
|
||||
"inline": [
|
||||
"sudo cp /tmp/files/system/* /etc/systemd/system/",
|
||||
"sudo cp /tmp/files/bin/* /usr/local/bin/"
|
||||
],
|
||||
"type": "shell"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"inline": [
|
||||
"touch /tmp/teleport-fips"
|
||||
],
|
||||
"only": ["teleport-aws-linux-fips"]
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"script": "files/install.sh",
|
||||
"execute_command": "chmod +x {{ .Path }}; echo 'root' | {{.Vars}} sudo -S -E bash -eux '{{.Path}}'",
|
||||
"environment_vars": [
|
||||
"TELEPORT_UID={{user `teleport_uid`}}",
|
||||
"TELEPORT_VERSION={{user `teleport_version`}}",
|
||||
"TELEPORT_TYPE={{user `teleport_type`}}",
|
||||
"TELEGRAF_VERSION={{user `telegraf_version`}}",
|
||||
"INFLUXDB_VERSION={{user `influxdb_version`}}",
|
||||
"GRAFANA_VERSION={{user `grafana_version`}}"
|
||||
]
|
||||
}]
|
||||
}
|
||||
@@ -121,26 +121,6 @@ func tagPipelines() []pipeline {
|
||||
ps = append(ps, darwinTagPipelineGHA())
|
||||
ps = append(ps, windowsTagPipelineGHA())
|
||||
|
||||
ps = append(ps, ghaBuildPipeline(ghaBuildType{
|
||||
pipelineName: "build-legacy-amis",
|
||||
trigger: triggerTag,
|
||||
buildType: buildType{fips: false},
|
||||
dependsOn: []string{
|
||||
"build-linux-amd64",
|
||||
"build-linux-amd64-fips",
|
||||
},
|
||||
workflows: []ghaWorkflow{
|
||||
{
|
||||
name: "release-teleport-legacy-amis.yaml",
|
||||
srcRefVar: "DRONE_TAG",
|
||||
ref: "${DRONE_TAG}",
|
||||
timeout: 150 * time.Minute,
|
||||
shouldTagWorkflow: true,
|
||||
slackOnError: true,
|
||||
},
|
||||
},
|
||||
}))
|
||||
|
||||
ps = append(ps, ghaBuildPipeline(ghaBuildType{
|
||||
pipelineName: "build-oci",
|
||||
trigger: triggerTag,
|
||||
|
||||
+1
-1
Submodule e updated: 82b5dbab5e...623d02ab9f
+104
-53
@@ -1,70 +1,121 @@
|
||||
# Public Teleport AMI IDs
|
||||
|
||||
For your convenience, this is a list of public Teleport AMI IDs which are published by Gravitational. This list
|
||||
is updated when new AMI versions are released.
|
||||
For your convenience, this is a list of public Teleport AMI IDs that are published by Teleport (Gravitational).
|
||||
This list is updated when new AMI versions are released.
|
||||
|
||||
### OSS
|
||||
|
||||
```
|
||||
# eu-north-1 v14.3.0 OSS: ami-0b9dd4f3f180e54d0
|
||||
# ap-south-1 v14.3.0 OSS: ami-0061bb007e74799c5
|
||||
# eu-west-1 v14.3.0 OSS: ami-0afb29bc1c2562b81
|
||||
# eu-west-2 v14.3.0 OSS: ami-034f28c9a79424637
|
||||
# eu-west-3 v14.3.0 OSS: ami-0a5c63f5108939191
|
||||
# ap-northeast-1 v14.3.0 OSS: ami-031c6ec5904831700
|
||||
# ap-northeast-2 v14.3.0 OSS: ami-08ba63c3cf0a344c8
|
||||
# ap-northeast-3 v14.3.0 OSS: ami-0a68442f82e8dfc20
|
||||
# sa-east-1 v14.3.0 OSS: ami-0a69db82f2810830b
|
||||
# ca-central-1 v14.3.0 OSS: ami-0c560b16bf5909168
|
||||
# ap-southeast-1 v14.3.0 OSS: ami-033951ad323a2a108
|
||||
# ap-southeast-2 v14.3.0 OSS: ami-04734ea0ebdc7f7a9
|
||||
# eu-central-1 v14.3.0 OSS: ami-0417e75956364fefb
|
||||
# us-east-1 v14.3.0 OSS: ami-0e669fb0d4761e46d
|
||||
# us-east-2 v14.3.0 OSS: ami-04f3194264502eb98
|
||||
# us-west-1 v14.3.0 OSS: ami-0454b1bd513235f63
|
||||
# us-west-2 v14.3.0 OSS: ami-0619fe91e94427ac4
|
||||
# ap-northeast-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# ap-northeast-1 v14.3.0 x86_64 OSS: ami-031c6ec5904831700
|
||||
# ap-northeast-2 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# ap-northeast-2 v14.3.0 x86_64 OSS: ami-08ba63c3cf0a344c8
|
||||
# ap-northeast-3 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# ap-northeast-3 v14.3.0 x86_64 OSS: ami-0a68442f82e8dfc20
|
||||
# ap-south-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# ap-south-1 v14.3.0 x86_64 OSS: ami-0061bb007e74799c5
|
||||
# ap-southeast-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# ap-southeast-1 v14.3.0 x86_64 OSS: ami-033951ad323a2a108
|
||||
# ap-southeast-2 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# ap-southeast-2 v14.3.0 x86_64 OSS: ami-04734ea0ebdc7f7a9
|
||||
# ca-central-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# ca-central-1 v14.3.0 x86_64 OSS: ami-0c560b16bf5909168
|
||||
# eu-central-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# eu-central-1 v14.3.0 x86_64 OSS: ami-0417e75956364fefb
|
||||
# eu-north-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# eu-north-1 v14.3.0 x86_64 OSS: ami-0b9dd4f3f180e54d0
|
||||
# eu-west-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# eu-west-1 v14.3.0 x86_64 OSS: ami-0afb29bc1c2562b81
|
||||
# eu-west-2 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# eu-west-2 v14.3.0 x86_64 OSS: ami-034f28c9a79424637
|
||||
# eu-west-3 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# eu-west-3 v14.3.0 x86_64 OSS: ami-0a5c63f5108939191
|
||||
# sa-east-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# sa-east-1 v14.3.0 x86_64 OSS: ami-0a69db82f2810830b
|
||||
# us-east-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# us-east-1 v14.3.0 x86_64 OSS: ami-0e669fb0d4761e46d
|
||||
# us-east-2 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# us-east-2 v14.3.0 x86_64 OSS: ami-04f3194264502eb98
|
||||
# us-west-1 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# us-west-1 v14.3.0 x86_64 OSS: ami-0454b1bd513235f63
|
||||
# us-west-2 v14.3.0 arm64 OSS: ami-01234abcde
|
||||
# us-west-2 v14.3.0 x86_64 OSS: ami-0619fe91e94427ac4
|
||||
```
|
||||
|
||||
### Enterprise
|
||||
|
||||
```
|
||||
# eu-north-1 v14.3.0 Enterprise: ami-09dadf53e2f451d53
|
||||
# ap-south-1 v14.3.0 Enterprise: ami-0f287bcb7e9efc2ca
|
||||
# eu-west-1 v14.3.0 Enterprise: ami-07407d2f99861a79f
|
||||
# eu-west-2 v14.3.0 Enterprise: ami-010c14056289eff5f
|
||||
# eu-west-3 v14.3.0 Enterprise: ami-0a1f2ea41d1c41c99
|
||||
# ap-northeast-1 v14.3.0 Enterprise: ami-0fad3042fff5fbc11
|
||||
# ap-northeast-2 v14.3.0 Enterprise: ami-07be9cbcec84544db
|
||||
# ap-northeast-3 v14.3.0 Enterprise: ami-043caea7cfe5bf4e3
|
||||
# sa-east-1 v14.3.0 Enterprise: ami-0ac492f5adcead451
|
||||
# ca-central-1 v14.3.0 Enterprise: ami-03619d7832ed7e270
|
||||
# ap-southeast-1 v14.3.0 Enterprise: ami-094c7adcf7c82a36b
|
||||
# ap-southeast-2 v14.3.0 Enterprise: ami-0e13a9638376a2fc2
|
||||
# eu-central-1 v14.3.0 Enterprise: ami-0bf9f884489c124b1
|
||||
# us-east-1 v14.3.0 Enterprise: ami-078c9fe9c6ae450b1
|
||||
# us-east-2 v14.3.0 Enterprise: ami-09b12631904615109
|
||||
# us-west-1 v14.3.0 Enterprise: ami-049fad9f02e8d9dea
|
||||
# us-west-2 v14.3.0 Enterprise: ami-0548957fb14f54f42
|
||||
# ap-northeast-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# ap-northeast-1 v14.3.0 x86_64 Enterprise: ami-0fad3042fff5fbc11
|
||||
# ap-northeast-2 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# ap-northeast-2 v14.3.0 x86_64 Enterprise: ami-07be9cbcec84544db
|
||||
# ap-northeast-3 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# ap-northeast-3 v14.3.0 x86_64 Enterprise: ami-043caea7cfe5bf4e3
|
||||
# ap-south-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# ap-south-1 v14.3.0 x86_64 Enterprise: ami-0f287bcb7e9efc2ca
|
||||
# ap-southeast-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# ap-southeast-1 v14.3.0 x86_64 Enterprise: ami-094c7adcf7c82a36b
|
||||
# ap-southeast-2 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# ap-southeast-2 v14.3.0 x86_64 Enterprise: ami-0e13a9638376a2fc2
|
||||
# ca-central-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# ca-central-1 v14.3.0 x86_64 Enterprise: ami-03619d7832ed7e270
|
||||
# eu-central-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# eu-central-1 v14.3.0 x86_64 Enterprise: ami-0bf9f884489c124b1
|
||||
# eu-north-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# eu-north-1 v14.3.0 x86_64 Enterprise: ami-09dadf53e2f451d53
|
||||
# eu-west-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# eu-west-1 v14.3.0 x86_64 Enterprise: ami-07407d2f99861a79f
|
||||
# eu-west-2 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# eu-west-2 v14.3.0 x86_64 Enterprise: ami-010c14056289eff5f
|
||||
# eu-west-3 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# eu-west-3 v14.3.0 x86_64 Enterprise: ami-0a1f2ea41d1c41c99
|
||||
# sa-east-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# sa-east-1 v14.3.0 x86_64 Enterprise: ami-0ac492f5adcead451
|
||||
# us-east-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# us-east-1 v14.3.0 x86_64 Enterprise: ami-078c9fe9c6ae450b1
|
||||
# us-east-2 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# us-east-2 v14.3.0 x86_64 Enterprise: ami-09b12631904615109
|
||||
# us-west-1 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# us-west-1 v14.3.0 x86_64 Enterprise: ami-049fad9f02e8d9dea
|
||||
# us-west-2 v14.3.0 arm64 Enterprise: ami-01234abcde
|
||||
# us-west-2 v14.3.0 x86_64 Enterprise: ami-0548957fb14f54f42
|
||||
```
|
||||
|
||||
### Enterprise FIPS
|
||||
|
||||
```
|
||||
# eu-north-1 v14.3.0 Enterprise FIPS: ami-008dd0f06c37d13e5
|
||||
# ap-south-1 v14.3.0 Enterprise FIPS: ami-057810b642ccd7606
|
||||
# eu-west-1 v14.3.0 Enterprise FIPS: ami-0b155f8accd9474c1
|
||||
# eu-west-2 v14.3.0 Enterprise FIPS: ami-0a7e57e9a8de4d796
|
||||
# eu-west-3 v14.3.0 Enterprise FIPS: ami-0775dcdca9c140332
|
||||
# ap-northeast-1 v14.3.0 Enterprise FIPS: ami-095ac6b0849298985
|
||||
# ap-northeast-2 v14.3.0 Enterprise FIPS: ami-0edbe09fa70d343a2
|
||||
# ap-northeast-3 v14.3.0 Enterprise FIPS: ami-0a3b7ee6e00f6db46
|
||||
# sa-east-1 v14.3.0 Enterprise FIPS: ami-0db3f9d40c4e4ad28
|
||||
# ca-central-1 v14.3.0 Enterprise FIPS: ami-02a3a2809df46d69c
|
||||
# ap-southeast-1 v14.3.0 Enterprise FIPS: ami-0ddf641da2a27bd71
|
||||
# ap-southeast-2 v14.3.0 Enterprise FIPS: ami-0b667c2fdcdf7b109
|
||||
# eu-central-1 v14.3.0 Enterprise FIPS: ami-06823fdf6c5c9dfb9
|
||||
# us-east-1 v14.3.0 Enterprise FIPS: ami-07546f195c846fb3f
|
||||
# us-east-2 v14.3.0 Enterprise FIPS: ami-02959ec5b4cc4e533
|
||||
# us-west-1 v14.3.0 Enterprise FIPS: ami-01a5ef583d48e90a5
|
||||
# us-west-2 v14.3.0 Enterprise FIPS: ami-0a73854c142abdcb3
|
||||
# ap-northeast-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# ap-northeast-1 v14.3.0 x86_64 Enterprise FIPS: ami-095ac6b0849298985
|
||||
# ap-northeast-2 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# ap-northeast-2 v14.3.0 x86_64 Enterprise FIPS: ami-0edbe09fa70d343a2
|
||||
# ap-northeast-3 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# ap-northeast-3 v14.3.0 x86_64 Enterprise FIPS: ami-0a3b7ee6e00f6db46
|
||||
# ap-south-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# ap-south-1 v14.3.0 x86_64 Enterprise FIPS: ami-057810b642ccd7606
|
||||
# ap-southeast-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# ap-southeast-1 v14.3.0 x86_64 Enterprise FIPS: ami-0ddf641da2a27bd71
|
||||
# ap-southeast-2 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# ap-southeast-2 v14.3.0 x86_64 Enterprise FIPS: ami-0b667c2fdcdf7b109
|
||||
# ca-central-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# ca-central-1 v14.3.0 x86_64 Enterprise FIPS: ami-02a3a2809df46d69c
|
||||
# eu-central-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# eu-central-1 v14.3.0 x86_64 Enterprise FIPS: ami-06823fdf6c5c9dfb9
|
||||
# eu-north-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# eu-north-1 v14.3.0 x86_64 Enterprise FIPS: ami-008dd0f06c37d13e5
|
||||
# eu-west-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# eu-west-1 v14.3.0 x86_64 Enterprise FIPS: ami-0b155f8accd9474c1
|
||||
# eu-west-2 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# eu-west-2 v14.3.0 x86_64 Enterprise FIPS: ami-0a7e57e9a8de4d796
|
||||
# eu-west-3 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# eu-west-3 v14.3.0 x86_64 Enterprise FIPS: ami-0775dcdca9c140332
|
||||
# sa-east-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# sa-east-1 v14.3.0 x86_64 Enterprise FIPS: ami-0db3f9d40c4e4ad28
|
||||
# us-east-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# us-east-1 v14.3.0 x86_64 Enterprise FIPS: ami-07546f195c846fb3f
|
||||
# us-east-2 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# us-east-2 v14.3.0 x86_64 Enterprise FIPS: ami-02959ec5b4cc4e533
|
||||
# us-west-1 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# us-west-1 v14.3.0 x86_64 Enterprise FIPS: ami-01a5ef583d48e90a5
|
||||
# us-west-2 v14.3.0 arm64 Enterprise FIPS: ami-01234abcde
|
||||
# us-west-2 v14.3.0 x86_64 Enterprise FIPS: ami-0a73854c142abdcb3
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user