소프트웨어공학 수업을 들으면서 정리한 내용입니다.
-> IT Automation의 기본 도구이다.
자동화된 형상 관리 툴이 필요한 이유?
- 대규모 heterogeneous computer cluster의 관리
-> 수천~수만대 이상의 서버를 관리하기 위해
- HW의 모니터링 및 SW의 설치
- DevOps 중 Deploy에 해당!
- 환경 불일치 문제 해결
- Roll Back의 자동화
IaC
- Infrastructure as Code
- Code를 통해서 IT operations(build, deploy, manage)를 자동화
- 중앙 집중으로 -> 중앙에서 code write후 수백대 이상의 기기에 환경 제공
- 각 서버/기기에 환경 provision하는 것은 동일
- Shell script: workflow, 숙련도, 일관성, upgrade 등의 이슈가 발생할 수 있다.
- CM script: 이슈를 제거/자동 처리한다는 점에서 훨씬 편리하다.
-> 각각의 도구에서 제공하는 언어 이용
-> CM Tool UI로 더 편리하게 사용 가능
: 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 -> 쉬움
인기도
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