Infograb logo
텔레포트 설치 프로그램 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는 레이블 집합입니다.
Teleport 원문 보기