안녕하세요! 하씨가문의 영광입니다.
이전시간에는 Puppet & Chef를 다뤄봤는데요!
이번 시간에서는 AWS CloudFormation & SaltStack에 대해서 알아보겠습니다!
※ 목차
AWS CloudFormation
- AWS 리소스를 생성하기 위한 각종 설정을 템플릿 파일로 만들어서 사용하는 도구입니다.
- AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스입니다.
- 필요한 모든 AWS 리소스를 설명하는 템플릿을 생성하면 CloudFormation이 해당 리소스의 프로비저닝과 구성을 담당합니다.
- AWS 리소스를 개별적으로 생성하고 구성할 필요가 없으며 어떤 것이 무엇에 의존하는 지 파악할 필요도 없습니다.
구성요소
Template |
|
Stack |
|
Change Set |
|
동작원리
- Template
작성
- JSON/YAML 코드로 템플릿을 작성합니다.
- .json, .yaml, .template, .txt 등 확장명으로 파일을 저장할 수 있습니다.
- 5가지 유형
- 템플릿 파라미터의 선택적 목록
- 출력 값의 선택적 목록
- 정적 구성 값을 조회하는 데 사용되는 데이터 테이블의 선택적 목록
- AWS 리소스 및 해당 구성 값 목록
- 템플릿 파일 형식 버전 번호
- Template 업로드
- 작성한 템플릿을 Local 또는 S3 버킷에 저장하여 업로드 합니다.
- Stack 생성
- 스택이라는 하나의 단위로 관련 리소스를 관리합니다.
- 스택의 모든 리소스는 템플릿으로 정의되며, CloudFormation은 템플릿 코드를 읽어 스택을 생성합니다.
- Stack 설정 및 resource
생성
- 템플릿에 정의된 리소스가 생성된 후 CloudFormation은 유저에게 스택이 생성되었다고 보고합니다.
- 그러면 유저는 스택의 리소스를 사용할 수 있는 것입니다.
SaltStack
- 원격 실행 도구 및 구성 관리 시스템입니다.
- 관리자는 원격 실행 기능을 사용하여 다양한 시스템에서 유연한 대상 시스템과 병렬로 명령을 실행할 수 있습니다.
- 구성 관리 기능은 지정된 정책에 따라 인프라 구성요소를 빠르고 쉽게 안전하게 가져올 수 있는 클라이언트-서버 모델을 구축합니다.
SaltStack의 장점
- 일단 빠릅니다.
- Server와 Agent 간 ZeroMQ를 통해 통신하는데, Agent 요청에 대해 비동기 병렬로 처리 하기 때문에 Agent가 많아져도 수 초안에 처리가 가능합니다.
- 구조가 심플합니다.
- Server-Agent 기반의 매우 단순한 구조입니다.
- 서버의 경우 DB 조차 사용하지 않습니다.
- 풍부한 모듈 지원
- 인프라 환경 구성을 위한 거의 대부분의 작업을 지원하는 내장 모듈이 존재합니다.
- 그리고 이를 이용해 다수의 서버를 섬세하게 제어하는게 가능합니다.
SaltStack Architecture
- Salt-Master
- Saltstack에서 Server 역할을 담당합니다.
- Master는 등록된 Minion에게 명령을 Publishing 하고 그 결과를 취합하여 보여주는 역할입니다.
- 1대의 Single master가 Minion 수천대까지 관리 가능합니다.
- Salt-Minion
- Agent의 역할이며, 구성 자동화를 하기 위한 대상 서버를 설치하면 됩니다.
- Master의 명령을 기다리고 있다가 명령이 오면 그에 맞춰 작업을 수행하게 됩니다.
- ZeroMQ
- Salt-master와 Salt-minion 간 통신에 ZeroMQ라는 비동기 메시징 라이브러리를 사용합니다.
- 따로 설치해야 하는 것은 아니며 Salt-master를 설치하면 ZeroMQ도 함께 설치 됩니다.
SaltStack의 특징
- Python 기반
- SaltStack 자체가 Python으로 개발되었으며, SaltStack에서 실행되는 모든 명령 실행 코드는 Python 기반의 Module Function으로 구현되어 있습니다.
- 만약 사용자가 원하는 custom module로 구현하고 싶다면 Python 으로 개발하면 됩니다.
- YAML & Jinja2 포맷의 설정 파일
- 자동화할 작업들을 명세하는 sls 파일들은 YAML 포맷을 기본으로 합니다.
- Template 파일의 경우, 로직에 대한 처리는 Jinja2 template을 사용합니다.
- Jinja의 경우 기존에 Django나 Flask 같은 프레임워크에서도 많이 사용된 기술이기 때문에 어렵지 않게 사용이 가능합니다.
- AES 암호화 통신
- Salt-minion이 Master에 처음 등록될 때 minion은 master에게 자신의 public key를 전달하게 됩니다.
- 그리고 master는 이 public key를 저장하고 해당 minion의 등록을 허락하는 절차를 거치게 됩니다.
- 이후 master와 minion은 ZeroMQ를 통해 통신할 때 public key와 AES key를 이용해 암호화 되어 통신하게 됩니다.
지금까지 AWS CloudFormation & SaltStack에 대해 알아보았습니다.
최근 날씨가 쌀쌀해지니 감기 조심하세요!
감사합니다 :->
'INFRA > Operation' 카테고리의 다른 글
Azure Terraform 설치 (0) | 2022.05.16 |
---|---|
Linux Terraform & Ansible 설치 방법 (0) | 2022.05.10 |
참고 : terraform & Ansible외의 도구 개념 및 관계 - 1 (0) | 2022.04.28 |
Terraform & Ansible 관계 (0) | 2022.04.20 |
Ansible 개념 (0) | 2022.04.14 |
댓글