Infograb logo
Teleport Terraform 공급자를 로컬에서 실행하기

이 가이드는 로컬 컴퓨터에서 Teleport terraform 공급자를 실행하는 방법을 다룹니다, 여기서 자신으로 Teleport에 이미 로그인되어 있습니다.

이 가이드는 클라우드 VM, 온프레미스 서버 또는 CI/CD 파이프라인과 같은 원격 환경에서 Teleport를 실행하는 방법을 다루지 않습니다. 만약 이 경우 중 하나에 해당된다면, 전용 가이드를 따라 주시기 바랍니다:

작동 방식

이 설정은 사용자의 로컬 자격 증명(tsh login 에서)으로 Teleport에 임시 봇을 생성하고, 봇으로 연결하여 단기 자격 증명을 얻고, 이 자격 증명을 쉘의 환경 변수에 내보내는 방식으로 작동합니다. 이 동일한 터미널에서 실행되는 모든 Terraform 명령은 환경 변수에서 자격 증명을 읽고 임시 봇으로 Teleport에 연결할 수 있습니다.

사전 요구 사항

  • 버전이 16.2 이상인 Teleport 클러스터가 실행 중이어야 합니다.
  • 버전이 16.2 이상인 로컬 tsh/tctl 클라이언트가 필요합니다.
  • Bot 및 Token 리소스를 생성할 수 있는 역할로 Teleport에 로컬 로그인해야 합니다. 기본 editor 역할을 사용할 수 있습니다.

Teleport 클러스터에 연결할 수 있는지 확인하려면 tsh login 으로 로그인한 후, 현재 자격 증명을 사용하여 tctl 명령을 실행할 수 있는지 확인하십시오. tctl 은 macOS 및 Linux 머신에서 지원됩니다.

예를 들어:

tsh login --proxy=teleport.example.com:443 --user=email@example.com
tctl status

클러스터 teleport.example.com

버전 17.0.0-dev

CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678

버전 요구 사항(16.2 이상)을 충족하는지 확인하려면 다음을 실행하십시오:

tsh status
Teleport v17.0.0-dev go1.22프록시 버전: 17.0.0-dev프록시: teleport.example.com:443

1/2단계. 임시 봇 자격 증명 생성

이 단계에서는 tctl 과 로컬 자격 증명을 사용하여 Terraform 공급자를 위한 Teleport에 임시 봇을 생성합니다. 봇은 1시간 동안 존재하며 TF 공급자가 지원하는 모든 리소스를 편집할 수 있는 기본 terraform-provider 역할이 부여됩니다.

tctl 은 그런 다음 임시 봇의 자격 증명을 가져와 쉘의 환경 변수에 내보냅니다. 클러스터에서 관리 작업을 위한 MFA가 활성화된 경우, tctl 은 MFA를 입력하라는 메시지를 표시합니다.

다음 명령을 실행하고, 자격 증명을 쉘에 로드하는 데 필요한 eval 을 제거하지 마십시오:

eval "$(tctl terraform env)"
🔑 MFA가 필요한지 감지 중이것은 관리자 수준의 작업이며 MFA를 완료하는 데 필요합니다.보안 키를 탭하십시오.보안 키 탭이 감지되었습니다.⚙️ 임시 봇 "tctl-terraform-env-82ab1a2e" 및 해당 토큰 생성 중🤖 임시 봇을 사용하여 인증서 확보 중🚀 인증서가 확보되었습니다. 이제 이 터미널에서 1시간 동안 Terraform을 사용할 수 있습니다.

2/2단계. Terraform 공급자 실행

현재, 당신은 한 시간 동안 유효한 자격 증명을 쉘의 환경 변수에 가지고 있습니다.
이 쉘에서 Teleport Terraform 공급자를 실행할 수 있습니다.

Important

eval "$(tctl terraform env)" 를 실행한 쉘만 봇 자격 증명을 가지고 있습니다. 이 쉘을 닫거나 새로운 쉘을 열면 첫 번째 단계를 다시 수행해야 합니다.

  1. 다음 최소 Terraform 코드를 포함하는 main.tf 파일을 생성합니다:

    terraform { required_providers { teleport = { source = "terraform.releases.teleport.dev/gravitational/teleport" version = "~> 17.0" } }}
    provider "teleport" { addr = 'teleport.example.com:443'}

    테스트 역할을 생성해야 합니다. 리소스를 선언하지 않으면 Terraform은

    Teleport에 연결을 시도하지 않으며 설정을 검증할 수 없습니다.

    resource "teleport_role" "test" { version = "v7" metadata = { name = "test" description = "Terraform 공급자 설정을 검증하기 위한 더미 역할" labels = { test = "yes" } }
    spec = {}}
  2. 그런 다음, Terraform 작업 디렉토리를 초기화하여 Teleport 공급자를 다운로드합니다:

    terraform init
    Initializing the backend...
    Initializing provider plugins...- Finding terraform.releases.teleport.dev/gravitational/teleport versions matching ...
  3. 마지막으로, Terraform 계획을 실행합니다:

    terraform plan
    Terraform은 선택된 공급자를 사용하여 다음 실행 계획을 생성했습니다. 리소스 작업은 다음 기호로 표시됩니다: + 생성
    Terraform은 다음 작업을 수행합니다:
    # teleport_role.test가 생성됩니다 + resource "teleport_role" "test" { + id = (적용 후 알려짐) + kind = (적용 후 알려짐) + metadata = { + name = "test" + namespace = (적용 후 알려짐) } + spec = {} + version = "v7" }
    계획: 1 추가, 0 변경, 0 제거됩니다.

계획이 성공하면 Terraform 공급자가 Teleport에 성공적으로 연결된 것입니다.
이제 Teleport Terraform 공급자를 사용하여 로컬에서 개발을 시작할 수 있습니다.

매 시간마다 새로운 임시 자격 증명을 얻기 위해 eval $(tctl terraform env) 를 다시 실행하는 것을 잊지 마세요.

다음 단계

Teleport 원문 보기