바로 가기

Ansible과 Chef: 알아야 할 사항

URL 복사

Ansible®과 Chef는 커뮤니티 오픈소스 IT 자동화 툴입니다. 둘 다 수많은 서버 또는 엔드포인트 기기에서 시스템 구성 및 프로비저닝, 소프트웨어 배포, 업데이트 관리와 같은 일상적인 태스크를 자동화하여 IT 운영과 DevOps 작업을 간소화할 수 있습니다.

Ansible은 자동화 대상에 추가 소프트웨어를 설치하지 않아도 되는 더 유연한 에이전트리스 접근 방식 덕분에 사용하기 쉬운 것으로 알려져 있습니다. 이와 달리 Chef는 에이전트 기반 접근 방식을 취하므로 각 머신에 추가 소프트웨어가 필요합니다. 또 다른 주요 차이점은 Ansible이 배우기 쉬운 관리자 중심의 Python 기반 구성 언어인 YAML을 사용하는 반면, Chef는 배우기 어려운 개발자 중심의 도메인별 언어(Domain Specific Languages, DSL)인 Ruby를 사용한다는 것입니다. 

이 문서는 Ansible과 Chef의 유사성과 차이점을 자세히 설명하는 데 도움이 됩니다.

더 광범위한 자동화 툴 환경에서 Ansible과 Chef는 어디에 적합할까요? Ansible, Chef, Salt, Puppet은 일반적으로 사용되는 네 가지 오픈소스 IT 자동화 툴입니다. 자동화 접근 방식에는 각기 뚜렷한 차이가 있으며 모두 다양한 소프트웨어 기업이 판매하는 엔터프라이즈 솔루션으로 제공됩니다. 많은 IT 조직이 다양한 목적으로 2개 이상의 솔루션을 사용하거나 여러 솔루션을 조합하여 사용하고 있습니다. 

  • Ansible은 2015년 Red Hat에 인수되었으며 Red Hat® Ansible Automation Platform으로 제공됩니다.
  • Chef는 2020년 Progress에 인수되었으며 Chef Enterprise Automation Stack을 비롯한 일련의 상용 제품에서 사용할 수 있습니다. 
  • Salt(제품명: SaltStack)는 2020년 VMWare에 인수되어 vRealize Automation 포트폴리오(최근 VMware Aria Automation으로 브랜드명 변경)에 편입되었습니다. VMware는 2022년 Broadcom에 인수되었습니다. 
  • Puppet은 Perforce에서 지원하며 Puppet Enterprise와 Puppet Bolt를 비롯한 여러 상용 제품에서 사용할 수 있습니다.

Ansible

Ansible은 Python으로 작성된 오픈소스 커맨드라인 IT 자동화 소프트웨어 애플리케이션입니다. 시스템 구성, 소프트웨어 배포, 고급 워크플로우 오케스트레이션을 통해 애플리케이션 배포, 시스템 업데이트, 네트워킹 구성 및 운영 등을 지원할 수 있습니다. Red Hat Ansible Automation Platform은 다양한 엔터프라이즈 기능과 함께 Ansible을 기반으로 구축된 서브스크립션 제품입니다.

Ansible의 강점은 커뮤니티에서 나옵니다. 주요 GitHub 리포지토리에는 수천 명의 기여자가 있으며, 2022년 가을 기준 수만 개의 리포지토리가 이 리포지토리에 의존하고 있습니다. 인기 있는 사용자 컨퍼런스인 AnsibleFest는 연례 Red Hat Summit으로 통합되었으며, Ansible Meetup은 전 세계에서 자주 열립니다. 이 열정적인 사용자 커뮤니티는 Ansible과 기타 인기 있는 소프트웨어 프로젝트의 강력한 통합을 유지하는 기여자를 포함한 대규모 Ansible 전문 지식 풀을 반영합니다. Ansible 사용자는 기능을 확장하는 데 도움이 되는 수백 개의 모듈과 플러그인에 액세스할 수 있습니다.

Ansible은 단순성과 사용 편의성에 중점을 두어 설계되었습니다. 또한 유동적인 부분을 최소화하여 보안과 신뢰성을 강화합니다. Ansible은 OpenSSH를 사용해 전송하며(다른 전송 및 풀(pull) 모드를 대안으로 사용) 사용자가 많은 교육을 받지 않고도 빠르게 시작할 수 있도록 사람이 읽을 수 있는 언어를 사용합니다.

Ansible은 제어 노드(Ansible이 실행되는 위치)와 관리되는 노드(자동화되고 있는 기기로, Linux® 또는 Windows 머신인 경우가 많음)라는 개념을 사용합니다. Ansible은 에이전트리스이므로 관리되는 노드에 애플리케이션이나 서비스를 설치하지 않고도 여러 기기와 통신할 수 있습니다. Ansible Automation Platform은 오토메이션 메시라는 기술을 사용해 실행 노드 전반에 자동화 작업을 분산할 수 있습니다.  

Ansible은 사람이 읽을 수 있는 YAML로 작성된 파일인 Ansible Playbook을 사용해 인프라의 여러 부분을 세밀하게 오케스트레이션할 수 있습니다. Ansible은 원하는 상태에 도달하기 위한 여러 단계를 정의하여 IT 인프라의 구성을 유지하려고 하는 절차적(또는 명령적) 프로그래밍 방식을 사용합니다.

Chef

Chef는 인프라를 코드로 변환하는 Ruby DSL로 작성된 오픈소스 IT 자동화 플랫폼입니다. Ansible Playbook과 마찬가지로 Chef는 Cookbook과 레시피(예를 들면, 제품 이름)라고 하는 재사용 가능한 정의를 사용해 온프레미스, 클라우드 또는 하이브리드 등 환경에 구애받지 않고 네트워크 전반에서 인프라를 구성, 배포, 관리하는 방식을 자동화합니다.  

Ansible과 달리 Chef는 에이전트 기반 아키텍처를 사용합니다. 여기에서 Chef 서버는 주 머신에서 실행되며 Chef 클라이언트는 각 클라이언트 머신에서 에이전트로 실행됩니다. 또한 '워크스테이션'이라는 추가 구성 요소가 있습니다. 이 구성 요소에는 명령 없이도 테스트를 거쳐 주 Chef 서버에서 클라이언트 머신으로 풀링되는 모든 구성이 포함되어 있습니다. 이러한 풀 구성을 관리하려면 프로그래머의 전문성이 필요하므로 Chef는 경험이 풍부한 DevOps 전문가라 할지라도 다른 자동화 툴보다 사용하기가 더 복잡합니다.      

에이전트 기반 아키텍처(Chef에서 사용)는 관리되는 환경에서 실행하기 위해 에이전트라는 특정 소프트웨어를 필요로 하는 인프라 및 자동화 모델을 가리킵니다. 에이전트와 에이전트의 모든 종속성을 모든 대상 노드에 설치해야 하며 추가 보안 검사와 룰이 필요합니다. 이는 에이전트를 사용할 수 없거나 실행할 수 없는 오브젝트를 자동화해야 할 때 문제가 될 수 있으며 에이전트를 유지 관리해야 합니다.

에이전트리스 아키텍처(Ansible에서 사용)는 관리되는 환경에 에이전트 소프트웨어를 설치하지 않고도 IT 기기를 자동화하고 관리하는 방법을 가리킵니다. 제어 소프트웨어는 SSH를 통해 원격 머신에 연결되고 오래 걸리는 설정 프로세스 없이 관리를 시작합니다. 이 아키텍처는 구성이 완료된 후 배포 시스템을 유지 관리할 필요가 없습니다.

구성 관리란 컴퓨터 시스템, 서버 및 소프트웨어를 원하는 상태로 일관되게 유지하는 프로세스로, 시간이 지나면서 다양한 변경 사항이 적용되더라도 시스템이 계속 정상적으로 작동하도록 보장합니다. 구성 관리는 자동화할 수 있어, 비용, 복잡성, 인적 오류의 위험이 줄어듭니다.  

DevOps 및 DevSecOps는 각각 개발 운영과 개발, 보안, 운영을 나타내는 용어로서, IT 라이프사이클 전반에서 보안을 공동 책임으로 통합하는 문화, 자동화 및 플랫폼 설계에 대한 접근 방식입니다. DevOps와 DevSecOps는 보안을 항상 DevOps 접근 방식의 일부로 포함한다는 점에서 서로 동일합니다. 하지만 많은 사람들이 이러한 포함 관계를 명시하기 위해 DevOps를 DevSecOps라고 부르고 있습니다.

YAML은 Yet Another Markup Language(또는 YAML Ain’t Markup Language)의 약어로서, 구성 파일 작성에 자주 사용되는 데이터 직렬화 언어입니다. YAML은 사람이 읽을 수 있고 이해하기 쉽게 설계되었으며, 다른 프로그래밍 언어와 함께 사용할 수 있습니다. YAML은 JSON(JavaScript Object Notation)의 상위 집합입니다.

자동화 솔루션을 선택하려면 현재 사용할 수 있는 기능을 평가해야 할 뿐 아니라 플랫폼에 대한 장기적인 전망도 고려해야 합니다. 또한 Chef와 Ansible 모두 확장성이 뛰어나고 Linux/Unix에서 실행되는 제어 머신과 Windows에서 실행할 수 있는 노드를 통해 높은 상호운용성을 제공하는 반면, Ansible은 활발한 오픈소스 커뮤니티와 Red Hat의 지원 측면에서 더 뛰어납니다. 

조직이 여러 가지 자동화 솔루션을 사용하는 것 역시 일반적입니다. Ansible은 지원되는 대규모 통합 에코시스템에 연결되며, 자동화 프로그램의 오케스트레이터로서 기타 여러 가지 자동화 및 구성 관리 툴과 함께 사용할 수 있습니다. 또한 Ansible은 Amazon Web Services(AWS), Microsoft Azure, Google Cloud Platform 등과 같은 퍼블릭 클라우드 하이퍼스케일러에서 시스템을 자동화할 수 있습니다.

단순성, 사용 편의성, 에이전트리스 자동화 솔루션을 선호하는 사용자들은 Chef보다 Ansible을 더 많이 선택합니다. 또한 대규모 기여자 커뮤니티 및 파트너십의 장점을 누릴 수 있고, 네트워크 및 인프라 자동화와 같은 다양한 IT 도메인에 널리 도입되었으며, 다른 툴과의 통합 측면에서 높은 평가를 받고 있습니다. 

오픈소스를 핵심으로 하는 Red Hat Ansible Automation Platform은 강화되고 테스트를 거친 서브스크립션 제품으로, 조직에 전체 라이프사이클 지원을 제공합니다. 업스트림 프로젝트인 Ansible은 전 세계 수천 명의 기여자들이 지닌 경험과 인텔리전스를 활용할 수 있습니다. 

Ansible Automation Platform에는 다수의 업스트림 구성 요소, 60개 이상의 파트너가 제공하는 140개 이상의 Red Hat Ansible Certified Content Collections, 조직 내 자동화 설치, 구성, 지원을 위한 계획을 면밀히 수립할 수 있도록 지원하는 서비스형(as-a-Service) ROI(투자수익률) 툴이 포함되어 있습니다. 또한 오토메이션 개발자, 엔지니어, 운영팀 사이에서 플러그 앤 플레이 경험을 제공하는 동시에 다기능 팀을 목표로 한 엔드 투 엔드 자동화 경험을 창출합니다.

Red Hat Insights 및 automation analytics 등과 같은 Red Hat Ansible Automation Platform의 기능은 자동화 성능에 관한 사용 가능 정보를 제공하므로 영향을 측정하고 문제를 더욱 정확하게 모니터링하거나 해결할 수 있습니다. 오토메이션 메시를 통해 제어 및 실행 용량을 개별적으로 확장할 수 있으므로 다운타임이 거의 또는 전혀 없이 자동화가 필요한 엔드포인트에서 더 가까운 곳에 자동화를 제공할 수 있습니다. 따라서 데이터센터에서 클라우드, 엣지 위치까지 일관된 자동화 경험을 달성할 수 있습니다.

Ansible은 사용하기 쉬운 에이전트리스 IT 자동화 솔루션으로서 단순성과 유연성, 강력한 사용자 커뮤니티를 제공한다는 점에서 독보적입니다.

추가 자료

문서

Ansible 기본 사항 학습하기

Ansible은 프로비저닝 및 구성 관리와 같은 IT 프로세스를 자동화합니다. 여기서 소개하는 핵심 개념을 통해 Ansible의 기본 사항을 학습하세요.

문서

비즈니스 프로세스 관리란 무엇일까요?

비즈니스 프로세스 관리(Business Process Management, BPM)는 전략적 비즈니스 목표를 달성하기 위해 엔드 투 엔드 비즈니스 프로세스를 모델링, 분석, 최적화하는 프랙티스입니다.

문서

Red Hat의 자동화를 선택해야 하는 이유

Red Hat Ansible Automation Platform에는 여러 팀에서 자동화를 공유하고 전사적 자동화를 구현하는 데 필요한 모든 툴이 포함되어 있습니다.

자동화에 대한 자세한 내용

제품

다양한 시각으로 고객의 상황을 파악하고 이를 바탕으로 고객의 과제를 분석하여 종합적이고 비용 효율적인 솔루션을 통해 문제를 해결하도록 돕는 전략적인 조언자입니다.

자동화 과정의 어느 단계에 있든지 상관없이 전사적 자동화를 구현할 수 있는 플랫폼입니다.

리소스

교육

무료 교육 과정

Ansible Essentials: Simplicity in Automation Technical Overview

무료 교육 과정

Red Hat Ansible Automation for SAP