5. - Internal Use Only -
About Chef
• 오픈소스 시스템 관리 프레임워크
• OPSCODE (www.opscode.com)
• 2009년 1월에 정식발표
• Ruby 기반 DSL (Domain Specific Language)
• 풍부한 기반 설정 파일 제공
6. - Internal Use Only -
About Chef
1. apache 설치법 작성(CookBook) 2. 설치법 Chef Server로 전달
4. Apache 설치된 서버의 변신 3. 설치법으로 서버 설정
7. - Internal Use Only -
About Chef
• Client Server 구조
• 관리자는 knife를 통해 설정 정보(cookbook)를 서버에 업로드
• Chef-Client는 Node에서 실행되면서 Server로부터 설정 정보를 받아서 설치 및 설정 진행
이미지 출처: https://docs.chef.io
8. - Internal Use Only -
About Chef
• Chef는 인프라 관련설정 및 설치 등을 코드로 형상관리 해주는 프레임워크 이다.
• 시스템 구성관리을 위해 모듈을 제공해주는 자동화 플랫폼 이다.
• Chef는 Ruby기반으로 구성되어 기본적으로 Ruby를 알고 있으면 접근하기 쉽다.
이미지 출처: https://docs.chef.io
10. - Internal Use Only -
Chef Component
• Chef Server
- 노드인증, 노드관리, Client관리 Cookbook(Recipe), 계정, 권한 등의 관리가 Chef 서버를 통해
이루어진다. Chef Server로 Rest API를 통해 접근이 가능하며, WebUI로 관리할 수 있도록
제공해 준다.
• Chef Client
- Chef Server가 관리하는 Node 서버에 설치된다.
- Chef Server와 통신하여 Cookbook(Recipe)을 동기화하고, 새롭게 다운로드 한 Cookbook(Recipe)
을 컴파일하며 노드에서 실행하는 역할을 수행한다.
- Chef Client 포그라운드 실행을 통해 Cookbook(Recipe)을 적용할 수 있으며, 백그라운드로
실행해 놓으면 주기적으로 변경사항을 감지하여 자동으로 Cookbook(Recipe)을 적용할 수 있다.
• Knife(Workstation)
- CLI 기반으로 Chef를 조작, 관리 할 수 있도록 제공해 준다.
- 아마존 EC2 서비스도 관리 할 수 있도록 제공해 준다.
11. - Internal Use Only -
Chef Component
• CookBook
- 노드에 적용할 인프라 설정 및 소프트웨어 설치를 가지고 있는 코드 이다.
cookbook은 recipe, resource definition, attribute, library, cookbook file, template file,
metadata의 모음이다.
cookbook은 Chef에서 공유되고 분배(유통)의 단위 이다.
Chef를 사용하는 대부분은 Cookbook을 쓰는 일이다.
• Run list
- Node에서 실행 될 Cookbook(recipe)의 목록이다.
• Roles
- Node 실행될 Cookbook(recipe)의 묶음이다.
• Data Bag
- Chef Server에 저장되는 key/value 형식의 데이터 저장소, data bags의 데이터는 모든 Cookbook에서
전역변수처럼 사용할 수 있다.
12. - Internal Use Only -
Chef Component
CookBook/
- attributes/
- definitions/
- files/
- libraries/
- metadata.rb
- recipes/
- templates/
- resources/
이미지출처: https://www.ibm.com/developerworks/community/blogs/9e635b49-09e9-
4c23-8999-a4d461aeace2/entry/215?lang=en
13. - Internal Use Only -
Chef Component
• CookBook/
- attributes/
- definitionbs/
- files/
- libraries/
- metadata.rb
- recipes/
- templates/
- resource/
• Recipe 적용 시 노드에 사용될 값을 지정할 수
있다.
• Recipe에서 사용할 변수를 기술한다.
http.conf 파일에 동적으로 설정하는것들을
프로퍼티 형태로 지정 하면 recipes, Templates
컴퍼넌트에서 사용가능
14. - Internal Use Only -
Chef Component
• 기존 Resource를 결합하여 재사용 가능한
새로운 Resource를 정의 할 수 있다.
• Recipe에서 사용할 파일이 저장되는 곳이다.
설정파일과 패키지 파일이 있다.
• Resource 기능들을 확장해서 class로 만들어
놓으면, 이를 Recipe에서 호출해서 사용한다.
• Chef에 Recipe 및 종속성 버전 제약, 지원
플랫폼, Cookbook간의 의존 관계 등을
전달하는데 사용한다.
• CookBook/
- attributes/
- definitionbs/
- files/
- libraries/
- metadata.rb
- recipes/
- templates/
- resource/
15. - Internal Use Only -
Chef Component
• CookBook/
- attributes/
- definitionbs/
- files/
- libraries/
- metadata.rb
- recipes/
- templates/
- resource/
• File과 비슷하지만, Attributes 의 내용을 포함
시킬수 있다. 파일 확장자는 .erb 형식으로
작성한다.
• Node에 작업할 내용을 코드로 작성한다.
(cookbook의 시작점 main 이라고 보면 된다.)
16. - Internal Use Only -
• 전 세계 사람들이 작성한 cookbook 다운로드 할 수 있는 수퍼마켓 사이트가 있다.
• https://supermarket.chef.io/
Chef Component
18. - Internal Use Only -
Chef vs puppet vs Ansible
구분 Puppet Chef Ansible
언어 Ruby Ruby Python
시스템자동화 접근 관점 System Admin Developer mindset System Admin
구성요소 Agent / Master Server Client / Server / Workstation Standalne (ssh)
사용 효율성 10 line 소요 43 line 소요 코드양 적음
구동 플랫폼
Ruby 구동 되는 모든 플랫폼
(Ruby 1.8.5 이상) RHEL
(CentOS) 4.0 이상
Scientific Linux 4.0 이상
Oracle Linux 4.0 이상
Debian 5.0 이상
Ubuntu 8.04 LTS 이상
Fedora 15.0 이상
SUSE Linux Enterprise 11.0 이상
Gentoo Linux FreeBSD 4.7 이상
OpenBSD 4.1 이상
Mac OS X 10.4 이상
Oracle Solaris 10.0 이상
AIX 5.4 이상 HP-UX
Windows Server 2003 2008
Windows 7
Ruby & CouchDB version 확인요
(Ruby 1.8.7 1.9.1 1.9.2 with SSL)
RHEL CentOS 5.6+ 6.x
Ubuntu (10.04+)
Debian (4.0, 6.0)
RHEL & CentOS (5.x 6.x)
Fedora 10+ Solaris 9,10,11,
Sparc Solaris 10,11 (x86 & x64)
Mac OS X (10.4 10.5 10.6. 10.7)
Windows 7 Windows Server 2003
R2, 2008 R2
Red Hat Enterprise Linux 6 64-bit
Red Hat Enterprise Linux 7 64-bit
CentOS 6 64-bit
CentOS 7 64-bit
Ubuntu 12.04 LTS 64-bit
Ubuntu 14.04 LTS 64-bit
Windows 지원
상업화 유/무 상업화된 Version 있음 상업화 버전 및 오픈소스버전 상업화 버전 및 오픈소스버전
사용하는 곳
Google, Red hat, Simens 등 세계
적 대기업 88 여조직 Standford,
Harvard law School 등 주요 대학
Opscode 등 19 개
19. - Internal Use Only -
Chef vs puppet vs Ansible
구분 Puppet Chef Ansible
개발사 Puppet Labs Opscode AnsibleWorks
등장 2005 2009 2012
개발언어 Ruby Ruby Python
Web UI O O O
Agent 설치 필요 필요 불필요
21. - Internal Use Only -
Chef Demo
• 대상 노드(client)에 스크립트를 cron에 등록하는 cookbook(recipe) command
knife cookbook create cron-exam
vi /root/cookbooks/cron-exam/recipesRecipe/default.rb
template " log_backup " do
path "/root/nohup-log-backup.sh"
source "nohup-log-backup.erb"
mode "0755"
end
cron "nohup-log-backup" do
minute "*/1"
hour "00"
weekday "00"
command "/root/nohup-log-backup.sh"
action:create
end
vi /root/cookbooks/cron-exam/templates/default/nohup-log-backup.erb
ls -al
knife cookbook upload cron-exam
Chef client 설치 및 노드 등록하고 해당 cookbook을 실행 및 적용
knife bootstrap ip-172-31-17-75.ap-northeast-2.compute.internal -x centos -i /root/haewan.pem -r cron-
exam -N ip-172-31-17-75.ap-northeast-2.compute.internal —sudo
22. - Internal Use Only -
Chef Demo
• chef web ui에서 서버에서 관리 되는 노드 및 작성한 cookbook, run list 확인가능
23. - Internal Use Only -
Chef Web Site
• https://docs.chef.io
• https://learn.chef.io
• https://github.com/chef/