텔레포트 설치 프로그램 Terraform 리소스 참조
사용 예시
# 텔레포트 설치 프로그램 리소스
resource "teleport_installer" "example" {
version = "v1"
metadata = {
name = "example"
description = "예제 텔레포트 설치 프로그램"
labels = {
example = "yes"
}
}
spec = {
# 이것은 기본 설치 스크립트입니다. 설치 스크립트에 대한 자세한 내용은
# https://goteleport.com/docs/enroll-resources/auto-discovery/servers/ec2-discovery/#step-67-optional-customize-the-default-installer-script를 참조하세요.
script = <<EOF
#!/usr/bin/env sh
set -eu
cdnBaseURL='https://cdn.teleport.dev'
teleportVersion='v{{.MajorVersion}}'
teleportFlavor='teleport-ent' # teleport 또는 teleport-ent
successMessage='텔레포트가 설치되고 실행 중입니다.'
teleportArgs='install autodiscover-node --public-proxy-addr={{.PublicProxyAddr}} --teleport-package={{.TeleportPackage}} --repo-channel={{.RepoChannel}} --auto-upgrade={{.AutomaticUpgrades}} --azure-client-id={{.AzureClientID}}'
# shellcheck disable=all
# $HOME 또는 /를 기준 디렉터리로 사용
tempDir=$(mktemp -d -p $${HOME:-}/)
OS=$(uname -s)
ARCH=$(uname -m)
# shellcheck enable=all
trap 'rm -rf -- "$tempDir"' EXIT
teleportTarballName() {
if [ $${OS} = "Darwin" ]; then
echo $${teleportFlavor}-$${teleportVersion}-darwin-universal-bin.tar.gz
return 0
fi;
if [ $${OS} != "Linux" ]; then
echo "MacOS와 Linux만 지원됩니다." >&2
return 1
fi;
if [ $${ARCH} = "armv7l" ]; then echo "$${teleportFlavor}-$${teleportVersion}-linux-arm-bin.tar.gz"
elif [ $${ARCH} = "aarch64" ]; then echo "$${teleportFlavor}-$${teleportVersion}-linux-arm64-bin.tar.gz"
elif [ $${ARCH} = "x86_64" ]; then echo "$${teleportFlavor}-$${teleportVersion}-linux-amd64-bin.tar.gz"
elif [ $${ARCH} = "i686" ]; then echo "$${teleportFlavor}-$${teleportVersion}-linux-386-bin.tar.gz"
else
echo "잘못된 Linux 아키텍처 $${ARCH}입니다." >&2
return 1
fi;
}
main() {
tarballName=$(teleportTarballName)
echo "다운로드 중: $${cdnBaseURL}/$${tarballName} 그리고 텔레포트를 $${tempDir}에 추출 중 ..."
curl --show-error --fail --location $${cdnBaseURL}/$${tarballName} | tar xzf - -C $${tempDir} $${teleportFlavor}/teleport
mkdir -p $${tempDir}/bin
mv $${tempDir}/$${teleportFlavor}/teleport $${tempDir}/bin/teleport
echo "> $${tempDir}/bin/teleport $${teleportArgs} $@"
sudo $${tempDir}/bin/teleport $${teleportArgs} $@ && echo $successMessage
}
main $@
EOF
}
}
스키마
필수
spec
(속성) Spec은 리소스 스펙입니다. (다음의 중첩 스키마를 참조하세요)(#nested-schema-for-spec)version
(문자열) Version은 리소스 버전입니다.
선택 사항
metadata
(속성) Metadata는 리소스 메타데이터입니다. (다음의 중첩 스키마를 참조하세요)(#nested-schema-for-metadata)sub_kind
(문자열) SubKind는 선택적 리소스 서브 종류입니다. 현재 이 리소스의 경우 사용되지 않습니다.
spec
에 대한 중첩 스키마
필수:
script
(문자열) Script는 설치 프로그램 셸 스크립트의 내용을 나타냅니다.
metadata
에 대한 중첩 스키마
필수:
name
(문자열) Name은 객체의 이름입니다.
선택 사항:
description
(문자열) Description은 객체 설명입니다.expires
(문자열) Expires는 시스템의 모든 리소스에 설정할 수 있는 글로벌 만료 시간 헤더입니다.labels
(문자열의 맵) Labels는 레이블 집합입니다.