편집 이 질문과 답변은 오래되었습니다. 최고의 모범 사례는 Chef Software, Inc.에서 제작 한 Learn Chef Rally 자체 학습 교육 모듈을 통해 진행됩니다. 원래 답변의 대부분은 다음과 같습니다.
이 답변에서 "Chef"또는 "chef-client"는 일반적으로 제품인 Chef Infra를 나타냅니다. Opscode 는 2013 년에 Chef Software, Inc로 이름이 변경되었습니다 . 2019 년 4 월 Chef는 일관된 브랜드 이름을 만드는 동시에 모든 제품 의 소스 코드 를 열었습니다 .
루비 DSL, JSON 또는 관리 콘솔에서 역할을 설정하는 것이 더 나은지 확실하지 않습니까? 왜 같은 일을하는 여러 가지 방법이 있습니까?
2019 업데이트 : 정책 파일이 가장 적합한 워크 플로입니다. 역할은 열등한 관행으로 간주되며 Chef Software, Inc.는 정책 파일로 마이그레이션 할 것을 권장합니다.
사람들이 서로 다른 워크 플로를 가지고 있기 때문에 동일한 작업을 수행하는 여러 가지 방법이 있습니다. 환경에 가장 적합한 워크 플로우를 선택하십시오. 정보의 결정을 내릴 수 있도록 차이점이 무엇인지 설명하겠습니다.
Ruby DSL for Roles는 JSON 구문을 몰라도 역할을보다 쉽게 작성할 수 있도록하기 위해 존재합니다. 역할을 시작하는 간단한 방법입니다. 변경 한 후에는 나이프를 사용하여 Chef Server에 업로드합니다.
knife role from file myrole.rb
그러면 역할이 JSON으로 변환되어 서버에 저장됩니다. 당신의 역할이 진실의 원천이되는 Chef Repository를 시행하는 환경이 있다면, 이것은 아주 잘 작동합니다.
JSON은 Chef Server가 저장하는 것이므로 관리 콘솔에서 직접 JSON을 편집 할 수도 있습니다. 나이프가 올바로 업로드하도록 인식하려면 Ruby DSL보다 많은 필드가 필요합니다. 이러한 세부 사항은 웹 UI를 통해 어느 정도 숨겨져 있습니다.
역할을 편집하기 위해 webui / management 콘솔을 사용하는 단점은 서버에서 역할을 다운로드하지 않는 한 로컬 버전 제어 시스템에없는 것입니다. 당신은 칼로 이것을 할 수 있습니다 :
knife role show myrole -Fj
는 -Fj
"JSON 형식으로 표시됩니다."에 칼을 알려줍니다 원하는 경우 출력을 .json 파일로 리디렉션 할 수 있습니다.
몇 년 전 업데이트 : 로컬 셰프 저장소의 파일 작업을위한 추가 나이프 명령이 있습니다. 현재 이러한 명령은 JSON 형식 파일 만 지원합니다. 커뮤니티 RFC는 이러한 플러그인의 루비 DSL에 대한 지원을 추가 처리 할 열려 있습니다. 다음은 워크 플로에 대한 간략한 요약입니다.
서버와 로컬 파일의 내용 차이를 확인하십시오.
knife diff roles/myrole.json
JSON 형식의 역할 파일을 업로드하십시오. roles/
경로가 필요합니다. 이는 서버에서 동일한 API 엔드 포인트에 맵핑됩니다.
knife upload roles/myrole.json
서버에서 컨텐츠를 다운로드하여 저장소의 파일 컨텐츠를 겹쳐 쓰십시오.
knife download roles/myrole.json
이 명령은 knife-essentials
chef 클라이언트 패키지에 내장 된에서 제공됩니다.
요리 책을 하위 디렉토리로 구성 할 수 있습니까? 예를 들어, 우리는 요리 책을 쓰고 싶었던 커스텀 소프트웨어를 가지고 있습니다 : chef-repo / cookbooks / ourcompanystuff / customsoftwarecookbook 이것이 좋은 습관일까요?
칼은 요리 책을 서버에 업로드하기 위해 API를 사용하기 때문에 요리 책이 어디에 있어야하는지 기대합니다. 로 설정되어 knife.rb
있습니다 cookbook_path
. 이전 버전의 Chef Infra에서는 요리 책에 대한 경로를 지정할 수 있지만 유지 관리가 더 필요하고 사용자에게 혼란을주기 때문에 더 이상 사용되지 않습니다.
관례에 따라 고객 별 또는 현장 별 요리 책의 이름을 요리 책 사전에 접두사로 붙입니다. 예를 들면 다음과 같습니다.
chef-repo/cookbooks/ourcompany_customsoftware
하고있는 일에 따라 "우리 회사"에 대한 여러 가지 요리 책이있을 수 있습니다.
추가 참조 :
역할을 수행하는 각 역할 유형에 대한 요리 책을 작성합니까? 이 요리 책에는 다른 요리 책이 포함되어 있습니까 (예 : 웹 서버 역할을위한 요리 책에는 아파치 요리 책이 포함되어 있습니다). 요리 책 상호 종속성과 상속이 어떻게 처리되는지 잘 모르겠습니다.
역할과 요리 책 사이에는 직접적인 관계 나 의존성이 없습니다.
역할에는 실행 목록이 있으며,이 목록에는 해당 역할이있는 모든 노드에 적용해야하는 레시피 및 기타 역할이 지정되어 있습니다. 노드에는 역할 또는 레시피를 포함 할 수있는 실행 목록이 있습니다. Chef가 노드에서 실행될 때 포함 된 모든 역할 및 레시피에 대한 실행 목록을 확장 한 다음 필요한 요리 책을 다운로드합니다. 노드 실행 목록에서 :
recipe[apache2]
Chef는 apache2
노드 의 요리 책을 다운로드 하여이 레시피를 적용 할 수 있습니다.
인프라 스트럭처에서의 역할에 대한 요리 책이있을 수 있습니다. 더 일반적으로 apache2, mysql, redis, haproxy 등과 같은 특정 유형의 서비스를 설정하기위한 요리 책이 있습니다. 그런 다음 적절한 역할에 넣습니다. 역할을 수행하기 위해 발생해야하는 사용자 지정 응용 프로그램 관련 사항이있는 경우이를 위에서 언급 한 것처럼 사용자 지정 요리 책에 쓸 수 있습니다.
추가 참조 :
꼭두각시 외부 노드 분류기와 같은 것이 있습니까?
"예." Chef Infra Server는 JSON으로 노드 데이터 스토리지를 자동으로 수행하며 검색을 위해 모든 노드 데이터를 자동으로 인덱싱합니다.
추가 참조 :
나이프 또는 관리 콘솔 내에서 구성하거나 JSON 파일을 편집 할 수있는 것 같습니다. 왜 그렇게 많은 일을 할 수있는 지에 대해 혼란 스러워요. 둘 중 하나를 사용해야 할 이유가 있습니까?
Chef Infra Server에는 JSON 응답을 보내고받는 RESTful API가 있습니다. 나이프와 관리 콘솔은 관리 관점에서 API와 상호 작용하기위한 사용자 인터페이스입니다.
관리 콘솔에는 나이프만큼 많은 기능이 없지만 원하는 도구를 더 잘 사용할 수 있습니다. Chef Infra를 사용하는 대부분의 사람들은 Windows에서 Chef Infra를 사용하는 사람들조차도 제공하는 기능과 유연성을 위해 명령 줄 인터페이스를 선호합니다. 또한 knife
새로운 플러그인을 생성하여 Chef Infra Server 또는 인프라의 다른 부분과 상호 작용할 수있는 플러그인 기반 도구입니다.
Chef Infra는 라이브러리, 프리미티브 및 API 세트입니다. 인프라에 가장 적합한 구성 관리 시스템을 구축 할 수있는 유연성을 제공합니다.
더 읽을 거리 :
개발자 클러스터에서 chef로 노드를 자동으로 프로비저닝하려면 어떻게해야합니까? 퍼펫을 사용하면 퍼퍼 마이저에 연결하고 꼭두각시 실행을 시작하고 자체 설정하는 VM을 실행합니다 (역할은 외부 노드 분류 기준에 의해 결정됨). 요리사와 어떻게하면 되나요? -요리사 서버에 연결하는 pem / rb 파일을 사용하여 chef를 설치하고, 관리 인터페이스에서 수동으로 노드에 칼로 역할을 알려주거나 편집 한 다음 chef-client 실행을 시작하여 자체 설정 하시겠습니까?
나이프 부트 스트랩 플러그인을 사용하고 싶을 것입니다. 이것은 나이프와 함께 제공되는 내장 플러그인입니다. 다음과 같이 호출하십시오.
knife bootstrap 10.1.1.112 -x root -i ~/.ssh/root_id_rsa -r 'role[webserver]'
이것은 :
- SSH
root
키를 사용하는 사용자 로서 대상 시스템 (10.1.1.112)에 대한 SSH (다른 사용자로 ssh 한 다음을 사용할 수 있음 --sudo
)
- 루비 설치
- 요리사 설치
- 나이프 구성 (.chef / knife.rb)을 읽고 Chef 서버에 대한 Chef 구성 파일을 작성하십시오.
- 노드가 Chef 서버에 자동으로 등록하는 데 사용할 "유효성 검증"RSA 개인 키를 복사하십시오.
chef-client
지정된 쉼표로 구분 된 실행을 사용하여 실행하십시오 . 이 예에서는 webserver
역할 만 적용됩니다.
이는 대상 시스템이 프로비저닝되었고 IP 주소가 있으며 루트로 SSH 할 수 있다고 가정합니다. 로컬 정책 및 프로비저닝 프로세스에 따라 작동 방식을 조정해야 할 수도 있습니다. 위키의 나이프 부트 스트랩 페이지는 이것이 어떻게 작동하는지 자세히 설명합니다.
나이프에는 Amazon EC2 및 Rackspace Cloud와 같은 여러 퍼블릭 클라우드 컴퓨팅 제공 업체를위한 플러그인도 있습니다. Eucalyptus 및 OpenStack과 같은 개인 클라우드 환경에 사용할 수있는 플러그인이 있습니다. VMware, Vsphere 및 기타 플러그인도 있습니다. 설명서에서 추가 정보를 볼 수 있습니다.
더 읽을 거리 :
검색에서 누락되었을 수있는 다른 훌륭한 요리사 자료가 있습니까?
요리사 문서 문서의 기본 소스.
알아 요리사 랠리는 모든 요리사 인프라의 다양한 측면, 그리고 다른 요리사 제품에 대해 배울 수있는 셀프 가이드 모듈 시리즈입니다.
Chef Infra에 대한 팁, 요령 및 안내서를 게시 한 블로그 ( http://jtimberman.housepub.org/)를 관리했습니다 . " 빠른 팁 " 이라는 시리즈가있었습니다 . 실제 상황 및 기타 약속으로 인해 더 이상 사이트를 유지할 시간이 없지만 나중에 다시 사이트를 방문 할 수 있습니다.
요리사 고객은 지원 사이트에서 도움과 지원을받을 수 있습니다.
Chef 사용자 커뮤니티는 다음과 같은 훌륭한 추가 지원 소스입니다.
Chef Software, Inc. 웹 사이트 에서 추가 리소스를 얻을 수 있습니다 .
이게 도움이 되길 바란다.