AICC 과정 정리

Ansible, Terraform, ELK Stack

미르아 2024. 12. 30. 16:16
728x90

1. Ansible

정의

  • Ansible은 오픈 소스 IT 자동화 도구입니다.
  • 주로 서버 설정 관리, 애플리케이션 배포, 네트워크 설정 등을 자동화하기 위해 사용됩니다.

특징

  • Agentless: 별도의 에이전트를 설치하지 않아도 SSH 연결을 통해 서버를 관리합니다.
  • YAML 형식: 사람이 읽기 쉬운 Playbook(YAML 파일)로 구성됩니다.
  • Idempotency: 동일 작업을 여러 번 실행해도 한 번 실행한 것과 같은 결과를 보장.

2. Terraform

정의

  • Terraform은 **인프라를 코드로 관리(IaC)**할 수 있는 도구입니다.
  • 클라우드 리소스(예: 서버, 데이터베이스, 로드밸런서)를 코드로 선언하고 자동화된 방식으로 생성/관리합니다.

특징

  • Multi-Cloud 지원: AWS, Azure, GCP 등 다양한 클라우드 플랫폼과 호환.
  • State Management: 현재 인프라 상태를 파일로 저장하여 추적 가능.
  • 모듈화: 재사용 가능한 모듈을 생성하여 복잡한 인프라도 쉽게 관리.

3. ELK Stack

정의

  • ELK는 Elasticsearch, Logstash, Kibana의 약자입니다.
  • 주로 로그 데이터 분석 및 시각화를 위해 사용됩니다.

구성 요소

구성 요소 설명

Elasticsearch 검색 및 분석을 위한 데이터 저장소.
Logstash 다양한 소스에서 데이터를 수집, 처리, 변환 후 Elasticsearch로 전송.
Kibana Elasticsearch 데이터를 기반으로 대시보드와 시각화를 제공합니다.

표로 정리

도구 주요 역할 사용 목적 설치 및 설정

Ansible 서버/네트워크 설정 자동화 도구 서버 설정, 애플리케이션 배포 자동화 1. 로컬 PC에 설치 2. SSH 키 생성 및 대상 서버에 배포 3. Playbook 작성 (YAML 형식) 4. 명령 실행: ansible-playbook
Terraform 인프라 관리 자동화 클라우드 리소스 생성/관리 자동화 1. Terraform 설치 2. 클라우드 제공업체 API 키 설정 3. .tf 파일 작성 4. 명령 실행: terraform apply
ELK Stack 로그 데이터 분석 및 시각화 로그 수집, 저장, 시각화 1. Docker Compose로 Elasticsearch, Logstash, Kibana 설치 2. 로그 소스 설정(Logstash) 3. Kibana 대시보드 설정

Ansible, Terraform 설치 방법

Ansible

  1. 설치
  2. bash 코드 복사 sudo apt update sudo apt install ansible -y
  3. SSH 키 생성 및 배포
  4. bash 코드 복사 ssh-keygen -t rsa ssh-copy-id user@target-server
  5. Playbook 작성 및 실행실행: ansible-playbook playbook.yml
  6. yaml 코드 복사 - name: 설치 테스트 hosts: all tasks: - name: Apache 설치 apt: name: apache2 state: present

Terraform

  1. 설치
  2. bash 코드 복사 sudo apt update sudo apt install -y wget unzip wget <https://releases.hashicorp.com/terraform/>/terraform__linux_amd64.zip unzip terraform__linux_amd64.zip sudo mv terraform /usr/local/bin/ terraform --version
  3. Terraform 초기화
  4. bash 코드 복사 terraform init
  5. 구성 파일 작성실행: terraform apply
  6. hcl 코드 복사 provider "aws" { region = "us-west-1" } resource "aws_instance" "example" { ami = "ami-0c55b159cbfafe1f0" instance_type = "t2.micro" }
728x90