배경

Terraform 관련 Jenkins Pipeline 중 다음과 같은 요건이 있었다.

  • tfvar를 사용
  • SecretsManager를 사용하여 환경 변수 등록

환경 변수에 등록된 Terraform 관련 변수를 어떻게 사용할 수 있는에 대한 내용을 기록하려고 한다.

방법

variables.tf 에 아래와 같이 정의한다.

variable "api_key" {
 type = string
 description = "some api key"
 ...
}

기존에는 tfvars에 아래와 같이 정의해야만 한다. 하지만 이렇게 정의하게 되면, 사용자 측에서 env를 잘못하여 올릴 수 있어 보안 상 좋지 않을 수 있음

api_key = "abcdefg"

Jenkins Pipeline에서 해당 key를 secretsmanager 또는 parameter store에 저장 후 등록하여 사용한다면 더 안전하게 사용할 수 있는 환경을 구성할 수 있음

aws secretsmanager get-secret-value --secret-id '[SECRET ARN]' --region [REGION] --query SecretString --output text
 
export TF_VAR_api_key="abcdefg"

관련 문서

git config