28개의 실시간 Terraform 인터뷰 질문과 답변
다음은 28가지 실제 테라폼 인터뷰 질문과 답변, 그리고 인터뷰에서 자주 등장하는 주요 명령어 목록 및 설명입니다.
클라우드 기술의 확산은 DevOps 분야에 수많은 기회를 창출했습니다. 앞으로 클라우드 기술은 인터뷰의 주요 주제가 될 것이며, 클라우드 및 인프라형 코드(IaC) 도구에 대한 기본 지식은 DevOps 직무에 필수적인 요소가 될 것입니다.
테라폼이란 무엇인가?
테라폼은 모든 클라우드 엔지니어가 사용하는 가장 인기 있는 IaC 도구 중 하나입니다. 이를 통해 사용자는 사람이 이해하기 쉬운 구성 파일을 사용하여 클라우드 및 온프레미스 리소스를 정의하고, 프로그래밍 방식으로 이러한 리소스를 프로비저닝할 수 있습니다. 테라폼의 가장 큰 장점은 대부분의 IaC 도구와 달리 특정 클라우드 제공업체에 종속되지 않는다는 것입니다. 따라서 테라폼을 활용하여 여러 클라우드 플랫폼에서 동시에 애플리케이션을 실행할 수 있습니다.
테라폼이 지원하는 기술이 궁금하신 분들을 위해 다음과 같이 간략하게 목록을 준비했습니다.
DevOps 엔지니어, 클라우드 설계자, 개발자 또는 관리자로서 경력을 쌓으려면 테라폼 인터뷰 질문에 대비해야 합니다. 여러분의 테라폼 지식 향상에 도움이 될 최고의 테라폼 인터뷰 질문 목록을 준비했습니다.
일반적인 테라폼 인터뷰 질문과 답변
#1. 테라폼에 대해 이해하는 바를 설명해 주십시오.
테라폼은 해시코프에서 만든 오픈 소스 IaC 도구입니다. 여러 클라우드 플랫폼에서 인프라를 생성, 업데이트, 삭제 및 버전 관리하는 데 사용됩니다.
#2. DevOps를 위해 테라폼을 선택해야 하는 이유는 무엇입니까?
인프라 프로비저닝에 테라폼을 사용하면 인적 오류 가능성을 최소화하여 클라우드 및 온프레미스 인프라의 품질, 일관성 및 효율성을 향상시킬 수 있습니다. 테라폼은 JSON과 매우 유사하며 배우고 사용하기 쉬운 HCL 언어를 사용합니다. AWS용 CloudFormation과 같이 클라우드 공급업체에서 제공하는 다른 IaC 도구와 달리 테라폼은 여러 클라우드 플랫폼에서 동시에 사용할 수 있습니다. 따라서 여러 IaC 도구를 익힐 필요가 없으며 협업 범위가 넓어집니다.
#3. 테라폼은 어떻게 작동합니까?
테라폼은 '테라폼 공급자'라는 플러그인을 사용하여 클라우드 플랫폼의 API와 상호 작용하고 리소스를 프로비저닝합니다. 최종 사용자로서 테라폼 워크플로는 세 단계로 이루어집니다.
작성: 인프라를 코드로 작성합니다.
계획: 적용하기 전에 테라폼이 수행할 변경 사항을 미리 확인합니다.
적용: 인프라를 프로비저닝하고 변경 사항을 적용합니다.
#4. 테라폼 클라우드란 무엇을 의미합니까?
테라폼 클라우드는 테라폼 워크플로에 최적화된 원격 환경입니다. 작업 공간 및 상태 잠금과 같은 기능을 제공하여 대규모 팀 구성원 간의 협업을 지원합니다.
#5. 테라폼의 '상태(State)'에 대해 설명해 주십시오.
IaC 도구로서 테라폼은 관리 중인 구성 및 인프라의 현재 상태를 파악해야 합니다. 테라폼은 이 정보를 '상태 파일'이라는 파일에 저장합니다.
#6. 테라폼 상태의 이점은 무엇입니까?
테라폼 상태를 통해 테라폼은 실제 리소스를 구성에 매핑하고, 메타데이터를 추적하며, 복잡한 인프라 변경 계획 시 성능을 향상시킬 수 있습니다. 이는 테라폼의 중요한 구성 요소입니다.
#7. 테라폼 백엔드에 대해 설명해 주십시오.
테라폼 백엔드는 테라폼 상태 스냅샷이 저장되는 플랫폼입니다. 기본적으로 테라폼은 '로컬'이라는 백엔드를 사용하여 디스크에 상태를 로컬 파일로 저장합니다. 지원되는 다른 백엔드는 모두 원격 스토리지 서비스입니다.
#8. 테라폼에서 '공급자(Provider)'란 무엇입니까?
테라폼의 공급자는 테라폼이 클라우드 공급자, SaaS 공급자 및 기타 API와 상호 작용할 수 있도록 하는 플러그인입니다. 예를 들어 테라폼을 사용하여 AWS에서 인프라를 프로비저닝하려면 구성 파일에서 AWS 공급자를 선언해야 합니다.
#9. 누가 테라폼 공급자를 관리합니까?
공급자는 테라폼 자체와는 별도로 배포됩니다. 테라폼 사용자라면 누구나 자신의 공급자를 개발할 수 있습니다. 해시코프에서 명시적으로 관리하는 몇 가지 표준 공급자도 있습니다.
#10. 센티넬이란 무엇입니까?
센티넬은 테라폼에서 배포하는 리소스에 대한 표준 구성을 적용하는 데 사용되는 정책 기반 코드 도구입니다. 규정 준수 및 거버넌스 목적으로 조직에서 사용할 수 있습니다.
#11. 테라폼에서 '모듈'은 무엇을 의미합니까?
테라폼 모듈은 리소스를 프로비저닝하고 구성하는 데 함께 사용되는 여러 리소스의 표준 컨테이너입니다. 예를 들어, 표준 VPC, 서브넷 및 인터넷 게이트웨이와 같은 기타 리소스를 프로비저닝하는 조직의 경우 'VPC 모듈'을 생성할 수 있습니다. 모듈은 공개 모듈 레지스트리를 통해 공개적으로 공유하거나, 개인 모듈 레지스트리를 통해 비공개로 공유할 수 있습니다.
#12. 테라폼에서 모듈을 사용하면 어떤 이점이 있습니까?
테라폼 모듈을 사용하면 리소스 세트 상단에 논리적 추상화를 생성할 수 있습니다. 모듈을 사용하면 리소스에 대한 표준 구성을 유지하고 재사용할 수 있습니다. 버전을 관리하고 팀 구성원과 공유하여 표준화된 방식으로 리소스를 프로비저닝할 수 있습니다.
#13. 개인 모듈 레지스트리란 무엇입니까?
개인 모듈 레지스트리(Private Module Registry)는 테라폼 클라우드 기능 중 하나로, 조직 전체에서 테라폼 모듈을 공유할 수 있도록 지원합니다.
심화된 테라폼 인터뷰 질문과 답변
#14. 한 모듈에서 다른 모듈로 데이터를 내보내려면 어떻게 해야 합니까?
모듈 구성 파일에서 '출력(output)' 블록을 정의하여 모듈에서 데이터를 내보낼 수 있습니다. 그런 다음 이 데이터를 대상 모듈의 매개변수로 전달할 수 있습니다.
#13. 테라폼에서 종속성을 어떻게 정의할 수 있습니까?
테라폼에는 종속성 관리 기능이 기본적으로 내장되어 있습니다. 테라폼에는 리소스 간에 두 가지 유형의 종속성, 즉 암시적 종속성과 명시적 종속성이 있습니다.
암시적 종속성은 이름에서 알 수 있듯이 테라폼에서 자동으로 감지합니다. '리소스 A'의 출력이 '리소스 B'에서 사용되는 경우가 이에 해당합니다. 테라폼은 '리소스 A'를 생성한 후에만 '리소스 B'를 생성해야 한다는 사실을 자동으로 인지합니다.
두 리소스가 출력을 공유하지 않지만 내부적으로 서로 종속된 경우 명시적 종속성을 지정할 수 있습니다. 이는 구성 블록에서 'depends_on' 매개변수를 사용하여 수행할 수 있습니다.
#14. 테라폼의 프로비저닝 도구란 무엇입니까?
프로비저닝 도구는 리소스 생성 또는 삭제 과정의 일부로 스크립트를 실행하는 데 사용되는 테라폼 리소스입니다. 테라폼에는 두 가지 유형의 프로비저닝 도구가 있습니다.
- local-exec: 테라폼을 실행하는 시스템에서 스크립트를 호출합니다.
- remote-exec: 원격 리소스가 생성된 후 스크립트를 호출합니다.
프로비저너는 테라폼에서 최후의 수단으로만 사용됩니다.
#15. 테라폼의 '외부 데이터 블록'이란 무엇입니까?
'local-exec' 프로비저닝 도구와 마찬가지로 외부 데이터 블록을 사용하여 테라폼을 실행하는 시스템에서 스크립트를 실행할 수 있습니다. 프로비저닝 도구와 외부 데이터 블록의 차이점은 외부 데이터 블록의 스크립트는 데이터를 JSON 형식으로 반환할 수 있지만, 프로비저닝 도구는 출력을 반환할 수 없다는 것입니다. 또한 외부 데이터 블록은 최후의 수단으로 사용해야 하며, 더 나은 대안이 있는 경우에는 사용하지 않는 것이 좋습니다.
#16. 테라폼 클라우드를 사용하는 두 사람이 동일한 작업 디렉터리를 사용하여 어떻게 서로 다른 두 개의 인프라 세트를 생성할 수 있습니까?
서로 다른 '작업 공간'을 사용하면 됩니다. 이러한 사용자는 두 개의 별도 작업 공간에서 테라폼 실행을 시작할 수 있습니다. 각 작업 공간에는 자체 상태 파일이 있으므로 리소스가 겹치지 않는 한 두 사용자 모두 동일한 코드를 사용하여 두 개의 서로 다른 인프라 세트를 성공적으로 프로비저닝할 수 있습니다.
#17. 여러 엔지니어가 동일한 상태 파일을 사용하여 인프라 배포를 시작하면 어떻게 됩니까?
테라폼에는 '상태 잠금(State Locking)'이라는 매우 중요한 기능이 있습니다. 이 기능은 실행 중에 상태 파일이 변경되지 않도록 보호하고, 상태 파일 손상을 방지합니다. 모든 테라폼 백엔드가 상태 잠금 기능을 지원하는 것은 아닙니다. 이 기능이 필수적인 경우에는 올바른 백엔드를 선택해야 합니다.
#18. 테라폼에서 'null 리소스'란 무엇입니까?
테라폼 null 리소스는 일반 테라폼 리소스 블록처럼 실행되지만 실제로 리소스를 생성하지 않는 구성입니다. 이상하고 쓸모없는 리소스처럼 들릴 수 있지만, 테라폼의 한계를 해결하기 위해 다양한 상황에서 유용하게 활용될 수 있습니다.
#19. 서로 다른 구성으로 테라폼에서 동일한 공급자를 어떻게 사용할 수 있습니까?
공급자 블록에서 '별칭(alias)' 인수를 사용하면 됩니다.
#20. 리소스가 없는 테라폼 구성 파일이 있습니다. 이때 'terraform apply' 명령을 실행하면 어떻게 됩니까?
테라폼은 모든 리소스를 삭제합니다. 'terraform apply' 명령으로 빈 실행을 시작하는 것은 'terraform destroy' 실행을 시작하는 것과 정확히 동일합니다.
#21. 리소스가 테라폼에서 성공적으로 생성되었지만 프로비저닝 중에 실패한 경우 어떻게 됩니까?
흔하지 않은 시나리오이기는 하지만 이러한 문제가 발생하면 해당 리소스는 '오염된(tainted)' 것으로 표시되며, 테라폼 실행을 다시 시작하여 다시 생성할 수 있습니다.
#22. 'TF_LOG' 변수의 어떤 값이 가장 상세한 로깅을 제공합니까?
'TRACE' 값이 'TF_LOG' 변수에 대해 가장 자세한 로깅을 제공하며, 기본값으로 설정되어 있습니다.
#23. 테라폼 관리에 기존 리소스를 어떻게 가져올 수 있습니까?
테라폼 'import' 명령을 사용하면 됩니다.
#24. 테라폼 실행 계획을 미리 보는 데 사용할 수 있는 명령은 무엇입니까?
테라폼 'plan' 명령은 테라폼이 인프라에 적용할 변경 사항의 실행 계획을 생성합니다.
#25. 테라폼 상태를 실제 인프라와 조정하는 데 사용할 수 있는 명령은 무엇입니까?
'terraform apply -refresh-only' 명령은 테라폼 상태를 실제 인프라와 조정하는 데 사용됩니다. 이는 현재 더 이상 사용되지 않는 'terraform refresh' 명령을 대체하는 새로운 방법입니다.
#26. 테라폼 클라우드를 사용할 때 작업 공간을 전환하는 데 사용할 수 있는 명령은 무엇입니까?
'terraform workspace select <작업 공간 이름>' 명령을 사용하여 다른 작업 공간을 선택할 수 있습니다.
#27. 테라폼 구성 파일의 구문 유효성 검사를 수행하는 데 사용되는 명령은 무엇입니까?
'terraform validate' 명령은 구성 파일의 구문이 유효하고 내부적으로 일관성이 있는지 확인하는 데 사용됩니다.
#28. 테라폼 클라우드에서 새 작업 공간을 만드는 데 사용되는 명령은 무엇입니까?
'terraform workspace new <작업 공간 이름>' 명령은 새 작업 공간을 만드는 데 사용됩니다.
기술 인터뷰를 위한 기타 주요 테라폼 명령어
- terraform init: 원격 백엔드를 초기화합니다. 구성 파일에 정의된 공급자 및 원격 모듈을 다운로드합니다.
- terraform init -upgrade: 이전에 다운로드한 공급자를 업그레이드하는 데 사용됩니다.
- terraform plan: 인프라 생성 또는 업데이트를 위한 실행 계획을 생성합니다.
- terraform apply: 사용자 확인 요청 후 인프라를 생성하거나 업데이트합니다.
- terraform apply –auto-approve: 인프라를 생성하거나 업데이트합니다. 사용자 승인 단계를 건너뜁니다.
- terraform destroy: 사용자에게 확인 요청 후 인프라를 삭제합니다.
- terraform destroy –auto-approve: 인프라를 삭제합니다. 사용자 승인 단계를 건너뜁니다.
- terraform fmt: 현재 디렉터리에서 구성 파일을 검색하고 HCP 표준 스타일 및 형식에 따라 형식을 지정합니다.
- terraform fmt –recursive: 현재 디렉터리와 하위 디렉터리에서 구성 파일을 검색하고 HCP 표준 스타일 및 형식에 따라 형식을 지정합니다.
- terraform show: 상태 또는 계획 파일에서 사람이 이해하기 쉬운 출력을 제공합니다.
위에 제공된 정보가 여러분의 테라폼 취업 준비에 도움이 되기를 바랍니다.