Standard Workflow vs Automation Based Workflow
Standard Operator-Based Approach의 장점
- Direct control over each step of the process
- Easier debugging and troubleshooting
- Flexibility to make ad-hoc changes
- Simpler setup, no need for additional automation infrastructure
Standard Operator-Based Approach의 단점
- Manual process prone to human error
- Lack of standardization across team members
- Not ideal for large-scale environments where repetitive manual execution can be time-consuming and error-prone
- Relies heavily on the knowledge and expertise of the operators, which can be a bottleneck if not wel-documented
- Availability of Human Operator
일반적으로 큰 회사에서는 Standard Operator-Based 방식이 항상 사용되는 것은 아니다. 이들은 보통 회사마다의 자동화 형태로 Terraform 을 사용한다. 이런 자동화 형태는 여러 단계의 복잡한 워크플로우 형태로 이루어져 있으며, 연속성과 보안을 보장해야 한다.
Terraform의 주요 명령어는 수동(manual) 실행과 자동화(automated) 환경에서 동일하게 유지되지만, CLI 명령어의 세부 옵션(sub-options)은 자동화 환경에 맞게 변경된다.
- ex)
- (수동 실행) >> (자동화 실행)
- terraform init >> terraform init -input=false
- terrform plan >> terraform plan -input=false -no-color -out=tf.plan
- terraform apply >> terraform apply "tf.plan" -auto-apporve
Terraform을 자동화된 환경(CI/CD, 스크립트 실행 등)에서 사용할 때는 "-input=false, -no-color, -out=tf.plan, -auto-approve" 등의 옵션을 추가하여 사용자 개입 없이 실행되도록 설정하는 것이 중요하다.
cf) terraform plan -no-color -detailed-exitcode
-no-color
출력에서 색상을 제거하여 로그를 더 읽기 쉽게 만들어준다.
CI/CD 환경이나 로그 파일에 저장할 때 유용하다.
-detailed-exitcode
실행 결과에 따라 다른 종료 코드를 반환한다.
기본적으로 terraform plan은 항상 0을 반환하지만, 이 옵션을 사용하면 다음과 같은 종료 코드가 반환된다:
0 : 변경 사항 없음 (No changes)
1 : 오류 발생 (Error)
2 : 변경 사항 있음 (Changes present)
Terraform CLI : Flags vs Options
Terraform을 사용할 때 명령어 뒤에 다양한 설정값을 추가할 수 있다. 대표적으로 Flags(플래그) 와 Options(옵션) 이 있는데, 이 둘의 차이를 명확하게 이해하면 Terraform 스크립트를 더욱 효과적으로 작성하고 자동화할 수 있다.
Flags
Flags(플래그)는 특정 기능을 활성화하거나 비활성화하는 Boolean(참/거짓) 타입의 설정값으로 값을 따로 지정할 필요 없이 존재 자체가 기능을 설정한다. 일반적으로 -flag 또는 --flag 형태로 사용되고, 예를 들어, -no-color 플래그는 출력에서 색상을 제거하는 역할을 한다.
terraform plan -no-color
위 명령어에서 -no-color는 출력에서 색상을 제거하는 플래그이며, 별도의 값을 필요로 하지 않는다. 자주 사용되는 Flags로는 다음과 같다.
- -no-color : 출력에서 색상을 제거
- -auto-approve : terraform apply 실행 시 승인 요청 없이 자동 적용
- -compact-warnings : 경고 메시지를 간략하게 표시
- -lock=false : 스테이트 파일 잠금 비활성화 (다중 사용자 환경에서는 주의 필요)
Options
Options(옵션)은 사용자가 특정 값을 제공해야 하는 설정값으로, 값이 반드시 필요하며, --option value 또는 --option=value 형태로 사용된다. 값은 문자열, 숫자, 파일 경로 등 다양한 형태가 될 수 있으며 예를 들어, -var 옵션은 Terraform 변수 값을 지정할 때 사용된다.
terraform apply -var "instance_type=t2.micro"
위 명령어에서 -var는 변수 값을 지정하는 옵션이며, "instance_type=t2.micro"라는 값을 필요로 한다. 자주 사용되는 Options로는 다음과 같이 있다.
- -var "key=value" : 특정 변수 값을 설정
- -var-file="vars.tfvars" : 변수 값을 포함하는 파일을 지정
- -state="path" : 특정 Terraform 상태 파일을 사용
- -parallelism=N : 동시에 실행할 최대 작업 개수 지정
Terraform plan -input=false
Terraform을 실행할 때 변수 값이 설정되지 않았다면 기본적으로 사용자 입력을 요청한다. 하지만 자동화된 환경에서는 이러한 입력 요청이 실행을 방해할 수 있는데, 이를 방지하기 위해 -input=false 옵션을 사용하면 추가적인 입력 없이 Terraform을 실행할 수 있다.
기본적인 terraform plan 실행
terraform plan
- 필요한 변수가 정의되지 않으면 Terraform이 사용자에게 입력을 요청한다.
- 예를 들어, instance_type 변수가 정의되지 않았다면 콘솔에서 입력을 요구한다.
-input=false를 사용한 실행
terraform plan -input=false
- 입력을 비활성화하고, 필요한 변수가 정의되지 않았다면 오류를 발생시킨다.
- CI/CD 환경에서 사용자 입력 없이 자동화된 실행을 보장할 수 있다.
즉, -input=false는 사용자 입력 없이 Terraform을 실행하도록 설정하는 옵션이고, 변수 값이 정의되지 않았을 경우 입력 요청 없이 오류 발생시킨다. CI/CD 환경에서 사용자 개입 없이 자동화된 실행을 보장하는 데 필수적이다.
'HashiCorp > Certificate' 카테고리의 다른 글
Terraform Authoring and Operations Professional(2) (0) | 2025.01.31 |
---|