2017-12-21 18 views
1

여러 자원/모듈을 가지고있는 tf 파일을 가지고 있으며 모두 s3에서 하나의 원격 상태 파일을 사용합니다.리소스 수준의 Terraform 잠금 상태?

나는 종종 tf 파일의 특정 모듈을 대상으로합니다.

잠금 설정을 사용하면 다른 모듈을 타겟팅하는 경우에도 두 사람이 동시에 변경할 수 없다는 뜻입니까?

내가 읽은 바로는 Terraform이 전체 상태 파일을 잠그는 것 같습니다. 리소스 수준 잠금을 지원합니까? 문서는이 점에 대해 나에게 분명하지 않았습니다.

+1

Terraform 작업을 실행할 때 잠긴 전체 상태 파일이 맞지만 리소스를 별도의 폴더로 분할하는 대신 왜 이런 식으로 작업해야합니까? 나는 지금 당장 특정 리소스를 적용하기를 원한다는 것을 이해할 수 있지만 (비록 나쁜 습관이긴하지만) 전체 폴더를 적용하는 것이 편안해야하거나 분할해야합니다. – ydaetskcoR

답변

1

맞습니다. Terraform은 대상으로하는 리소스에 관계없이 전체 상태 파일을 잠급니다.

이 구현의 배경은 리소스간에 참조가있을 수 있다는 것입니다. 보다 정확하게 하나의 리소스 (생성/업데이트/파괴)가 관련된 이벤트는 다른 리소스가 생성/업데이트/파괴 될 수 있습니다. 심지어 apply -target=resource_one.ref_name조차도 다른 리소스가 변경 될 수 있습니다. 모든 것은 terraform plan에 제시되어야합니다.

backend (S3, Consul, TFE, ...) 수준에서는 모든 상태 연산 (잠금 포함)이 currently이고 공통된 인터페이스는 공통 분모가 기본적으로 JSON 블롭이므로 유연하지 않습니다. (상태 파일).

인프라가 독립적 인 부분이 두 개 이상인 경우 workspaces 또는 디렉터리 중 하나로 분리 할 것을 제안합니다. 구성 파일을 분할 한 후 terraform state subcommands을 사용하여 마이그레이션을 수행 할 수 있습니다.

terraform_remote_state data source을 사용하여 이러한 부분에서 노출 된 출력을 참조 할 수도 있습니다.

  • 그것은 매우 잘 확장되지 않습니다

    관리 독립적 인 부품 하나의 상태 파일 인프라의 내가 몇 가지 이유 권하고 싶습니다 것이 아닙니다. 더 많은 리소스를 추가하기 시작할 때 Teradform이 각 리소스의 현재 상태를 확인해야하기 때문에 완료하는 데 걸리는 시간은 늘어납니다. terraform plan & apply

  • 모든 중요한 테라 폼 명령은 폭발 할 수있는 폭이 필요 이상으로 넓어 인적 오류를 훨씬 더 무섭게 만듭니다. 예 : 사고 terraform destroy은 인프라의 일부분 만이 아니라 모든 것을 파괴합니다.

-target 플래그는 mentioned in the docs로, 일상적인 작업 하지, 예외적 인 상황에 사용하기위한 것입니다.