AWS 코드 - https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/db_cluster_snapshot

 

Terraform Registry

 

registry.terraform.io

 

mkdir ~/terraform-aurora
cd ~/terraform-aurora

terraform init   # 플러그인 초기화
terraform plan   # 실행 계획 확인
terraform apply  # 리소스 생성

 

  • main.tf 생성후 terrafrom build 처리
    • terrafrom init  (초기화)
    • terrafrom plan (확인)
    • terrafrom apply (생성) 

 

    • terrfafom init

 

  • terrafom plan

 

  • terrafom apply

'IAC > Terraform' 카테고리의 다른 글

terraform 설치  (0) 2024.11.29
AWS CLI 설치

# Linux x86 (64-bit)
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install

 

Terraform 설치
https://developer.hashicorp.com/terraform/install

sudo yum install -y yum-utils shadow-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/AmazonLinux/hashicorp.repo
sudo yum -y install terraform

which terraform
terraform version

'IAC > Terraform' 카테고리의 다른 글

terraform aurora create  (0) 2024.11.29

Ansible과 Terraform은 모두 **인프라 자동화** 및 **관리 도구**이지만, 목적과 사용 방식에 있어 차이점이 있습니다. 두 도구 모두 서버 설정을 자동화하거나 클라우드 인프라를 관리하는 데 사용되지만, 사용되는 패러다임, 특징, 그리고 주된 목적에서 차이가 있습니다.

### 1. **Ansible (앤서블)**

Ansible은 주로 **프로비저닝, 구성 관리** 및 **애플리케이션 배포**에 사용되는 도구입니다.

#### 주요 특징:
- **구성 관리(Configuration Management)**: Ansible은 서버 및 애플리케이션의 상태를 정의하고, 해당 상태에 도달하도록 서버를 관리합니다. 소프트웨어 설치, 설정 변경, 서비스 시작/중지 등의 작업을 자동화합니다.
- **에이전트리스(Agentless)**: Ansible은 관리 대상 시스템에 에이전트를 설치할 필요가 없습니다. SSH를 통해 시스템에 접속하여 작업을 수행합니다.
- **절차적(Procedural)**: Ansible은 단계별로 작업을 수행하는 절차적 접근 방식을 사용합니다. 즉, 사용자가 특정 순서에 따라 어떤 작업이 어떻게 수행되어야 하는지 자세히 설명합니다.
- **Playbook**: Ansible은 `YAML`로 작성된 Playbook을 사용하여 여러 서버에 걸쳐 다양한 작업을 정의합니다.
- **멀티클라우드 지원**: Ansible은 여러 클라우드 공급자나 온프레미스 환경에서 소프트웨어와 시스템 구성 관리에 중점을 둡니다.

#### 사용 예:
- 서버의 소프트웨어 업데이트 및 구성 관리.
- 애플리케이션 배포 자동화.
- 데이터베이스 백업 또는 스크립트 실행 등의 운영 작업 자동화.

#### 장점:
- 에이전트리스 방식으로 SSH만 있으면 손쉽게 설정 가능.
- 설정과 배포가 간단하며, 다양한 시스템 환경에서 운영 가능.
- 작은 규모부터 대규모 환경까지 적용 가능.

### 2. **Terraform (테라폼)**

Terraform은 주로 **인프라 프로비저닝(Infrastructure Provisioning)**에 사용되는 도구입니다.

#### 주요 특징:
- **인프라 구축(Infrastructure as Code, IaC)**: Terraform은 클라우드 인프라 자원(서버, 네트워크, 로드 밸런서 등)을 코드로 정의하고 자동으로 프로비저닝하는 데 중점을 둡니다.
- **선언적(Declarative)**: Terraform은 최종 상태를 정의하는 선언적 접근 방식을 사용합니다. 사용자는 자원이 어떤 상태에 있어야 하는지 정의하고, Terraform이 그 상태로 만드는 작업을 자동으로 처리합니다.
- **상태 관리(State Management)**: Terraform은 인프라 상태를 저장하고 추적하여 상태 변화를 효율적으로 관리합니다. 예를 들어, 이미 생성된 자원은 다시 만들지 않으며, 변경 사항만 적용합니다.
- **멀티클라우드 지원**: AWS, Azure, GCP와 같은 다양한 클라우드 제공자를 지원하며, 여러 클라우드에서 일관된 인프라 관리가 가능합니다.
- **프로바이더(Provider)**: Terraform은 클라우드 제공자 또는 기타 API에 대한 플러그인 역할을 하는 프로바이더 개념을 사용합니다.

#### 사용 예:
- AWS, Azure, GCP 등의 클라우드 인프라 자원(서버, 네트워크 등) 생성 및 관리.
- 인프라의 상태를 코드로 정의하고 배포 자동화.
- 복잡한 클라우드 인프라를 자동화하고 버전 관리.

#### 장점:
- 인프라 자원을 코드로 관리하여 일관성 있는 환경 제공.
- 선언적 접근 방식으로 코드의 가독성 및 유지보수성 향상.
- 멀티클라우드 환경에서 일관된 인프라 관리.

### 주요 차이점

| 특성                    | Ansible                          | Terraform                        |
|-------------------------|-----------------------------------|-----------------------------------|
| **목적**                 | 구성 관리 및 애플리케이션 배포    | 인프라 구축 및 프로비저닝         |
| **패러다임**             | 절차적(Procedural)                | 선언적(Declarative)               |
| **상태 관리**            | 상태를 추적하지 않음              | 상태 관리 파일을 통해 상태 추적   |
| **사용 방법**            | SSH를 통한 에이전트리스 방식      | 프로바이더를 통한 클라우드 API 제어 |
| **사용 대상**            | 서버 설정, 소프트웨어 설치        | 클라우드 인프라 자원 생성         |
| **멀티 클라우드 지원**   | 지원(구성 관리 중심)              | 지원(인프라 구축 중심)            |
| **학습 난이도**          | 상대적으로 쉽고 직관적           | 더 복잡할 수 있지만 강력한 기능 제공 |

### 결론

- **Ansible**은 서버 구성 및 애플리케이션 배포와 같은 작업을 자동화하는 데 적합하며, **설정 관리(Configuration Management)**에 중점을 둡니다.
- **Terraform**은 인프라 자원을 코드로 관리하고, 클라우드 인프라를 자동으로 프로비저닝하는 **인프라 구축(Infrastructure as Code)**에 중점을 둡니다.

둘 다 인프라 관리에 중요한 도구이지만, **Ansible**은 서버의 **구성**을, **Terraform**은 인프라 자원의 **생성 및 관리**를 목적으로 사용하는 것이 더 적합합니다.

'IAC' 카테고리의 다른 글

DB 설치 & 운영 자동화  (0) 2024.10.16
  • 목표 
    • AWS 와 IDC 간의 dependency 없게 설치 자동화 ( OS 호환성 가능하게)
    • 단일 서버가 아닌 MHA 구성도 자동화 할수있게 
    • 설치 이후 후속작업 모니터링,알람, CM DB 연동 도 자동화 할수있는지
    • Mysql Orchestrator 도입을 하여 자동복구 가능할수 있게
      • Mysql Orchestrator : 

                             MySQL Orchestrator는 MySQL 복제 환경에서 데이터베이스 클러스터의 복제 토폴로지를 자동으로 감지, 시각화하고, 마스터 장애 복구를 수행할 수 있는 도구

                             복제 토폴로지 자동 감지 및 시각화: Orchestrator는 클러스터의 모든 복제 인스턴스를 자동으로 감지하고 시각화하여 보여줍니다.
                             장애 복구: Orchestrator는 복제된 마스터가 장애가 발생했을 때 자동으로 장애 조치를 수행하고 복제 토폴로지를 복구합니다.

 

 

             

 

  • 논의

             1) 어떻게하면 빠르고 신속하게 설치 자동화를 할수있을까? 

      • OS 요청 후 Mysql 설치 하지말고 OS에 미리 Mysql Package Image  하여 제공받자
      • Image 에 모니터링,알람, CM DB 연동 , Mysql Orchestrator 도 이식 필요

             2) AWS 와 IDC 간의 dependency 없게 

      • AWS(Amazon Linux) / IDC(Rocky 8) OS 종류가 많지 않아 Package Image 충분히 가능
      • Docker 도입시 DB 운영 안정성 보장못함

             3) Docker vs VM Golden Image

      • 자동화 Image 산정 도구

DockerVM Golden Image

가상화 방식 OS 수준 가상화 (컨테이너) 하드웨어 가상화 (하이퍼바이저)
커널 및 OS 호스트 OS 커널 공유 독립된 커널과 OS 포함
이미지 크기 및 성능 가벼움, 빠른 시작 (초 단위) 무거움, 부팅 시간 필요 (분 단위)
리소스 관리 및 격리 경량화된 격리, 커널 공유 완전한 격리, 독립된 커널 및 자원
배포 및 관리 레이어 기반 이미지, 빠르고 간편한 배포 크고 무거운 이미지, 배포 복잡
사용사례 경량화된 애플리케이션을 배포할떄
CI/CD 파이프라인에서 애플리케이션을 빠르개 배포하고 실행할때
완전한 OS 환경이 필요한 서비스
높은 보안 격리가 필요할 경우

 

    • Ansible 및 Terraform R&D 필요 여부
      •  자동화 배포 도구

'IAC' 카테고리의 다른 글

Ansible vs Terraform  (0) 2024.10.18

+ Recent posts