InfoGrab Docs

GitLab과 Terraform 통합 문제 해결

GitLab과 Terraform 통합 문제 해결에 대해 설명합니다.

Terraform과 GitLab의 통합을 사용할 때 문제 해결이 필요한 이슈가 발생할 수 있습니다. 하위 그룹 상태가 새로 고침될 때 gitlab_group_share_group 리소스가 탐지되지 않음 # "권한이 있는 사용자가 API에서 share_with_groups 를 검색할 수 없음" 이슈로 인해 GitLab Terraform 프로바이더가 기존 gitlab_group_share_group 리소스를 감지하지 못할 수 있습니다. 이는 Terraform이 기존 리소스를 재생성하려고 하기 때문에 terraform apply 를 실행할 때 오류가 발생합니다. 예를 들어 다음 그룹/하위 그룹 구성을 고려하세요: parent-group ├── subgroup-A └── subgroup-B 여기서: 사용자 user-1 이 parent-group , subgroup-A , subgroup-B 를 생성합니다. subgroup-A 가 subgroup-B 와 공유됩니다. 사용자 terraform-user 가 두 하위 그룹 모두에 대한 상속된 owner 액세스 권한으로 parent-group 의 멤버입니다. Terraform 상태가 새로 고침될 때 프로바이더가 발행한 API 쿼리 GET /groups/:subgroup-A_id 는 shared_with_groups 배열에서 subgroup-B 의 세부 정보를 반환하지 않습니다. 이로 인해 오류가 발생합니다. 이 문제를 해결하려면 다음 조건 중 하나를 충족해야 합니다: terraform-user 가 모든 하위 그룹 리소스를 생성합니다. terraform-user 사용자에게 subgroup-B 에서 Maintainer 또는 Owner 권한을 부여합니다. terraform-user 가 subgroup-B 에 대한 상속된 액세스 권한을 가지고 있고 subgroup-B 에 프로젝트가 하나 이상 포함되어 있습니다. Terraform 상태 문제 해결 # 이전 job의 플랜으로 terraform apply 를 위한 CI job에서 Terraform 상태 파일을 잠글 수 없음 # terraform init 에 -backend-config= 를 전달할 때 Terraform은 이 값을 플랜 캐시 파일에 저장합니다. 여기에는 password 값이 포함됩니다. 따라서 플랜을 만들고 나중에 다른 CI job에서 동일한 플랜을 사용하면 -backend-config=password=$CI_JOB_TOKEN 을 사용할 때 Error: Error acquiring the state lock 오류가 발생할 수 있습니다. 이는 $CI_JOB_TOKEN 값이 현재 job의 지속 시간 동안만 유효하기 때문에 발생합니다. 해결책으로 CI job에서 http 백엔드 구성 변수 를 사용하세요. 이는 GitLab CI를 사용하여 시작하기 지침을 따를 때 내부적으로 수행되는 작업입니다. 오류: "address": required field is not set # 기본적으로 GitLab은 TF_ADDRESS 를 ${CI_API_V4_URL}/projec