1. OpenTofu란?
OpenTofu의 첫 등장은 2023년 8월입니다. Hashicorp가 전 제품을 BSL (Business Source License)로 변경을 발표하며, 테라폼의 상업적 사용에도 제동이 걸리게 되었습니다. 따라서 이에 반대하는 OpenTF 매니페스토에 참여한 온라인 커뮤니티와 각종 단체, 개인들에 의해서 개발된 IaC 도구입니다.
2023년 8월 첫 선을 보이고, 2023년 9월에 Linux Foundation의 프로젝트가 되어 CNCF에 가입되었습니다.
그 출발이 테라폼의 상용화에 반한 내용이다 보니 그 목적과 사용법 역시 종전의 테라폼의 출발과 비슷하다 할 수 있습니다.
2. OpenTofu의 주요 기능
인프라 프로비저닝 자동화
OpenTofu는 클라우드 서비스, 네트워크, 가상 머신 등 다양한 인프라 리소스를 자동으로 생성하고 관리할 수 있게 합니다.
코드형 인프라 관리
인프라를 코드로 정의하여 버전 관리가 용이하며, 인프라 변경 사항을 추적하고 관리할 수 있습니다.
플랫폼 간 호환성
AWS, Azure, Google Cloud 등 다양한 클라우드 서비스 제공자와 호환되어 다양한 환경에서 사용할 수 있습니다.
모듈화
코드 재사용성을 높이기 위해 모듈화를 지원하여 여러 프로젝트에서 공통 인프라 구성 요소를 재사용할 수 있습니다.
상태 관리
현재 인프라 상태를 저장하여 필요한 변경 사항만 적용하는 효율적인 업데이트를 가능하게 합니다.
3. OpenTofu와 Terraform의 차이점
라이선스 및 관리 주체
Terraform은 HashiCorp에서 관리하는 상용 소프트웨어인 반면, OpenTofu는 완전히 오픈소스로 커뮤니티에서 관리합니다.
지원 및 생태계
Terraform은 더 성숙한 생태계를 가지고 있으며, 상용 지원 옵션이 있습니다. 반면, OpenTofu는 비교적 새로운 프로젝트로 커뮤니티의 기여에 의존합니다.
사용 목적
OpenTofu는 HashiCorp의 Terraform에서 벗어나 자유로운 오픈소스 대안을 제공하려는 목적으로 시작되었습니다.
상용 지원 여부
Terraform은 상용 지원 및 추가 기능을 제공하는 엔터프라이즈 버전이 있지만, OpenTofu는 상용 지원이 없습니다.
4. OpenTofu 사용 예시
AWS에 웹 서버 프로비저닝
아래 예시는 OpenTofu를 사용하여 AWS에 간단한 웹 서버를 프로비저닝 하는 방법을 확인해 보겠습니다.
다음과 같이 프로젝트 디렉토리를 설정해 주시기 바랍니다.
1. 프로젝트 디렉토리 설정
mkdir opentofu-aws-example
cd opentofu-aws-example
2. OpenTofu 설정 파일 작성
main.tf 파일에 다음과 같이 작성합니다.
# main.tf
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "ami-0ebb3f23647161078" # Amazon Linux 2 AMI ID
instance_type = "t2.micro"
tags = {
Name = "OpenTofuExampleInstance"
}
user_data = <<-EOF
#!/bin/bash
echo "Hello, OpenTofu!" > /var/www/html/index.html
yum install -y httpd
systemctl start httpd
systemctl enable httpd
EOF
}
output "instance_ip" {
value = aws_instance.example.public_ip
}
3. 초기화 및 인프라 적용
OpenTofu를 초기화하고 인프라를 적용합니다.
# OpenTofu 초기화
opentofu init
# OpenTofu 파일 내용 확인
opentofu plan
# OpenTofu 파일 적용
opentofu apply
4. 결과 확인
적용이 완료되면 출력된 instance_ip 값을 확인합니다.
웹 브라우저에서 http://<instance_ip>를 열어 "Hello, OpenTofu!" 메시지가 표시되는지 확인합니다.
5. 결론
OpenTofu는 클라우드 인프라 관리를 자동화하고 코드형 인프라 방식을 통해 효율성을 극대화할 수 있는 강력한 오픈소스 도구입니다. 특히 Terraform의 대안으로써, 완전한 오픈소스와 커뮤니티 주도 개발의 장점을 가지고 있습니다.
그 출발이 테라폼의 상용화에 반하는 움직임이었지만, 많은 업체와 사용자들은 이러한 움직임이 없었더라면 울며 겨자먹기식으로 BSL을 사용할 수밖에 없었을 거라 생각이 듭니다.
이상으로 IaC의 새로운 도구, OpenTofu를 알아보고 간단한 웹 서비스를 배포해 봤습니다.
감사합니다.
'DevOps > Terraform' 카테고리의 다른 글
[Terraform] Karpenter on EKS Fargate (0) | 2024.07.28 |
---|---|
[Terraform] 테라폼 모듈을 활용한 AWS EC2 인스턴스 반복 배포 (2) | 2024.07.14 |
[Terraform] 테라폼 모듈을 활용한 athena 데이터 카탈로그 배포 (0) | 2024.07.14 |
[Terraform] 테라폼 코드를 활용한 IPAM 배포 (0) | 2024.07.07 |
[Terraform] 테라폼 코드를 활용한 레드시프트 배포 (0) | 2024.07.07 |