본문 바로가기
Knowledge/Tools & Command

Chef 란? Chef 도입 일기

by 미네마네모 2020. 2. 9.

내가 쓰고 있는 Chef가 무엇인지 나 자신에게 질문하였지만 대답못하였다. (멍청한..)

그래서 Chef란 무엇이고 내가 Chef를 선택하고 사용한 내용을 말해보려고 한다.

 

Chef 란?

 

chef는 간단하게 말하자면 루비(Ruby)와 얼랭(Erlang)으로 작성된 형상 관리 도구이자 회사 명이다.

 

사용자가 특정 서버의 유틸리티들을 관리하고 어떻게 구성할지를 레시피(Recipe)에 작성한다.

 

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

 

Chef 도입 배경

내가 회사에서 개발하고 관리하던 애플리케이션있었고 개발 및 관리를 혼자하다 보니 패키징 또한 내가 맡아서 해야했다.

기존에 사용하던 패키지는 Bash Script로 만들어졌다.
> Bash Script의 단점. 애플리케이션 설치에 대한 예외처리 하나하나 모두 신경 써야한다.

애플리케이션 규모가 커지면서 조금씩 커지면서 개발에만 치중하기에는 설치 패키지에 문제가 발생하는 빈도가 높아졌다.
> Chef의 장점 . 전문적으로 만들어진 형상관리 도구이다 보니 제공되는 기능이 많다.
(Bash Script 단점을 보안, 패키징에 투자하는 시간을 애플리케이션 개발에 집중 할 수 있다.)

 

내가 Chef 로 만든 패키지에서 하는 일 목록

설치 대상 디렉토리 세팅
바이너리 파일, 라이브러리, 스크립트, 서비스 설정 파일 세팅
OS 단 설정 세팅 (네트워크 세팅 등...)
데이터 베이스 작업
서비스 재시작

 

위 내용을 기반으로 보통 recipe 안에서 하는 일을 정리하면 아래와 같다.

1. 시스템 명령어 수행 및 결과 처리

2. 서비스에 관련된 파일 컴파일 또는 배포

3. 서비스에 관련된 설정 파일 배포 및 세팅

4. OS단에 관련된 설정 파일 배포 및 세팅

5. 서비스 시작 또는 멈춤

 

기타...

Chef InSpec이라는 어플리케이션 또는 인프라를 미리 정의한 Rule에 따라서 테스팅하고 검사하는 프레임워크가 있다.

다음에는 Chef InSpec을 도입해보자

 

 

 


+ 간단한 recipe example 추가

 

댓글