LINUX

[LINUX]Chef란 무엇인가?

Heeseo Cho 2021. 11. 15. 11:34

Chef란?

 

셰프(Chef)란 루비와 얼랭으로 작성된 형상 관리 도구의 이름이자 회사명이기도 하다. 

시스템 구성 '레시피(Recipe)'를 작성하기 위해 순수 루비형태의 도메인 특화 언어(DSL)를 사용한다. 회사의 서버의 구성 및 유지보수 작업을 간소화하며, 인터냅, 아마존 EC2, 구글클라우드 플랫폼, 오픈스택, 소프트레이어, 마이크로소프트 애저 등과 같은 클라우드 기반 플랫폼들과 통합해 자동적으로 새로운 머신을 프로비저닝하고 구성할 수 있다.

이러한 레시피들의 관리를 쉽게 하기 위해 쿡북(Cookbook)으로 묶을 수 있다.

 

 

Bash script가 아닌 Chef를 사용하는 이유.

 

Bash script는 어플리케이션 설치에 대한 예외처리를 하나하나 모두 신경써야한다.

반면, Chef는 전문적인 형상관리 도구이므로 제공되는 기능이 많다. 그러므로 Bash script의 단점을 보완할 수 있다.

이렇게 Chef는 전통적으로 리눅스를 관리하기 위해 사용이 되었으나, 이후의 버전들은 마이크로소프트 윈도우도 지원하고 있다.

 

 

셰프는 클라이언트/서버 모드로, 또는 "chef-solo"라는 이름의 스탠드얼론 구성으로 구동할 수 있다. 클라이언트/서버 모드에서 셰프 클라이언트는 노드에 대한 다양한 속성을 셰프 서버로 보낸다. 이 서버는 Solr을 사용하여 이러한 속성을 색인화하며, 클라이언트가 이 정보를 조회할 수 있는 API를 제공한다. 셰프 레시피는 이러한 속성을 조회한 다음 결과 데이터를 사용하여 노드 구성을 지원한다.

 

 

Chef의 아키텍처

 

Chef의 아키텍처는 3가지로 나뉜다.

 

  • 셰프 워크스테이션: Chef 사용자가 구성을 생성, 테스트 및 적용할 수 있는 로컬 개발 플랫폼입니다. 로컬 데스크톱, Chef DK(개발 키트)가 설치된 랩톱이 될 수 있습니다. 프로덕션으로 승격하기 전에 개발/테스트 환경으로 사용할 수 있습니다.
  • 셰프 서버: Chef-server 소프트웨어가 설치되어 구성되어 있는 서버입니다. Chef의 코드를 관리하고 Chef Workstation에서 구성 코드에 액세스하는 작업을 담당합니다. Chef 서버는 Linux 시스템이어야 하며 다른 운영 체제는 지원하지 않습니다.
  • 셰프 클라이언트: 셰프 코드 및 바이너리의 기타 종속 파일과 같은 구성 세부 정보를 위해 셰프 서버에 접속하는 서버가 있습니다. Chef 서버에서 코드를 가져와 로컬로 배포합니다.