3. TerraForm을 활용한 인프라 관리

1. TerraForm

  • TerraForm은 반복적인 서버, 네트워크, 데이터베이스 인프라 구성작업을 코드형태로 구현(IaC)하여 정의하고 관리할 수 있도록 도와주는 오픈소스 도구입니다.

  • TerrForm은 AWS, GoogleCloud등 다양한 클라우드 제공업체를 지원하기 때문에, 젠킨스를 활용한 인프라 구성시 필요한 노드들을 한번에 Provisioning할 수 있습니다. 이를 통해 수동설정의 번거로움을 없애고 IT인프라 구축과정을 자동화 하고 표준화 할 수 있습니다.

1) IaC(Infrastructure as Code)

IaC는 서버, 네트워크, 데이터베이스와 같은 IT인프라를 수동으로 설정하는 것이 아닌, 코드로 정의하고 관리하는 개념입니다. 소프트웨어를 작성하는 것처럼 IT인프라를 코드형태로 관리하기 때문에 형상관리 및 자동화가 가능합니다.

2) TerraForm 주요 구성요소

1. Terraform Core

  • 사용자가 작성한 코드를 읽고 분석하여 실제 인프라를 어떻게 구성해야 할지 결정하는 핵심 로직을 담당

  • 사용자가 terraform.tfstate파일을 통해 정의한 인프라 상태와 현재 인프라 상태를 비교하여 어떤 변경을 가해야 목표 상태에 도달할 수 있는지 실행계획을 생성한다

2. Provider

  • Terraform Core와 실제 인프라 서비스(AWS)를 연결하는 역할을 수행

  • 각 클라우드 서비스나 플랫폼마다 전용 Provider가 존재하며 , Provider는 API를 통해 각 클라우드 서비스와 통신하여 , 인프라 자원을 생성 , 수정 , 삭제하는 작업을 수행한다.

3. Resource

  • Terraform을 사용하여 관리하려는 인프라 자원

  • VM, Network, DB, Storage등 클라우드 서비스가 제공하는 모든 서비스를 resource블록을 통해 코드로 정의한다.

2.TerraForm을 활용한 AWS인프라 구성

필요 인프라 요약

  1. 젠킨스 컨트롤러(t3.medium)

    1. mysql server를 함께 추가할 예정. 실제 운영환경에서는 DB인프라도 별도로 구축해야함.

  2. 젠킨스 Agent1, Agent2(t3.medium)

  3. Sonarqube 테스트 서버(t3.small)

  4. 스테이징서버(t3.small)

  5. 프로덕션 서버(t3.small)

1) AWS 액서스키 발급

진행순서

  • Terraform 작성방법 및 문법에 대해서는 학습하지 않습니다.

  1. AWS 사용자 액서스키 발급 (IAM -> 액서스 관리 -> 사용자 -> 사용자 생성)

  1. 사용자 이름, 정책설정 후 User생성

  1. user-terraform-user - 액세스키 생성

  1. AWS 외부 애플리케이션 선택 및 태그명 설정

  1. 발급받은 액세스키를 안전한 곳에 저장

2) Terrform 스크립트 작성

  1. 전달한 첨부파일을 다운로드 받아 c드라이브로 이동

  • variables.tf 변경

3) SSH인증키 생성

  • C드라이브 -> zenkins_infra -> ssh-keygen -t rsa -f edukey -N ""

4) terraform init

  • apply메서드를 통해 AWS Provider생성

terraform init

5) terraform apply

  • apply메서드를 통해 AWS Resource생성

terraform apply --auto-approve

  • 결과 확인

Last updated