[Ansible] Configuration Management Tools이란?

김우경·2021년 5월 11일
0

ci/cd 찍먹

목록 보기
7/13

소프트웨어공학 수업을 들으면서 정리한 내용입니다.

Configuration Management Tools

-> IT Automation의 기본 도구이다.

자동화된 형상 관리 툴이 필요한 이유?

  • 대규모 heterogeneous computer cluster의 관리
    -> 수천~수만대 이상의 서버를 관리하기 위해
  • HW의 모니터링 및 SW의 설치
  • DevOps 중 Deploy에 해당!
  • 환경 불일치 문제 해결
  • Roll Back의 자동화

IaC

  • Infrastructure as Code
  • Code를 통해서 IT operations(build, deploy, manage)를 자동화
  • 중앙 집중으로 -> 중앙에서 code write후 수백대 이상의 기기에 환경 제공

Shell script & CM tool script

  • 각 서버/기기에 환경 provision하는 것은 동일
  • Shell script: workflow, 숙련도, 일관성, upgrade 등의 이슈가 발생할 수 있다.
  • CM script: 이슈를 제거/자동 처리한다는 점에서 훨씬 편리하다.
    -> 각각의 도구에서 제공하는 언어 이용
    -> CM Tool UI로 더 편리하게 사용 가능

여러 CM Tools

: Puppet, Chef, SaltStack, Ansible

Scalability

: 4개의 도구 모두 우수 -> 수천대 이상의 기기를 동시에 관리 가능

Easy to setup

  • Puppet, Chef, Saltstack: master-agent
  • Ansible: master only -> 더 설정이 쉬움

Availability

  • Puppet, Saltstack: multi master
  • Chef: backup chef
  • Ansible: primary, secondary server
    -> 모두 backup method를 두고 있음

Management

  • Puppet: not easy -> domain specific language 존재
  • Saltstack: easy to medium
  • Chef: Ruby DSL -> 어려움
  • Ansible: yaml -> 쉬움

Interoperability

: 정보처리 상호 운용성

  • Puppet, Saltstack, Chef : master only on Linux, agents on linux/windows
  • Ansible: server on linux/windows, clients on linux/windows

Configuration Languages

  • Puppet: puppet DSL -> admin 편의
  • Saltstack: Yaml built on Python -> 쉬움
  • Chef: Ruby DSL -> 개발자 편의 : Chef에 대한 자료가 많음
  • Ansible: Yaml built on Python -> 쉬움

인기도

  • Ansible이 가장 널리 사용됨

CM Architecture

Pull Architecture

  • Agents가 주기적으로 Master에게 configuration해야하는지 문의
  • 독자적인 기능 추가에 편리
    -> 나머지 CM tools들

Push Architecture

  • Server가 주기적으로 node들에 configuration 주입
  • Client입장에서의 설정 필요 x
  • Root 권한의 shell command로 수행
  • server에서 ssh connection으로 machine에 연결
  • Pull Architecture에 비교해서 훨씬 간편
    -> Ansible
profile
Hongik CE

0개의 댓글