2023. 7. 19. 13:49ㆍ북리뷰/테라폼으로 시작하는 IaC
terraform init
테라폼 구성 파일이 있는 작업 디렉터리를 초기화하는 데 사용
이 작업을 실행하는 디렉터리를 루트 모듈이라고 함.
테라폼에서 사용되는 프로바이더, 모듈 등의 지정된 버전에 맞게 루트 모듈을 구성
구성에서 필요한 의존성 정의를 읽고, 최초 실행 시 실행에 필요한 아티팩트나 라이브러리를 다운로드하고 준비시킴
생성 후 잡업자가 의도적으로 버전 변경시에 terraform init -upgrade 수행
terraform validate
디렉터리에 있는 테라폼 구성 파일의 유효성 확인
API 작업은 발생하지 않고, 코드적인 유효성만 검토
terraform plan
plan 명령은 테라폼으로 적용한 인프라의 변경 사항에 대한 실행 계획을 생성.
실행 이전 상태와 비교해 현재 상태가 최신화되었는지 확인.
출력 결과를 확인하여 어떤 변경이 적용될지 사용자가 미리 검토 가능
terraform apply
plan에서 작성한 계획을 기반으로 작업을 실행.
plan이 없다면 새 실행 계획을 자동으로 생성할 것인지 묻는 메시지 표시
-detailed-exitcode 옵션을 통해 각 동작 결과를 숫자 코드로 받을 수 있음
0 : 변경 사항이 없는 성공
1 : 오류가 있음
2 : 변경 사항이 있는 성공
테라폼은 멱등성을 갖고, 이후에 추가로 설명될 상태를 관리하기 떄문에 동일한 구성에 대해서는 다시 실행하거나 변경하는 작업을 수행하지 않음
terraform destroy
테라폼 구성에서 관리하는 모든 개체를 제거
HCL(HashiCorp configuration language)
하사ㅣ코프사에서 IaC 구성 정보를 명시하기 위해 개발된 오픈 소스 도구
리소스
선언된 항목을 생성하는 동작을 수행
resource "<리소스 유형>" "<이름>" {
<인수> = <값>
}
리소스 추가 메타인수
depends_on : 종속성 선언, 선언된 구성요소와의 생성 시점에 대해 정의
count : 선언된 개수에 따라 여러 리소스 생성
for_each : map 또는 set 타입의 데이터 배열의 값을 기준으로 여러 리소스를 생성
provider : 동일한 프로바이더가 다수 정의되어 있는 경우 지정
lifecycle : 리소스의 수명주기 관리
provisioner : 리소스 생성후 추가 작업 관리
timeouts : 프로바이더에서 정의한 일부 리소스 유형에 허용 시간 정의
데이터 소스
테라폼으로 정의되지 않은 외부 리소스 또는 저장된 정보를 테라폼 내에 참조할 때 사용
data "<리소스 유형>" "<이름>" {
<인수> = <값>
}
입력 변수
variable "<이름>" {
<인수> = <값>
}
'북리뷰 > 테라폼으로 시작하는 IaC' 카테고리의 다른 글
1. IaC와 테라폼 (0) | 2023.07.19 |
---|