인포레터에서 최신 DevOps 트렌드를 격주로 만나보세요!
서버에서 Teleport Terraform 공급자 실행
이 가이드는 지속적인 Linux 또는 macOS 서버에서 Teleport용 Terraform 공급자를 설정하는 방법을 보여줍니다.
이 가이드는 Terraform 공급자를 로컬에서 실행하거나 CI/CD 및 단기 클라우드 VM과 같은 임시 환경에서 실행하는 방법을 다루지 않습니다. 이러한 경우에는 전용 가이드를 따라 주시기 바랍니다:
이 가이드는 서버에서 MachineID를 설정합니다. MachineID는 사용자가 아닌 머신과 서비스에 대한 신원을 제공하기 위한 Teleport의 기능입니다.
작동 방식
이 설정은 MachineID 데몬(tbot
)이 Teleport 클러스터에 조인하고 Terraform 공급자를 위한 자격 증명을 얻고 갱신하는 데 의존합니다. 이 데몬은 디스크에 신원을 저장하고 일반적으로 30분마다 Terraform 자격 증명을 갱신합니다.
전제 조건
-
실행 중인 Teleport 클러스터 버전 17.0.0-dev 이상. Teleport를 시작하려면 가입하여 무료 평가판을 이용하거나 데모 환경 설정 방법을 확인하십시오.
-
tctl
관리자 도구와tsh
클라이언트 도구.tctl
및tsh
다운로드 방법에 대한 지침은 설치를 방문하십시오.
-
terraform version
Terraform v1.0.0
-
연결이 가능한지 확인하기 위해
tsh login
으로 로그인한 다음, 현재 자격 증명을 사용하여tctl
명령어를 실행할 수 있는지 확인하십시오.예를 들어:
tsh login --proxy=teleport.example.com --user=email@example.comtctl status클러스터 teleport.example.com
버전 17.0.0-dev
CA 핀 sha256:abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678abdc1245efgh5678
클러스터에 연결할 수 있고
tctl status
명령어를 실행할 수 있다면, 현재 자격 증명을 사용하여 워크스테이션에서 후속tctl
명령어를 실행할 수 있습니다.
자신의 Teleport 클러스터를 호스팅하는 경우, Teleport Auth Service를 호스팅하는 컴퓨터에서 전체 권한으로tctl
명령어를 실행할 수도 있습니다. -
Teleport Terraform 공급자를 실행할 Linux 호스트.
-
Terraform과
tbot
이 실행될 호스트의 Linux 사용자. 이 가이드에서는 teleport를 사용합니다.
1/4단계. 서버에 tbot
설치
tbot
을 설치하고 Teleport 클러스터에 조인해야 합니다. 그렇게 하려면 Linux용 tbot
배포 가이드를 따라 3단계까지 진행하십시오.
2/4단계. RBAC 구성
이 시점에서 Terraform을 실행할 머신에 tbot
이 설치되고 구성되었습니다.
Starting with 16.2, Teleport comes with a built-in role for the Terraform provider: terraform-provider
.
이전 버전에서는 Terraform 역할을 직접 생성해야 합니다.
다음과 같은 role.yaml
매니페스트를 작성하세요:
kind: role
version: v7
metadata:
name: terraform-provider
spec:
allow:
db_labels:
'*': '*'
app_labels:
'*': '*'
node_labels:
'*': '*'
rules:
- resources:
- app
- cluster_auth_preference
- cluster_networking_config
- db
- device
- github
- login_rule
- oidc
- okta_import_rule
- role
- saml
- session_recording_config
- token
- trusted_cluster
- user
- access_list
- node
verbs: ['list','create','read','update','delete']
역할을 생성하려면 tctl create -f ./role.yaml
을 사용하세요.
tctl bots update
명령을 사용하여 역할을 봇에 추가하십시오. example
을 배포 가이드에서 생성한 봇의 이름으로 교체하십시오.
tctl bots update example --add-roles terraform-provider
3/4단계. tbot
출력 구성
이제 tbot
은 Terraform 공급자에 필요한 자격 증명을 생성할 출력을 구성해야 합니다. Terraform 공급자가 Teleport API에 접근하므로, 사용할 올바른 출력 유형은 identity
입니다.
이 가이드에서는 directory
대상을 사용합니다. 이는 이러한 자격 증명을 디스크의 지정된 디렉토리에 기록합니다. 이 디렉토리는 tbot
이 실행되는 Linux 사용자가 쓸 수 있어야 하며, Terraform이 실행되는 Linux 사용자가 읽을 수 있어야 합니다.
tbot
구성을 수정하여 identity
출력을 추가하십시오:
outputs:
- type: identity
destination:
type: directory
# 이 가이드에서는 /opt/machine-id가 대상 디렉토리로 사용됩니다.
# 이를 맞춤 설정할 수 있습니다. 여러 출력이 동일한 대상을 공유할 수 없습니다.
path: /opt/machine-id
tbot
을 백그라운드 서비스로 운영하는 경우, 이를 재시작하십시오. 한 번만 실행되는 모드에서 tbot
을 실행하는 경우(자격 증명을 생성하고 프로세스를 종료함), 나중에 Terraform 계획을 실행하기 전에 이를 실행해야 합니다.
이제 /opt/machine-id
아래에 identity
파일이 있어야 합니다. 이는 Terraform 공급자가 Teleport Auth 서버와 인증하는 데 필요한 개인 키와 서명된 인증서를 포함하고 있습니다.
4/4단계. Terraform 실행
새로운 Terraform 작업 디렉토리를 생성하는 것으로 시작하십시오:
mkdir ./my-terraform && cd ./my-terraformterraform init
Machine ID에 의해 출력된 자격 증명을 사용하도록 Teleport Terraform 공급자를 구성하기 위해 identity_file_path
옵션을 사용합니다.
이 디렉토리에서 main.tf
를 생성합니다:
terraform {
required_providers {
teleport = {
version = "17.0.0-dev"
source = "terraform.releases.teleport.dev/gravitational/teleport"
}
}
}
provider "teleport" {
# Teleport Proxy 또는 Auth Server의 주소로 교체하십시오.
addr = "teleport.example.com:443"
# 이전 단계에서 identity 출력에 구성된 디렉토리로 교체하십시오.
identity_file_path = "/opt/machine-id/identity"
}
# 테스트 역할을 생성해야 합니다. 자원을 선언하지 않으면 Terraform은 Teleport에 연결하지 않으므로 설정을 검증할 수 없습니다.
resource "teleport_role" "terraform-test" {
version = "v7"
metadata = {
name = "terraform-test"
description = "Terraform에 의해 생성된 예시 역할"
}
spec = {
# 이 역할은 예시 역할로 아무 작업도 수행하지 않습니다.
allow = {}
}
}
teleport.example.com:443
을 Teleport Proxy 또는 Auth Server의 주소로 교체하십시오. /opt/machine-id
에서 목적지 디렉토리를 변경한 경우, 이것도 교체해야 합니다.
이제 Terraform을 실행하여 구성을 테스트합니다:
terraform initterraform planterraform apply
Teleport 클러스터를 확인하고 역할이 생성되었는지 확인하십시오:
tctl get role/terraform-test
다음 단계
- Teleport Terraform 공급자로 구성할 수 있는 내용을 확인하려면 Terraform 공급자 리소스 참조를 탐색하세요.
- 모든 사용 가능한
tbot
구성 옵션을 탐색하려면 tbot 구성 참조를 읽어보세요.