출처:
http://docs.opscode.com/chef_overview.html
Welcome to Chef!
쉐프는 당신의 서버들과 서비스들을 삶으로 가져오면서, 복잡한 인프라를 코드로 변환하는 강력한 자동화 플랫폼이다. 당신은 클라우드에서, 사내에 혹은 하이브리드 에서 동작하던 간에, 쉐프는 당신의 네트웍 사이즈가 어떻던 간에, 어플리케이션들이 어떻게 설정되고, 도입되고, 관리되는지를 자동화 한다.
쉐프는 단순환 컨셉으로 만들어진다. : 빌딩 블록으로써 제공하는 IT인프라와 자원 원시성의 중앙화된 모델링, 원하는 상태를 얻는다. 이들의 매우 단순한 컨셉은 쉐프가 지구상에서 가장 어려운 인프라의 난제를 다룰 수 있도록 해준다.
쉐프 클라이언트에서 동작할 수 있는 어떤것이든 쉐프에 의해서 관리될 수 있다. 가령, 당신은 물리적인 장비, 가상 머신, 컨테이너, 혹은 클라우드 기반의 인스턴스를 관리할 수 있다. 쉐프 클라이언트는 노드에서 동작할 수 있는 agent 이며, 그것을 설정할 수 있는 실제의 동작을 수행한다. 쉐프 서버는 모든 설정 데이터에 대한 중앙의 저장소이다. 쉐프 클라이언트와 쉐프 서버는 서로 통신할 수 있다. 보안 통신을 위해서, 그들은 쉐프 클라이언트가 요청하면 서버가 응답을 확인해주는 공용의/ 사설의 키 조합을 사용한다.
Chef Components
다음의 그림은 노드들, 서버들, 그리고 워크스테이션들을 포함하는 쉐프의 다양한 요소들 사이의 관계를 보여준다. 쉐프 클라이언트에 필요한 정보와 지시를 제공하고 그들의 작업을 할 수 있도록 하기 위해서, 이들 요소들은 함께 동작한다.
Chef comprises three main elements: a server, one (or more) nodes, and at least one workstation.
쉐프 서버는 구성내에 모든 노드들에 이용 가능한 허브로써 동작한다. 이것은 올바른 쿡북이 이용가능한지, 적당한 정책이 적용되고 있는지, 이전에 쉐프 클라이언트의 동작하는 동안 사용되었던 노드의 오브젝트가 현재의 쉐프 클라이언트 동작에 이용가능한지, 그리고 쉐프 클라이언트의 의해서 관리될 모든 노드들이 쉐프 서버에 등록되고 알려졌는지를 확인한다.
워크스테이션은 쿡북(과 레시피)가 쓰여지는 위치이다. (롤과 환경, 데이터 백과 같은) 정책 데이터가 정의되고, 데이터는 쉐프-레포 와 싱크가 된다. 그리고 데이터는 쉐프 서버로 업로드 된다.
각각의 노드는 각 노드가 필요로 하는 다양한 인프라의 자동화 업무를 수행하는 쉐프-클라이언트를 포함한다.
쿡북들은 또한 매우 중요한 요소이며, 분리된 요소(서버, 노드, 워크스테이션과 함께) 로써 다루어질 수 있다. 일반적으로 쿡북들은 워크스트에션에서 쓰여지고, 관리되고, 쉐프 서버로 옮겨진다. 그리고 각 쉐프 클라이언트가 동작하는 동안, 쉐프 클라이언트에 의해서 노드들로 당겨진다.
Nodes
하나의 노드는 쉐프 클라이언트에 의해서 관리될 수 있도록 설정되는 물리적, 가상의, 혹은 클라우드 장비이다. 다음의 노드 종류가 관리될 수 있다.
하나의 클라우드 노드는 아마존 virtual private 클라우드, 오픈스택, 랙스페이스, 구글 컴퓨트엔진, Linode, MS Azure 같은 외부의 클라우드 기반 서비스에서 주관(제공)된다. 외부의 클라우드 기반의 서비스들에 대한 지원을 제공하는 나이프에 대해서, 플러그 인을 사용 할 수 있다. 클라우드 기반의 서비스들에서 인스턴스를 생성하기 위해서, 나이프가 이들 플러그 인을 사용할 수 있다. (인스턴스가) 생성되면, 쉐프 클라이언트가 이들 인스턴스들을 도입, 설정, 관리하기 위해서 사용될 수 있다.
물리적 : 물리 노드는 보통 서버이거나 가상 머신이다. 그러나, 그것은 통신 채널로 정보를 받고, 보내고, 전송할 수 있는 네트워크에 붙어있는 어떤 액티브 장비가 될 수 있다. 다른말로, 하나의 물리 노드는 (쉐프 클라이언트가 동작할 수 있는, 그리고 쉐프 서버가 쉐프 클라이언트와 통신하도록 해주는 네트워크에 붙어있는) 어떤 액티브 장비이다.
- 가상, 가상은 소프트웨어 구현으로 만 동작하는 장비이다. 그러나, 동작은 물리적 장비와 같다.
- 네트워크 : 네트웍 노드는 네트워킹 장비이다. - 스위치, 라우터, vlan -쉐프 클라이언트에 의해서 관리되는.
노드에서 중요한 요소는 다음을 포함한다
chef-client 는 쉐프 서버에서 등록된 모든 노드에서 로컬에서 동작하는 agent 이다.
쉐프 서버로 node를 등록하고 인증한다
노드 오브젝트를 생성한다
쿡북을 동기화한다
레시피, attribute, 모든 다른 종속성을 포함하는 각각 필요한 쿡북을 로딩하므로써 자원 모음을 compile한다
노드를 설정하기 위한 적당한 필요한 행동을 취한다
예외와 알림을 찾는다
RSA public 키 페어는 chef-client 가 쉐프 서버에 저장된 데이터에 매번 접속할 필요가 있을때 인증하기 위해서 사용된다. 이것은 접속해서는 안되는 어떤 노드를 차단하고, 쉐프 서버에 관리될 노드를 확인한다
*Ohai
ohai 는 노드에서 attribute 를 찾기 위해 사용되는 틀이며, chef client 기동 시 마다 client 에 이들 attribute를 제공한다. ohai 는 쉐프 클라이언트에 필요하며, 노드에 존재한다. (ohai는 쉐프 클라이언트 설치 과정 중에, 노드에 설치된다.)
The types of attributes Ohai collects include (but are not limited to):
ohai가 수집하는 attribute종류는 다음을 포함한다.
- Platform details
- Network usage
- Memory usage
- Processor usage
- Kernel data
- Host names
- Fully qualified domain names
- Other configuration details
ohai 에 의해서 수집되는 속성은 자동 속성이다. 이들 속성들은 쉐프 클라이언트의 노드 설정 작업이 끝난 후에, 쉐프 클라이언트가 이들 속성이 바뀌지 않고 남아있는지를 확인한다.