클라우드를 위한 프로그래밍 언어(Python, Terraform)를 배울 수 있도록 구성되어 있습니다. 클라우드 보안을 담당하면서 간단하지만 귀찮은 반복 업무들이나, 내가 언제 어떻게 배포했는지, CSPM과 같은 솔루션을 통해 해결하지 못하는 우리 회사만의 정책 등을 직접 만들고 적용 할 수 있습니다. 특히 가장 잘나가는 IaC(Infrastructure as Code) 어플리케이션인 테라폼을 통해 배포 전 단계에서 보안을 자동으로 적용하고, 규모가 큰 아키텍처도 빠르게 배포/삭제 할 수 있는 능력을 길러보세요.
Terraform 1.7 신규 기능(Mocks) 및 주요 변경점 공지
안녕하세요.
실무에서 사용하는 클라우드 프로그래밍 강사 천강민입니다.
Terraform 1.7 버전이 릴리즈 됐습니다. 관련 공지는 여기서 볼 수 있습니다.
생각보다 (크게 스트레스 받을만한) 큰 변화가 생겼는데요.
테스트 이후 모듈이 삭제되는 순서가 변경됩니다.
기존
메인 상태 파일
각 모듈별 상태 파일(역순)
그렇기에 모듈을 참조하여 테스트 작성 시, 메인 상태 파일에 적재되는 리소스들에 의존 X
변경
run 블록 역순으로 상태 파일 삭제
그렇기에 일찍 삭제되는 리소스들에 의존 X
간단한 예시
예전에는 위와 같이 작성할 수 없었지만, 1.7부터는 가능합니다.
Mocks (in beta)
간단히 말씀드리면 실제 프로바이더, 리소스, 데이터, 모듈을 생성/삭제/참조하지 않고 특정한 값을 정의하여 사용하는 기능입니다.
미리 살펴본 결과, 간단히 배포 또는 생성되는 형태를 mock 데이터로 만들어서 넣어주면 이전보다 훨씬 빠르게 테스트가 가능할 것으로 보입니다.
예시는 아래와 같습니다.
# main.tftest.hcl
mock_provider "aws" {
override_data {
target = module.credentials.data.aws_s3_object.data_bucket
values = {
body = "{\"username\":\"username\",\"password\":\"password\"}"
}
}
}
run "test" {
assert {
condition = jsondecode(local_file.credentials_json.content).username == "username"
error_message = "incorrect username"
}
}
데이터 블록의 결과를 만들고 run 블록을 통해 빠르게 테스트가 가능합니다.
1.7 릴리즈에 대한 후기
마이너 버전 한 번 만에 정말 중요한 로직을 변경한 것이 정말 마음이 아프게 느껴집니다. 혹시나 제 강의를 보시고 기존 삭제 상태를 기준으로 만드신 분들께 대신 사과를 말씀을 드립니다...
위의 이유 + in beta 상태이기에 Mocks에 대한 내용은 추후에 조금 더 성숙해지고 단단해지면 추가로 찍으려고 합니다. 다만, 어쨋든 출시된 내용은 전달드리는게 맞는 것 같기에 이렇게 새소식을 발행합니다.
감사합니다.