인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
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.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
버전 요구 사항(16.2 이상)을 충족하는지 확인하려면 다음을 실행하십시오:
tsh statusTeleport 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)"
를 실행한 쉘만 봇 자격 증명을 가지고 있습니다.
이 쉘을 닫거나 새로운 쉘을 열면 첫 번째 단계를 다시 수행해야 합니다.
-
다음 최소 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 = {}} -
그런 다음, Terraform 작업 디렉토리를 초기화하여 Teleport 공급자를 다운로드합니다:
terraform initInitializing the backend...
Initializing provider plugins...- Finding terraform.releases.teleport.dev/gravitational/teleport versions matching ... -
마지막으로, Terraform 계획을 실행합니다:
terraform planTerraform은 선택된 공급자를 사용하여 다음 실행 계획을 생성했습니다. 리소스 작업은 다음 기호로 표시됩니다: + 생성
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)
를 다시 실행하는 것을 잊지 마세요.
다음 단계
- 사용자 및 역할 IaC 가이드를 따라 Terraform 공급자를 사용하여 Teleport 사용자 생성 및 역할 부여.
- Terraform 지원 리소스 목록을 참조하십시오 Terraform reference.
- Teleport 클러스터를 구성하는 Terraform 코드가 작동하면, 이를 CI에서 실행하거나 로컬 대신 중계 서버에서 실행할 수 있습니다. 이를 위해 전용 가이드를 따르세요: