| 1 | #!/bin/bash |
| 2 | set -euo pipefail |
| 3 | umask 077 |
| 4 | |
| 5 | export DEBIAN_FRONTEND=noninteractive |
| 6 | apt-get update |
| 7 | apt-get install -y curl ca-certificates |
| 8 | |
| 9 | stage="$(mktemp -d /var/lib/carlos-stage.XXXXXX)" |
| 10 | trap 'rm -rf "$stage"' EXIT |
| 11 | |
| 12 | curl --retry 5 --retry-delay 3 -fsSL -o "$stage/amazon-ssm-agent.deb" \ |
| 13 | "https://s3.${local_region}.amazonaws.com/amazon-ssm-${local_region}/3.3.5538.0/debian_arm64/amazon-ssm-agent.deb" |
| 14 | echo "614e40869848a37427101f9965d2a93d463c19eb8ec652800a4f767fc664d3e2 $stage/amazon-ssm-agent.deb" | sha256sum -c - |
| 15 | dpkg -i "$stage/amazon-ssm-agent.deb" |
| 16 | systemctl enable --now amazon-ssm-agent |
| 17 | |
| 18 | curl --retry 5 --retry-delay 3 -fsSL -o "$stage/carlos" \ |
| 19 | "https://github.com/carlosframework/releases/releases/download/v0.28.15/carlos-linux-arm64" |
| 20 | echo "6587576f1aefae5887cae522770b0238e205f0b56b5ffe94de436ac52190e0dd $stage/carlos" | sha256sum -c - |
| 21 | |
| 22 | install -d -m 0755 /opt/carlos |
| 23 | install -m 0755 "$stage/carlos" /opt/carlos/carlos |
| 24 | |
| 25 | install -d -m 0755 /etc/carlos |
| 26 | cat > /etc/carlos/host.env <<'ENVEOF' |
| 27 | CARLOS_DEPLOYMENT_BUCKET=${deployment_bucket_name} |
| 28 | AWS_REGION=${deployment_region} |
| 29 | AWS_DEFAULT_REGION=${deployment_region} |
| 30 | CARLOS_RELEASE_PUBKEY=${release_public_key} |
| 31 | CARLOS_REGION=${placement_region} |
| 32 | CARLOS_HIBERNATE_BUCKET=${data_bucket_name} |
| 33 | CARLOS_HIBERNATE_REGION=${local_region} |
| 34 | CARLOS_HIBERNATE_PREFIX=instances |
| 35 | PLATFORM_APPS_DOMAIN=${apps_domain} |
| 36 | CARLOS_SYSTEM_CHANNEL=stable |
| 37 | CARLOS_HOST_METRICS=cloudwatch |
| 38 | ENVEOF |
| 39 | chown root:root /etc/carlos/host.env |
| 40 | chmod 0600 /etc/carlos/host.env |
| 41 | |
| 42 | umask 022 |
| 43 | /opt/carlos/carlos bootstrap |
| 44 | systemctl start carlos-edge |
| 45 | |