OSS 백엔드
OSS 백엔드
oss 백엔드는 Alibaba Cloud OSS의 주어진 버킷에 있는 주어진 키로 스테이트(state)를 저장해요. 이 백엔드는 Alibaba Cloud Table Store를 통한 스테이트 잠금과 일관성 검사도 지원하며, tablestore_table 필드를 기존 TableStore 테이블 이름으로 설정하면 활성화할 수 있어요. 이 백엔드는 TableStore를 통한 스테이트 잠금을 지원해요.
출처: 문서
본문
참고: OSS 백엔드는 terraform 버전 0.12.2부터 사용할 수 있어요.
예시 구성 (Example Configuration)
terraform {
backend "oss" {
bucket = "bucket-for-terraform-state"
prefix = "path/mystate"
key = "version-1.tfstate"
region = "cn-beijing"
tablestore_endpoint = "https://terraform-remote.cn-hangzhou.ots.aliyuncs.com"
tablestore_table = "statelock"
}
}
이 예시는 bucket-for-terraform-state라는 OSS Bucket, terraform-remote라는 OTS Instance, 그리고 statelock이라는 OTS TableStore가 이미 생성되어 있다고 가정해요. Terraform 스테이트는 path/mystate/version-1.tfstate 파일에 기록돼요. TableStore는 LockID라는 이름의 String 타입 기본 키를 가져야 해요.
데이터 소스 구성 (Data Source Configuration)
다른 구성에서 OSS 원격 스테이트를 사용하려면 terraform_remote_state 데이터 소스를 사용해요.
terraform {
backend "oss" {
bucket = "remote-state-dns"
prefix = "mystate/state"
key = "terraform.tfstate"
region = "cn-beijing"
}
}
terraform_remote_state 데이터 소스는 참조된 원격 스테이트에 정의된 모든 루트 출력을 반환해요. 예시 출력은 다음과 같을 수 있어요:
data "terraform_remote_state" "network" {
backend = "oss"
config = {
bucket = "remote-state-dns"
key = "terraform.tfstate"
prefix = "mystate/state"
region = "cn-beijing"
}
outputs = {}
workspace = "default"
}
구성 변수 (Configuration Variables)
경고: 자격 증명과 기타 민감한 데이터를 제공할 때는 환경 변수를 사용하는 것을 권장해요. -backend-config를 사용하거나 이 값을 구성에 직접 하드코딩하면, Terraform이 .terraform 하위 디렉터리와 플랜 파일 양쪽에 이 값을 포함하게 돼요. 자세한 내용은 자격 증명과 민감한 데이터를 참고하세요.
다음 구성 옵션 또는 환경 변수를 지원해요:
access_key- (선택) Alibaba Cloud 접근 키.ALICLOUD_ACCESS_KEY와ALIBABA_CLOUD_ACCESS_KEY_ID(권장) 환경 변수를 지원해요.secret_key- (선택) Alibaba Cloud 비밀 접근 키.ALICLOUD_SECRET_KEY와ALIBABA_CLOUD_ACCESS_KEY_SECRET(권장) 환경 변수를 지원해요.security_token- (선택) STS 접근 토큰.ALICLOUD_SECURITY_TOKEN와ALIBABA_CLOUD_SECURITY_TOKEN(권장) 환경 변수를 지원해요.ecs_role_name- (선택) API 작업을 위해 ECS 인스턴스에 연결된 RAM 역할 이름. Alibaba Cloud 콘솔의 'Access Control' 섹션에서 가져올 수 있어요.region- (선택) OSS 버킷의 지역.ALICLOUD_REGION와ALIBABA_CLOUD_REGION(권장) 환경 변수를 지원해요.endpoint- (선택) OSS API용 사용자 지정 엔드포인트.ALICLOUD_OSS_ENDPOINT와ALIBABA_CLOUD_OSS_ENDPOINT(권장) 환경 변수를 지원해요.bucket- (필수) OSS 버킷의 이름.prefix- (선택) 스테이트 파일이 저장될 경로 디렉터리. 기본값은"env:"예요.key- (선택) 스테이트 파일의 이름. 기본값은terraform.tfstate예요.tablestore_endpoint- (선택) TableStore API용 사용자 지정 엔드포인트.ALICLOUD_TABLESTORE_ENDPOINT와ALIBABA_CLOUD_TABLESTORE_ENDPOINT(권장) 환경 변수를 지원해요.tablestore_instance_name- (선택)TableStore가 속한 인스턴스의 이름을 지정해요. 기본적으로 Terraform은tablestore_endpoint에서 이름을 파싱해요.tablestore엔드포인트가 VPC 접근 URL일 때는 접근 URL을 명시적으로 설정해야 해요.tablestore_table- (선택) 스테이트 잠금과 일관성을 위한 TableStore 테이블. 테이블은LockID라는 이름의String타입 기본 키를 가져야 해요.sts_endpoint- (선택) AliCloud Security Token Service (STS) API용 사용자 지정 엔드포인트.ALICLOUD_STS_ENDPOINT와ALIBABA_CLOUD_STS_ENDPOINT(권장) 환경 변수를 지원해요.encrypt- (선택) 스테이트 파일의 서버 측 암호화를 활성화할지 여부.true이면 OSS가 'AES256' 암호화 알고리즘으로 스테이트 파일을 암호화해요.acl- (선택) 스테이트 파일에 적용할 Object ACL.shared_credentials_file- (선택) 공유 자격 증명 파일의 경로.ALICLOUD_SHARED_CREDENTIALS_FILE또는ALIBABA_CLOUD_CREDENTIALS_FILE(권장) 환경 변수에서도 가져올 수 있어요. 설정되지 않고 프로필이 지정되면~/.aliyun/config.json이 사용돼요.profile- (선택) 공유 자격 증명 파일에 설정된 Alibaba Cloud 프로필 이름.ALICLOUD_PROFILE와ALIBABA_CLOUD_PROFILE(권장) 환경 변수를 지원해요.assume_role_role_arn- (선택) 맡을 역할의 ARN. ARN이 빈 문자열로 설정되면 역할 전환을 수행하지 않아요.ALICLOUD_ASSUME_ROLE_ARN와ALIBABA_CLOUD_ROLE_ARN(권장) 환경 변수를 지원해요. Terraform은 제공된 자격 증명을 가진 계정에서 구성을 실행해요.assume_role_policy- (선택) 임시 자격 증명에 적용할 더 제한적인 정책. 결과적으로 생성되는 임시 보안 자격 증명의 권한을 더 제한하는 방법을 제공해요. 이 정책으로 맡는 역할의 권한을 초과하는 권한을 부여할 수는 없어요.assume_role_session_name- (선택) 역할을 맡을 때 사용할 세션 이름. 생략하면 'terraform'이 AssumeRole 호출에 세션 이름으로 전달돼요.ALICLOUD_ASSUME_ROLE_SESSION_NAME와ALIBABA_CLOUD_ROLE_SESSION_NAME(권장) 환경 변수를 지원해요.assume_role_session_expiration- (선택) 역할을 맡기 위해 수립된 세션이 만료되는 시간. 유효 값 범위: [900-3600]초. 기본값은 3600이며(이 경우 Alibaba Cloud가 자체 기본값을 사용해요).ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION환경 변수를 지원해요.assume_role- (1.1.0+부터 더 이상 사용하지 않음) 역할 ARN이 제공되면 제공된 자격 증명으로 이 역할을 맡으려 시도해요.assume_role_role_arn이 지정되면 무시돼요. assumerole* 옵션을 평탄화하는 방식으로 대체됨.role_arn- (필수) 맡을 역할의 ARN. ARN이 빈 문자열로 설정되면 역할 전환을 수행하지 않아요.ALICLOUD_ASSUME_ROLE_ARN와ALIBABA_CLOUD_ROLE_ARN(권장) 환경 변수를 지원해요. Terraform은 제공된 자격 증명을 가진 계정에서 구성을 실행해요.policy- (선택) 임시 자격 증명에 적용할 더 제한적인 정책. 결과적으로 생성되는 임시 보안 자격 증명의 권한을 더 제한하는 방법을 제공해요. 이 정책으로 맡는 역할의 권한을 초과하는 권한을 부여할 수는 없어요.session_name- (선택) 역할을 맡을 때 사용할 세션 이름. 생략하면 'terraform'이 AssumeRole 호출에 세션 이름으로 전달돼요.ALICLOUD_ASSUME_ROLE_SESSION_NAME환경 변수를 지원해요.session_expiration- (선택) 역할을 맡기 위해 수립된 세션이 만료되는 시간. 유효 값 범위: [900-3600]초. 기본값은 3600이며(이 경우 Alibaba Cloud가 자체 기본값을 사용해요).ALICLOUD_ASSUME_ROLE_SESSION_EXPIRATION환경 변수를 지원해요.
참고: 사용자 지정 OSS 엔드포인트에 스테이트를 저장하려면 OSS_ENDPOINT 환경 변수를 지정할 수 있어요. 예: "oss-cn-beijing-internal.aliyuncs.com"