Chef 문서 원본 보기
←
Chef
둘러보기로 가기
검색하러 가기
문서 편집 권한이 없습니다. 다음 이유를 확인해주세요:
요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다:
사용자
.
이 문서는 편집하거나 다른 명령을 할 수 없도록 보호되어 있습니다.
문서의 원본을 보거나 복사할 수 있습니다.
설정 자동화 툴(Server Configuration Management)인 Chef를 정리 합니다. *홈페이지 : http://www.opscode.com/chef/ :*http://community.opscode.com/ :*http://wiki.opscode.com/display/chef/Home *다운로드 : *라이선스 : [[Apache 2.0]] *플랫폼 : [[Ruby]] ==Chef 개요== Chef는 형상 관리 및 시스템 통합의 자동화 목적으로 사용되는 오픈소스 프레임워크 입니다. *Chef Architecture :{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="25%" align="center" valign="middle" style="background-color:#eee;"|시스템 |width="75%" align="center" valign="middle" style="background-color:#eee;"|상세 |- |align="center" valign="middle" style="background-color:#eee;"|WorkStation | *Chef client, 작업 컴퓨터 |- |align="center" valign="middle" style="background-color:#eee;"|Server | *인프라 구성을 저장하는 장비 |- |align="center" valign="middle" style="background-color:#eee;"|Node | *Chef client를 이용하여 구성 되어야할 장비 |} *주요 구성 요소 :*Modeling Your Infrastructure ::{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="25%" align="center" valign="middle" style="background-color:#eee;"|구성요소 |width="75%" align="center" valign="middle" style="background-color:#eee;"|상세 |- |align="center" valign="middle" style="background-color:#eee;"|Nodes | *관리되는 서버 또는 시스템 단위, Recipe와 Role이 적용되는 서버 *Run List : Node에서 실행될 recipe 목록으로 role을 포함 합니다. *Node Attributes : Node가 가지는 속석, key/value로 구성된 node와 role의 관계 default[:ems][:is_install] = true |- |align="center" valign="middle" style="background-color:#eee;"|Roles | *Node가 가지는 역할 (예, Web Server, DB Server) *Run List *Role Attributes |} :*Configuring Nodes ::{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="25%" align="center" valign="middle" style="background-color:#eee;"|구성요소 |width="75%" align="center" valign="middle" style="background-color:#eee;"|상세 |- |align="center" valign="middle" style="background-color:#eee;"|Cookbooks | *분배하는 서비스 모듈 (예, Apache, MySQL) *Configuration 정보를 package, 분배, 공유하는 수단 *recipe, resource definition, attribute, library, cookbook file, template file, metadata의 모음 *Cookbook :*Recipes -> Resource -> Providers :*Attributes :*Templates, Files, Libraries ::*Templates vi ~.erb 'NAME':'<%= @attr %>' |- |align="center" valign="middle" style="background-color:#eee;"|Recipes | *순서대로 적용되어야 하는 리소스 *DSL (Domain Specific Language) 사용, Ruby file |- |align="center" valign="middle" style="background-color:#eee;"|Metadata | *Metadata.rb *Cookbook에 대한 정보 입력, 의존성 입력 |- |align="center" valign="middle" style="background-color:#eee;"|Resources | Data container *Resource Attributes : Resource 속성 *Actions : 실행하고자 하는 활동 |- |align="center" valign="middle" style="background-color:#eee;"|Providers | *Resource를 추상화하기 위한 이행 도구 |- |align="center" valign="middle" style="background-color:#eee;"|Search | *인프라에 대한 임의의 데이터 조회 *[[Solr]] / [[Lucene]], [[RabbitMQ]] 사용, Full Text Search 지원 |- |align="center" valign="middle" style="background-color:#eee;"|Data Bags | *Chef Server에 저장되는 key/value 데이터 *JSON 형태로 저장되는 Global Value (예, Node의 IP Address) |- |align="center" valign="middle" style="background-color:#eee;"|Environments | *Production, Staging, Development, Testing 등 구조적으로 분리된 다른 공간을 관리하기 위한 매카니즘 |} :*Managing Chef ::{|cellspacing="0" cellpadding="2" border="1" width="100%" bgcolor="#FFFFFF" align="center" |- |width="25%" align="center" valign="middle" style="background-color:#eee;"|구성요소 |width="75%" align="center" valign="middle" style="background-color:#eee;"|상세 |- |align="center" valign="middle" style="background-color:#eee;"|Knife | *Chef Client가 설치된 Node에서 Chef Sever로의 CLI *REST API 지원 |- |align="center" valign="middle" style="background-color:#eee;"|Management Console | *Chef Server API로 Web UI 제공 |- |align="center" valign="middle" style="background-color:#eee;"|Shef | *Chef Console |} [[파일:Chef Architecture.png]] *사용 S/W :*[[Ruby]] :*[[RabbitMQ]], [[CouchDB]] <- [[Erlang]], [[Solr]] ==CentOS에서 Chef 설치== *Chef Server와 Client의 hostname은 FQDN을 만족하여야 합니다. hostname -f *Chef Server 0.10.6 설치 rpm -Uvh http://rbel.frameos.org/rbel6 #--- RBEL repository 설치 # yum remove ruby, yum remove ruby-libs #--- Ruby 관련 삭제 yum install rubygem-chef-server #--- Chef Server 설치 cd /usr/sbin ./setup-chef-server.sh #--- 이 파일이 없을 경우, Ruby 관련 삭제부터 다시 실행 :*설치된 폴더 : /etc/chef :*기동 종료 service chef-server start #--- start, stop, status :*사용 port ::*Chef Restful API Server : 4000 ::*Chef Server 웹 UI : 4040 ::*CouchDB : 5984 ::*RabbitMQ : 5672,4369,47762 ::*Chef Solr : 8983 ::*방화벽에서 4040과 4000 port를 열어 주세요. :*사용 폴더 ::*/etc/chef/ : Chef 설치 폴더 ::*/var/chef/ : Chef 관련 폴더 :*서비스 접속 : http://localhost:4040/, admin / chef321go *Admin type의 Knife 등록 (Chef Server에 Client가 등록됨) :*Knife의 종류는 Admin과 일반 type이 있습니다. :*Chef Server가 설치된 서버와 다른 서버에 설치가 가능 합니다. cd ~ mkdir .chef cd .chef cp /etc/chef/validation.pem . knife configure -i # "Please enter a clientname for the new client: [root]" 에 대해서만 적당한 값을 등록 합니다. Overwrite /root/.chef/knife.rb? (Y/N) y Please enter the chef server URL: [http://www.ossbiz.co.kr:4000 http://www.ossbiz.co.kr:4000] Please enter a clientname for the new client: [root] ossbiz Please enter the existing admin clientname: [chef-webui] Please enter the location of the existing admin client's private key: [/etc/chef/webui.pem] Please enter the validation clientname: [chef-validator] Please enter the location of the validation key: [/etc/chef/validation.pem] Please enter the path to a chef repository (or leave blank): Creating initial API user... Created client[ossbiz] Configuration file written to /root/.chef/knife.rb # export EDITOR=vi knife -h *Chef Client 0.10.6 설치 (Chef Server에 Client와 Node가 등록됨) :*Hostname 설정 hostname client001.testdomain.com #--- 서버에 적용 또는 chef-client -N client001.testdomain.com #--- Chef Client에서만 사용 :*Chef client 설치 rpm -Uvh http://rbel.frameos.org/rbel6 #--- RBEL repository 설치 yum install rubygem-chef cd /etc/chef knife configure client ./ #--- client.rb와 validation.pem 파일이 생성됨 vi client.rb chef_server_url 'http://www.ossbiz.co.kr:4000' #Chef Server에 있는 validation.pem 파일을 여기로 복사 합니다. #cp /etc/chef/validation.pem . chef-client #--- client.pem 파일이 생성 됩니다. rm validation.pem #--- 보안상 Client에 있는 validataion.pem 파일을 삭제 *knife 명령으로 확인 knife node list knife client list *Cher Server 초기화 yum remove rubygem-chef-* couchdb rabbitmq-server rm -rf /var/lib/couchdb/ /var/lib/rabbitmq/ *등록된 서비스 (/etc/init.d/) chef-client chef-expander chef-server chef-server-webui chef-solr couchdb rabbitmq-server *참고 문헌 :*[http://blog.daum.net/_blog/BlogTypeView.do?blogid=0cBn9&articleno=25#ajax_history_home Chef Server 설치 하기 - CentOS 5.6 64btis 에서, 2012.09] ==Cookbook== *HelloWorld Cookbook 생성 knife cookbook create HelloWorld #--- /var/chef/cookbooks/HelloWorld/ 폴더가 생성이 됩니다. vi /var/chef/cookbooks/HelloWorld/attributes/HelloWorld.rb default['message']="Hello world!!" vi /var/chef/cookbooks/HelloWorld/recipes/default.rb template "/tmp/HelloWorld.txt" do source "HelloWorld.txt.erb" variables :message => node['message'] action :create end vi /var/chef/cookbooks/HelloWorld/templates/default/HelloWorld.txt.erb My Message is : <%= @message %> cd /var/chef/cookbooks knife cookbook upload -a -o . #--- 새로 만든 HelloWorld Cookbook을 업로드 knife cookbook list *Chef Client에 적용 :*여기서 "www.ossbiz.co.kr"는 node의 이름 입니다. knife node run_list add www.ossbiz.co.kr 'recipe[HelloWorld]' knife node show www.ossbiz.co.kr -r chef-client cat /tmp/HelloWorld.txt *HelloWorld Cookbook 삭제 knife cookbook delete HelloWorld #--- Cookbook 이름으로 삭제 knife cookbook delete HelloWorld 0.0.1 #--- Cookbook 이름과 버전으로 삭제 ==Knife 사용법== *Usage: knife sub-command (options) -s, --server-url URL Chef Server URL -k, --key KEY API Client Key --color Use colored output -c, --config CONFIG The configuration file to use --defaults Accept default values for all questions -e, --editor EDITOR Set the editor to use for interactive commands -E, --environment ENVIRONMENT Set the Chef environment -F, --format FORMAT Which format to use for output --no-color Don't use colors in the output -n, --no-editor Do not open EDITOR, just accept the data as is -u, --user USER API Client Username --print-after Show the data after a destructive operation -V, --verbose More verbose output. Use twice for max verbosity -v, --version Show chef version -y, --yes Say yes to all prompts for confirmation -h, --help Show this message Available subcommands: (for details, knife SUB-COMMAND --help) *BOOTSTRAP COMMANDS knife bootstrap FQDN (options) *CLIENT COMMANDS knife client bulk delete REGEX (options) knife client show CLIENT (options) knife client create CLIENT (options) knife client edit CLIENT (options) knife client delete CLIENT (options) knife client reregister CLIENT (options) knife client list (options) *CONFIGURE COMMANDS knife configure client DIRECTORY knife configure (options) *COOKBOOK COMMANDS knife cookbook upload [COOKBOOKS...] (options) knife cookbook metadata from FILE (options) knife cookbook create COOKBOOK (options) knife cookbook show COOKBOOK [VERSION] [PART] [FILENAME] (options) knife cookbook list (options) knife cookbook download COOKBOOK [VERSION] (options) knife cookbook delete COOKBOOK VERSION (options) knife cookbook metadata COOKBOOK (options) knife cookbook test [COOKBOOKS...] (options) knife cookbook bulk delete REGEX (options) *COOKBOOK SITE COMMANDS knife cookbook site search QUERY (options) knife cookbook site unshare COOKBOOK knife cookbook site share COOKBOOK CATEGORY (options) knife cookbook site download COOKBOOK [VERSION] (options) knife cookbook site show COOKBOOK [VERSION] (options) knife cookbook site list (options) knife cookbook site install COOKBOOK [VERSION] (options) *DATA BAG COMMANDS knife data bag list (options) knife data bag delete BAG [ITEM] (options) knife data bag create BAG [ITEM] (options) knife data bag edit BAG ITEM (options) knife data bag from file BAG FILE (options) knife data bag show BAG [ITEM] (options) *ENVIRONMENT COMMANDS knife environment from file FILE (options) knife environment show ENVIRONMENT (options) knife environment create ENVIRONMENT (options) knife environment edit ENVIRONMENT (options) knife environment list (options) knife environment delete ENVIRONMENT (options) *EXEC COMMANDS knife exec [SCRIPT] (options) *HELP COMMANDS knife help [list|TOPIC] *INDEX COMMANDS knife index rebuild (options) *NODE COMMANDS knife node bulk delete REGEX (options) knife node edit NODE (options) knife node show NODE (options) knife node run_list remove [NODE] [ENTRY] (options) knife node from file FILE (options) knife node run_list add [NODE] [ENTRY] (options) knife node create NODE (options) knife node delete NODE (options) knife node list (options) *RECIPE COMMANDS knife recipe list [PATTERN] *ROLE COMMANDS knife role show ROLE (options) knife role bulk delete REGEX (options) knife role list (options) knife role delete ROLE (options) knife role from file FILE [FILE..] (options) knife role edit ROLE (options) knife role create ROLE (options) *SEARCH COMMANDS knife search INDEX QUERY (options) *SSH COMMANDS knife ssh QUERY COMMAND (options) *STATUS COMMANDS knife status QUERY (options) *TAG COMMANDS knife tag create NODE TAG ... knife tag delete NODE TAG ... knife tag list NODE == 참고 문헌 == *[[Ruby|Ruby]] *[[Puppet|puppet]] *[[OpenStack|OpenStack]] **Chef : http://docs.opscode.com/openstack.html **Puppet : https://forge.puppetlabs.com/puppetlabs/openstack *[http://wiki.woosum.net/Chef http://wiki.woosum.net/Chef] *[http://kerberosj.tistory.com/m/post/view/id/106 http://kerberosj.tistory.com/m/post/view/id/106] *[http://en.wikipedia.org/wiki/Chef_(software) http://en.wikipedia.org/wiki/Chef_(software)] *[http://wiki.woosum.net/Chef http://wiki.woosum.net/Chef] *[http://blog.daum.net/_blog/BlogTypeView.do?blogid=0cBn9&articleno=25#ajax_history_2 KTH Automation] :*[http://blog.daum.net/_blog/BlogTypeView.do?blogid=0cBn9&articleno=25 Chef Server 설치 하기 - CentOS 5.6 64btis 에서, 2012.09] *[http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/cloud/automation/chefInstall http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/cloud/automation/chefInstall] *[http://devopser.me/easiest-chef-server-install-on-centos/ Easiest Chef Server Install on CentOS, 2013.04] *[http://blog.daum.net/kth_cloud_plan/28 http://blog.daum.net/kth_cloud_plan/28] *[http://naleejang.tistory.com/43 http://naleejang.tistory.com/43] [[Category:Cloud|Category:Cloud]]<br/>[[Category:DevOps|Category:DevOps]]<br/>[[Category:BigData|Category:BigData]]
Chef
문서로 돌아갑니다.
둘러보기 메뉴
개인 도구
로그인
이름공간
문서
토론
변수
보기
읽기
원본 보기
역사 보기
더 보기
검색
주요 메뉴
오픈소스 컨설팅
오픈소스
오픈소스 라이선스
오픈소스 커뮤니티
오픈소스 종류
오픈소스 현황
오픈소스 한글화
문자셋과 인코딩
Storage
Network
보안
고가용성
모니터링
오픈 API
오픈 서비스
Cloud
BigData
Android
산사랑 노트
둘러보기
인기 문서
최근 수정 문서
모든 문서
모든 분류
임의 문서
위키 사용법
자매 사이트
CMS
오비컨 홈페이지
오비컨 CMS
블로그
데모 - SuiteCRM
산사랑의 Twitter
산사랑의 Facebook
친구 사이트
공개SW 포털
OLIS
한국공개소프트웨어협회
AppCenter 지원본부
OLC
PSEG
개발자 블로그
블로터
개인 메뉴
메뉴 수정
양식함
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보