테라폼으로 서버 구성을 해보려고 한다.
테라폼 정의
테라폼(Terraform)은 인프라스트럭처를 코드로 관리할 수 있게 해주는 오픈소스 도구입니다. 이를 통해 사용자는 클라우드 환경에서 서버, 네트워크, 데이터베이스 등 다양한 리소스를 선언적으로 정의하고 관리할 수 있습니다. 테라폼은 선언적 언어인 HCL(HashiCorp Configuration Language)을 사용하여, 원하는 인프라 구성을 코드로 작성한 후, 이 코드를 실행하여 인프라를 자동으로 배포하고 관리합니다.
테라폼 사용 목적
테라폼을 사용하는 이유는 다음과 같습니다:
- 자동화: 인프라를 코드로 정의하여, 수동으로 리소스를 설정하는 번거로움을 줄이고, 자동화된 배포가 가능합니다.
- 버전 관리: 인프라 코드도 버전 관리가 가능해, 변경 사항을 추적하고 복구할 수 있습니다.
- 효율성: 클라우드 서비스 간의 리소스를 쉽게 관리하고, 다양한 클라우드 제공업체의 리소스를 통합적으로 처리할 수 있습니다.
- 재현성: 정의된 코드를 통해 같은 환경을 언제든지 재현할 수 있어, 개발, 테스트, 프로덕션 환경을 일관되게 관리할 수 있습니다.
테라폼 사용 방법
1. 테라폼 설치
a. 패키지 목록 업데이트
먼저, 시스템의 패키지 목록을 업데이트합니다:
sudo apt update
b. 필수 패키지 설치
테라폼을 설치하기 전에 필요한 apt-transport-https, curl, gnupg 패키지를 설치합니다:
sudo apt install -y apt-transport-https curl gnupg
c. HashiCorp GPG 키 추가
테라폼 패키지를 설치하기 위해 HashiCorp의 GPG 키를 추가합니다:
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg -o /etc/apt/trusted.gpg.d/hashicorp.asc
d. 패키지 저장소 추가
테라폼을 설치할 수 있도록 HashiCorp의 공식 APT 저장소를 추가합니다:
sudo apt-add-repository "deb https://apt.releases.hashicorp.com $(lsb_release -cs) main"
e. 패키지 목록 업데이트
새로운 저장소를 추가한 후, 패키지 목록을 다시 업데이트합니다:
sudo apt update
f. 테라폼 설치
테라폼을 설치합니다:
sudo apt install terraform
g. 설치 확인
설치가 완료되면, 테라폼 버전을 확인하여 정상적으로 설치되었는지 확인합니다:
terraform -v
2. Docker 환경에서 테라폼 활용
테라폼으로 AWS, Naver Cloud, Azure, Docker 다양한 환경에서 인프라 구성이 가능하다. 예시는 Docker로 해보겠다.
테라폼을 Docker 환경에서 활용하려면, Docker 이미지를 정의하는 테라폼 파일을 작성해야 합니다. 기본적인 예제를 소개합니다.
a. 프로젝트 디렉토리 생성
프로젝트 디렉토리를 생성하고 그 안에 main.tf 파일을 만듭니다:
mkdir terraform-docker
cd terraform-docker
touch main.tf
b. main.tf 파일 작성
main.tf 파일에 Docker를 사용할 수 있도록 아래와 같이 구성합니다:
vi main.tf
provider "docker" {
host = "unix:///var/run/docker.sock"
}
resource "docker_image" "nginx" {
name = "nginx:latest"
}
resource "docker_container" "nginx" {
name = "nginx-container"
image = docker_image.nginx.latest
ports {
internal = 80
external = 8080
}
}
이 구성은 nginx:latest 이미지를 사용해 nginx-container라는 이름으로 Docker 컨테이너를 실행하며, 8080 포트를 외부에 노출합니다.
c. 테라폼 초기화
테라폼을 사용하기 전에 프로젝트를 초기화해야 합니다:
terraform init
d. 테라폼 실행 계획 확인
테라폼이 적용할 작업을 확인하려면 terraform plan 명령어를 사용합니다:
terraform plan
e. 테라폼 실행
실제 리소스를 생성하려면 terraform apply 명령어를 실행합니다:
terraform apply
이 명령어는 변경 사항을 적용하고, Docker 컨테이너가 생성됩니다.
f. Docker 컨테이너 확인
컨테이너가 생성되었는지 확인하려면:
docker ps
g. 테라폼으로 리소스 제거
생성된 리소스를 제거하려면 terraform destroy 명령어를 사용합니다:
terraform destroy
다음 글을 참고해보자.
https://developer.hashicorp.com/terraform/tutorials/docker-get-started/infrastructure-as-code
What is Infrastructure as Code with Terraform? | Terraform | HashiCorp Developer
Learn how infrastructure as code lets you safely build, change, and manage infrastructure. Try Terraform.
developer.hashicorp.com
'DevOps' 카테고리의 다른 글
Terraform & Ansible 이용해서 Hadoop, Hbase, Spark 클러스터 구성하기 (0) | 2025.02.21 |
---|---|
Terraform으로 배포한 Ubuntu 컨테이너를 Ansible로 구성하기 (0) | 2025.02.20 |
테라폼으로 서버 구성을 해보려고 한다.
테라폼 정의
테라폼(Terraform)은 인프라스트럭처를 코드로 관리할 수 있게 해주는 오픈소스 도구입니다. 이를 통해 사용자는 클라우드 환경에서 서버, 네트워크, 데이터베이스 등 다양한 리소스를 선언적으로 정의하고 관리할 수 있습니다. 테라폼은 선언적 언어인 HCL(HashiCorp Configuration Language)을 사용하여, 원하는 인프라 구성을 코드로 작성한 후, 이 코드를 실행하여 인프라를 자동으로 배포하고 관리합니다.
테라폼 사용 목적
테라폼을 사용하는 이유는 다음과 같습니다:
- 자동화: 인프라를 코드로 정의하여, 수동으로 리소스를 설정하는 번거로움을 줄이고, 자동화된 배포가 가능합니다.
- 버전 관리: 인프라 코드도 버전 관리가 가능해, 변경 사항을 추적하고 복구할 수 있습니다.
- 효율성: 클라우드 서비스 간의 리소스를 쉽게 관리하고, 다양한 클라우드 제공업체의 리소스를 통합적으로 처리할 수 있습니다.
- 재현성: 정의된 코드를 통해 같은 환경을 언제든지 재현할 수 있어, 개발, 테스트, 프로덕션 환경을 일관되게 관리할 수 있습니다.
테라폼 사용 방법
1. 테라폼 설치
a. 패키지 목록 업데이트
먼저, 시스템의 패키지 목록을 업데이트합니다:
sudo apt update
b. 필수 패키지 설치
테라폼을 설치하기 전에 필요한 apt-transport-https, curl, gnupg 패키지를 설치합니다:
sudo apt install -y apt-transport-https curl gnupg
c. HashiCorp GPG 키 추가
테라폼 패키지를 설치하기 위해 HashiCorp의 GPG 키를 추가합니다:
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo gpg -o /etc/apt/trusted.gpg.d/hashicorp.asc
d. 패키지 저장소 추가
테라폼을 설치할 수 있도록 HashiCorp의 공식 APT 저장소를 추가합니다:
sudo apt-add-repository "deb https://apt.releases.hashicorp.com $(lsb_release -cs) main"
e. 패키지 목록 업데이트
새로운 저장소를 추가한 후, 패키지 목록을 다시 업데이트합니다:
sudo apt update
f. 테라폼 설치
테라폼을 설치합니다:
sudo apt install terraform
g. 설치 확인
설치가 완료되면, 테라폼 버전을 확인하여 정상적으로 설치되었는지 확인합니다:
terraform -v
2. Docker 환경에서 테라폼 활용
테라폼으로 AWS, Naver Cloud, Azure, Docker 다양한 환경에서 인프라 구성이 가능하다. 예시는 Docker로 해보겠다.
테라폼을 Docker 환경에서 활용하려면, Docker 이미지를 정의하는 테라폼 파일을 작성해야 합니다. 기본적인 예제를 소개합니다.
a. 프로젝트 디렉토리 생성
프로젝트 디렉토리를 생성하고 그 안에 main.tf 파일을 만듭니다:
mkdir terraform-docker
cd terraform-docker
touch main.tf
b. main.tf 파일 작성
main.tf 파일에 Docker를 사용할 수 있도록 아래와 같이 구성합니다:
vi main.tf
provider "docker" {
host = "unix:///var/run/docker.sock"
}
resource "docker_image" "nginx" {
name = "nginx:latest"
}
resource "docker_container" "nginx" {
name = "nginx-container"
image = docker_image.nginx.latest
ports {
internal = 80
external = 8080
}
}
이 구성은 nginx:latest 이미지를 사용해 nginx-container라는 이름으로 Docker 컨테이너를 실행하며, 8080 포트를 외부에 노출합니다.
c. 테라폼 초기화
테라폼을 사용하기 전에 프로젝트를 초기화해야 합니다:
terraform init
d. 테라폼 실행 계획 확인
테라폼이 적용할 작업을 확인하려면 terraform plan 명령어를 사용합니다:
terraform plan
e. 테라폼 실행
실제 리소스를 생성하려면 terraform apply 명령어를 실행합니다:
terraform apply
이 명령어는 변경 사항을 적용하고, Docker 컨테이너가 생성됩니다.
f. Docker 컨테이너 확인
컨테이너가 생성되었는지 확인하려면:
docker ps
g. 테라폼으로 리소스 제거
생성된 리소스를 제거하려면 terraform destroy 명령어를 사용합니다:
terraform destroy
다음 글을 참고해보자.
https://developer.hashicorp.com/terraform/tutorials/docker-get-started/infrastructure-as-code
What is Infrastructure as Code with Terraform? | Terraform | HashiCorp Developer
Learn how infrastructure as code lets you safely build, change, and manage infrastructure. Try Terraform.
developer.hashicorp.com
'DevOps' 카테고리의 다른 글
Terraform & Ansible 이용해서 Hadoop, Hbase, Spark 클러스터 구성하기 (0) | 2025.02.21 |
---|---|
Terraform으로 배포한 Ubuntu 컨테이너를 Ansible로 구성하기 (0) | 2025.02.20 |