1. 개요

Ansible과 Puppet의 차이점을 알아보는 아티클이다.


2. Ansible은?

Ansible은 Michael DeHaan이 만들었고 2012년 AnsibleWorks에 의해 소개되었으며 현재 Red Hat이 소유하고 있습니다. (인수되었다는 말이다) Puppet이 훨씬 더 오래 사용되어 자연스러워 보이는 Puppet보다 훨씬 작은 시장 점유율을 가지고 있습니다. Puppet과 마찬가지로 오픈 소스이며 엔터프라이즈 버전 (Ansible Tower)도 있습니다. 그러나 Puppet과 달리 Ruby가 아닌 Python으로 설계되었으며 가볍고 배포가 빠릅니다. Python은 대부분의 Unix 및 Linux 시스템에 내장되어 있으므로 Ansible을 빠르게 시작하고 실행할 수 있으며 에이전트없는 특성으로 인해 설정 및 사용이 간편해집니다. 또한 CLI는 거의 모든 언어로 명령을 허용하므로 큰 이점이 있습니다. Ansible에는 Amazon Web Services (AWS)를 포함하여 광범위한 통합을 지원하는 수백 개의 모듈이 포함되어 있습니다. Ansible은 최근에야 Windows를 지원하기 시작했습니다.

Ansible은 복잡한 오케스트레이션 및 구성 관리 작업을 단순화합니다. Python 언어로되어 있으며 사용자가 필요한 프로그래밍 패러다임으로 YAML에서 명령을 스크립팅 할 수 있습니다. Ansible은 순차적으로 실행되는 SSH를 통해 노드에 명령 모듈을 전송하는 여러 푸시 모델을 제공합니다.


3. Puppet은?

Puppet은 2005 년부터 시작되었으며 CM 시장에서 가장 큰 점유율을 차지하는 가장 큰 플레이어로 간주됩니다. Luke Kanies가 설립 한 Oregon 소프트웨어 개발 회사 Puppet에서 제작했습니다. Ruby로 개발되었으며 오픈 소스이며 Linux, Unix, Mac OS 및 Windows와 같은 모든 주요 운영 체제에서 실행됩니다. Oracle과 Google은 물론 다른 유명 기업들도 Puppet을 사용하여 데이터 서버 를 운영합니다 . 상업용 버전 인 Puppet Enterprise도 PuppetLabs를 통해 구할 수 있으며 전문적인 지원이 포함되어 있지만 일부 사용자는 PuppetLabs가 회사를 구매하도록 유도하는 데 너무 공격적이라고 불평합니다. 일부 사용자는 Puppet이 새로운 기능 추가 및 버그 수정과 같은 요청 된 변경 사항을 채택하는 데 느리다고 말합니다.

Puppet은 완전한 구성 자동화 및 배포 오케스트레이션 솔루션입니다. Ruby 기반의 오픈 소스 도구입니다. 작업을 위해 JSON에 더 가까운 사용자 지정 DSL (Domain Scripting Language)을 사용합니다. 마스터-클라이언트 설정으로 실행되며 모델 기반 접근 방식을 사용합니다. 대기업에서는 서버 운영을 구성, 프로비저닝, 문제 해결 및 유지 관리하는 데 오랜 시간을 소비하는 시스템 관리자를 자동화하는 데 널리 사용됩니다.


4. 사용면의 차이점

Ansible은 설치 및 사용이 더 간단한 것으로 널리 알려져 있습니다. Puppet은 모델 기반이며 시스템 관리자를 염두에두고 제작되었습니다. 클라이언트-서버 (또는 에이전트-마스터) 아키텍처를 따릅니다. 하나 이상의 서버에 Puppet Server를 설치 한 다음 관리하려는 모든 노드에 Puppet Agent를 설치합니다. Puppet은 자체 선언적 언어 (도메인 특정 언어 또는 DSL이라고도 함)를 사용합니다. 이 회사는 환경과 필요에 따라 설치하는 데 10 ~ 30 분이 걸린다고 말합니다. Ansible에는 마스터가 있지만 클라이언트 컴퓨터에서 실행되는 에이전트는 없습니다. 모든 기능은 SSH 프로토콜을 통해 수행됩니다. 에이전트없는 것은 Ansible의 단순성에 대한 논의에서 가장 많이 선전되는 기능 중 하나입니다. Ansible은 YAML 구문을 사용합니다. 복잡한 작업은 플레이 북이라는 구성 파일에서 처리되며 명령은 거의 모든 프로그래밍 언어로 작성할 수 있습니다. 또한 Ansible은 대부분의 Unix 및 Linux 배포에 내장 된 Python으로 작성되어 설정이 훨씬 쉽고 빠릅니다. 어떤면에서 더 복잡하지만 Puppet은 사용시 Ansible보다 장점이 있습니다. 큰 문제는 구문 오류가있는 경우 작업을 실행하기 전에 Puppet에서 쉽게 강조 표시 할 수 있다는 것입니다. Ansible에서는 작업이 순서대로 실행되며 해당 작업이 실행될 때까지 특정 작업이 실패할지 여부를 알 수 없습니다. 그리고 YAML은 디버깅하기가 특별히 쉬운 언어가 아닙니다.