맞습니다. Terraform은 대상으로하는 리소스에 관계없이 전체 상태 파일을 잠급니다.
이 구현의 배경은 리소스간에 참조가있을 수 있다는 것입니다. 보다 정확하게 하나의 리소스 (생성/업데이트/파괴)가 관련된 이벤트는 다른 리소스가 생성/업데이트/파괴 될 수 있습니다. 심지어 apply -target=resource_one.ref_name
조차도 다른 리소스가 변경 될 수 있습니다. 모든 것은 terraform plan
에 제시되어야합니다.
backend (S3, Consul, TFE, ...) 수준에서는 모든 상태 연산 (잠금 포함)이 currently이고 공통된 인터페이스는 공통 분모가 기본적으로 JSON 블롭이므로 유연하지 않습니다. (상태 파일).
인프라가 독립적 인 부분이 두 개 이상인 경우 workspaces 또는 디렉터리 중 하나로 분리 할 것을 제안합니다. 구성 파일을 분할 한 후 terraform state
subcommands을 사용하여 마이그레이션을 수행 할 수 있습니다.
terraform_remote_state
data source을 사용하여 이러한 부분에서 노출 된 출력을 참조 할 수도 있습니다.
-target
플래그는 mentioned in the docs로, 일상적인 작업 하지, 예외적 인 상황에 사용하기위한 것입니다.
Terraform 작업을 실행할 때 잠긴 전체 상태 파일이 맞지만 리소스를 별도의 폴더로 분할하는 대신 왜 이런 식으로 작업해야합니까? 나는 지금 당장 특정 리소스를 적용하기를 원한다는 것을 이해할 수 있지만 (비록 나쁜 습관이긴하지만) 전체 폴더를 적용하는 것이 편안해야하거나 분할해야합니다. – ydaetskcoR