Chef 자습서 – 인프라를 코드로 변환



Chef Tutorial은 Chef 블로그 시리즈의 두 번째 블로그입니다. 이 블로그는 Cookbooks, Recipes 등과 같은 Chef 아키텍처 및 Chef 구성 요소를 예제와 함께 설명합니다.

Chef 튜토리얼

Chef Tutorial은 Chef 블로그 시리즈의 두 번째 블로그입니다. 내 이전 블로그 , 저는 Chef, 구성 관리 란 무엇이며 Chef가 Gannett의 사용 사례를 통해 구성 관리를 달성하는 방법을 설명했습니다.

이 Chef Tutorial에서는 다음 주제를 다룹니다.





나는 나의 것을 읽은 후에 확신한다 이전 블로그 Chef가 정확히 어떻게 작동하는지 궁금 할 것입니다. 이 Chef Tutorial 블로그의 첫 번째 섹션에서는 Chef 아키텍처에 대해 자세히 설명하여 모든 의심을 해소 할 것입니다.



Chef 튜토리얼 – Chef 아키텍처

아래 다이어그램에 표시된대로 세 가지 주요 Chef 구성 요소가 있습니다.

  • 워크 스테이션
  • 섬기는 사람
  • 노드

Chef Architecture-Chef 튜토리얼-Edureka

Chef 튜토리얼 – 워크 스테이션



Workstation은 모든 Chef 구성이있는 위치입니다.관리. 이 머신은 나중에 중앙 Chef 서버로 푸시 할 수있는 모든 구성 데이터를 보유합니다. 이러한 구성은 Chef 서버로 푸시하기 전에 워크 스테이션에서 테스트됩니다. 워크 스테이션은 다음과 같은 명령 줄 도구로 구성됩니다. 칼, Chef 서버와 상호 작용하는 데 사용됩니다. 중앙 Chef 서버를 함께 관리하는 여러 워크 스테이션이있을 수 있습니다.

워크 스테이션은 다음 기능을 수행합니다.

  • 나중에 중앙 Chef 서버로 푸시 될 요리 책 및 레시피 작성
  • 중앙 Chef 서버에서 노드 관리

이제 위에서 언급 한 점을 하나씩 이해합시다.

나중에 중앙 Chef 서버로 푸시 될 요리 책 및 레시피 작성

조리법 : 레시피는 특정 구성 또는 정책을 설명하는 리소스 모음입니다. 시스템의 일부를 구성하는 데 필요한 모든 것을 설명합니다. 사용자는 Chef가 애플리케이션 및 유틸리티 (예 : Apache HTTP Server, MySQL 또는 Hadoop)를 관리하는 방법과 구성 방법을 설명하는 레시피를 작성합니다.

이 레시피는 특정 상태 (예 : 설치해야하는 패키지, 실행해야하는 서비스 또는 작성해야하는 파일)에 있어야하는 일련의 리소스를 설명합니다.

나중에 블로그에서 , Chef Workstation에서 루비 코드를 작성하여 Chef Nodes에 Apache2 패키지를 설치하는 레시피를 작성하는 방법을 보여 드리겠습니다.

요리 책 : 여러 레시피를 함께 그룹화하여 요리 책을 만들 수 있습니다. Cookbook은 시나리오를 정의하고 해당 시나리오를 지원하는 데 필요한 모든 것을 포함합니다.

  • 사용할 리소스와 적용 순서를 지정하는 레시피
  • 속성 값
  • 파일 배포
  • 템플릿
  • 라이브러리, 정의 및 사용자 지정 리소스와 같은 Chef에 대한 확장

중앙 Chef 서버에서 노드 관리

Workstation 시스템에는 중앙 Chef Server의 모든 측면을 제어하고 관리하는 데 필요한 명령 줄 유틸리티가 있습니다. 중앙 Chef 서버에 새 노드 추가, 중앙 Chef 서버에서 노드 삭제, 노드 구성 수정 등과 같은 작업은 모두 Workstation 자체에서 관리 할 수 ​​있습니다.

이제 위의 기능을 수행하는 데 필요한 Workstation 구성 요소를 살펴 보겠습니다.

워크 스테이션에는 두 가지 주요 구성 요소가 있습니다.

나이프 유틸리티 : 이 명령 줄 도구는 Workstation에서 중앙 Chef 서버와 통신하는 데 사용할 수 있습니다. 중앙 Chef 서버에서 노드 구성 추가, 제거, 변경은이 Knife 유틸리티를 사용하여 수행됩니다. Knife 유틸리티를 사용하여 Cookbook을 중앙 Chef 서버 및 역할에 업로드 할 수 있으며 환경도 관리 할 수 ​​있습니다. 기본적으로 중앙 Chef Server의 모든 측면은 Knife 유틸리티를 사용하여 Workstation에서 제어 할 수 있습니다.

로컬 Chef 저장소 : 중앙 Chef Server의 모든 구성 구성 요소가 저장되는 곳입니다. 이 Chef 저장소는 중앙 Chef 서버와 동기화 할 수 있습니다 (다시 knife 유틸리티 자체 사용).

Chef 튜토리얼-Chef 서버

Chef 서버는 구성 데이터의 허브 역할을합니다. Chef 서버는 Cookbook, 노드에 적용되는 정책 및 Chef-Client가 관리하는 등록 된 각 노드를 설명하는 메타 데이터를 저장합니다.

노드는 Chef-Client를 사용하여 Chef 서버에 레시피, 템플릿 및 파일 배포와 같은 구성 세부 정보를 요청합니다. 그런 다음 Chef-Client는 Chef 서버가 아닌 노드 자체에서 가능한 한 많은 구성 작업을 수행합니다. 각 노드에는 Chef 클라이언트 소프트웨어가 설치되어 있으며 해당 노드에 적용 할 수있는 중앙 Chef 서버에서 구성을 가져옵니다. 이 확장 가능한 접근 방식은 구성 노력을 조직 전체에 분산시킵니다.

Chef 튜토리얼-Chef 노드

노드는 클라우드 기반 가상 서버 또는 중앙 Chef Server를 사용하여 관리되는 자체 데이터 센터의 물리적 서버 일 수 있습니다. 노드에 있어야하는 주요 구성 요소는 중앙 Chef 서버와의 통신을 설정하는 에이전트입니다. 이것을 Chef Client라고합니다.

Chef 클라이언트는 다음 기능을 수행합니다.

  • 중앙 Chef Server와 상호 작용하는 역할을합니다.
  • 중앙 Chef 서버에 대한 노드의 초기 등록을 관리합니다.
  • Cookbook을 풀다운하고 노드에 적용하여 구성합니다.
  • 중앙 Chef 서버를 주기적으로 폴링하여 새 구성 항목 (있는 경우)을 가져옵니다.

Chef Server, Workstation 및 Node를 설치하는 방법을 알아 보려면 여기를 클릭하십시오.

Chef 튜토리얼 – Chef의 장점 :

이 Chef 자습서는 Chef의 주요 이점을 포함하지 않는 경우 불완전합니다.

  • Chef를 사용하여 전체 인프라를 자동화 할 수 있습니다. 수동으로 수행하던 모든 작업을 이제 Chef 도구를 통해 수행 할 수 있습니다.
  • Chef를 사용하여 몇 분 내에 수천 개의 노드를 구성 할 수 있습니다.
  • Chef 자동화는 다음과 같은 대부분의 퍼블릭 클라우드 제품과 함께 작동합니다. .
  • Chef는 작업을 자동화 할뿐만 아니라 시스템을 일관된 검사 상태로 유지하고 시스템이 실제로 필요한 방식으로 구성되었는지 확인합니다 (Chef Agent / Client가이 작업을 수행함). 누군가 파일을 수정하여 실수를하면 Chef가이를 수정합니다.
  • 전체 인프라를 Chef 리포지토리 형태로 기록 할 수 있으며,이를 청사진으로 사용하여 인프라를 처음부터 다시 만들 수 있습니다.

지금까지 이론적 게시물로 충분히이 Chef 튜토리얼을 즐기 셨기를 바랍니다! 실습으로 재미있게 보내겠습니다.

요리사 튜토리얼 | Chef 시작하기 | Edureka

Chef 튜토리얼 – 실습

여기에서는 Chef Workstation에서 레시피, 요리 책 및 템플릿을 만드는 방법을 설명합니다. 또한 Workstation에서 Chef-Client (Chef Node)로 Cookbook을 배포하는 방법도 설명합니다.

두 개의 가상 이미지를 Chef Workstation에 사용하고 다른 하나는 Chef Node에 사용하고 있습니다. Chef Server의 경우 호스팅 된 Chef 버전 (클라우드)을 사용합니다. Chef Server에도 물리적 머신을 사용할 수 있습니다.

1 단계: Chef Workstation에 Chef DK (개발 키트)를 설치합니다.

Chef DK는 Chef를 코딩 할 때 필요한 모든 개발 도구가 포함 된 패키지입니다. 다운로드 링크는 다음과 같습니다. 요리사 DK .

여기에서 사용중인 운영 체제를 선택하십시오. CentOS 6.8을 사용하고 있습니다. Red Hat Enterprise Linux .

사용중인 CentOS 버전에 따라 링크를 복사하십시오. 위 스크린 샷에서 강조 표시 한 것을 볼 수 있듯이 CentOS 6을 사용하고 있습니다.

Workstation 터미널로 이동하고 wget 명령을 사용하여 Chef DK를 다운로드하고 링크를 붙여 넣습니다.

이것을 실행하십시오 :

wget https://packages.chef.io/stable/el/6/chefdk-1.0.3-1.el6.x86_64.rpm

이제 패키지가 다운로드되었습니다. rpm을 사용하여이 패키지를 설치할 때입니다.

이것을 실행하십시오 :

rpm -ivh chefdk-1.0.3-1.el6.x86_64.rpm

이제 Chef DK가 내 워크 스테이션에 설치되었습니다.

2 단계: 워크 스테이션에서 레시피 생성

워크 스테이션에서 레시피를 생성하고 로컬에서 테스트하여 작동하는지 확인해 보겠습니다.chef-repo라는 폴더를 만듭니다. 이 폴더 안에 레시피를 만들 수 있습니다.

이것을 실행하십시오 :

mkdir 셰프 레포 CD 셰프 레포

이 chef-repo 디렉토리에서 edureka.rb라는 레시피를 생성합니다. .rb는 루비에 사용되는 확장입니다. 저는 vim 편집기를 사용할 것입니다. gedit, emac, vi 등과 같이 원하는 다른 편집기를 사용할 수 있습니다.

이것을 실행하십시오 :

vim edureka.rb

여기에 다음을 추가하십시오.

file '/ etc / motd'content 'Welcome to Chef'end

이 Recipe 이다 dureka .rb 'Welcome to Chef'내용이 포함 된 / etc / motd 파일을 생성합니다.

이제이 레시피를 사용하여 작동하는지 확인합니다.

실행 이:

요리사 적용 edureka.rb

그래서 콘텐츠가있는 chef-repo에 생성 된 파일이 있습니다. Chef에 오신 것을 환영합니다.

3 단계 : 미디엄httpd 패키지를 설치하기위한 레시피 파일 수정

내 워크 스테이션에 httpd 패키지를 설치하도록 레시피를 수정하고 index.html 파일을 기본 문서 루트에 복사하여 설치를 확인합니다. 패키지 리소스에 대한 기본 작업은 설치이므로 해당 작업을 별도로 지정할 필요가 없습니다.

실행 이:

vim edureka.rb

여기에 다음을 추가하십시오.

package 'httpd'service 'httpd'do action [: enable, : start] end file '/var/www/html/index.html'do content 'Welcome to Apache in Chef'end

이제 아래 명령을 실행하여 이러한 구성을 적용합니다.

실행 이:

두 문자열을 비교하는 방법
요리사 적용 edureka.rb

명령 실행은 레시피의 각 인스턴스를 명확하게 설명합니다. Apache 패키지를 설치하고 Workstation에서 httpd 서비스를 활성화하고 시작합니다. 그리고 'Welcome to Apache in Chef'라는 내용으로 기본 문서 루트에 index.html 파일을 생성합니다.

이제 웹 브라우저를 열어 Apache2 설치를 확인하십시오. 공용 IP 주소 또는 호스트 이름을 입력하십시오. 제 경우에는 localhost입니다.

4 단계 : 이제 첫 번째 요리 책을 만들겠습니다.

cookbooks라는 디렉토리를 생성하고 아래 명령을 실행하여 Cookbook을 생성합니다.

실행 이:

mkdir 요리 책 cd 요리 책 요리사 요리 책 생성 httpd_deploy

httpd_deploy는 Cookbook에 주어진 이름입니다. 원하는 이름을 지정할 수 있습니다.

이 새 디렉토리 httpd_deploy로 이동하겠습니다.

실행 이:

cd httpd_deploy

이제 생성 된 Cookbook의 파일 구조를 살펴 보겠습니다.

실행 이:

나무

5 단계 :템플릿 파일을 다시 작성하십시오.

이전에 일부 콘텐츠가 포함 된 파일을 만들었지 만 내 레시피 및 요리 책 구조에 맞지 않습니다. 이제 index.html 페이지 용 템플릿을 만드는 방법을 살펴 보겠습니다.

실행 이:

요리사 생성 템플릿 httpd_deploy index.html

이제 내 Cookbook 파일 구조를 보면 index.html.erb 파일이있는 이름 템플릿으로 생성 된 폴더가 있습니다. 이 index.html.erb 템플릿 파일을 편집하고 여기에 레시피를 추가하겠습니다. 아래 예를 참조하십시오.

기본 디렉토리로 이동

실행 이:

cd / root / chef-repo / cookbook / httpd_deploy / templates / default

여기에서 편한 편집기를 사용하여 index.html.erb 템플릿을 편집합니다. vim 편집기를 사용하겠습니다.

실행 이:

vim index.html.erb

이제 다음을 추가하십시오.

Chef Apache 배포에 오신 것을 환영합니다

6 단계 :이 템플릿으로 레시피를 작성하십시오.

레시피 디렉토리로 이동하십시오.

t 실행 그의:

cd / root / chef-repo / cookbooks / httpd_deploy / recipes

이제 원하는 편집기를 사용하여 default.rb 파일을 편집하십시오. vim 편집기를 사용하겠습니다.

실행 이:

vim default.rb

여기에 다음을 추가하십시오.

패키지 'httpd'서비스 'httpd'작업 수행 [: enable, : start] 종료 템플릿 '/var/www/html/index.html'do source 'index.html.erb'end

이제 chef-repo 폴더로 돌아가서 Workstation에서 레시피를 실행 / 테스트하겠습니다.

실행 이:

cd / root / chef-repo chef-client --local-mode --runlist '레시피 [httpd_deploy]'

내 레시피에 따르면 Apache가 내 워크 스테이션에 설치되고 서비스가 시작되고 부팅시 활성화됩니다. 또한 기본 문서 루트에 템플릿 파일이 생성되었습니다.

이제 Workstation을 테스트했습니다. Chef 서버를 설정할 시간입니다.

7 단계 : Chef 서버 설정

클라우드에서 호스팅 된 Chef Server 버전을 사용하지만 실제 머신도 사용할 수 있습니다. 이 Chef-Server는 manage.chef.io

계정이 없다면 여기에서 계정을 만드세요. 계정을 만든 후 로그인 자격 증명으로 로그인하십시오.

이것이 Chef Server의 모습입니다.

C ++에서 병합 정렬

처음으로 로그인하는 경우 가장 먼저 할 일은 조직을 만드는 것입니다. 조직은 기본적으로 Chef 서버로 관리하게 될 머신 그룹입니다.

먼저 관리 탭으로 이동합니다. 거기에 이미 edu라는 조직을 만들었습니다. 따라서 Workstation에서 스타터 키트를 다운로드해야합니다. 이 스타터 키트는 워크 스테이션에서 Chef 서버로 파일을 푸시하는 데 도움이됩니다. 오른쪽에있는 설정 아이콘을 클릭하고 스타터 키트를 클릭합니다.

여기를 클릭하면 Starter Kit를 다운로드 할 수있는 옵션이 표시됩니다. Starter Kit zip 파일을 다운로드하려면 클릭하십시오.

이 파일을 루트 디렉토리로 이동하십시오.이제 터미널에서 unzip 명령을 사용하여이 zip 파일의 압축을 풉니 다. 여기에 chef-repo라는 디렉토리가 포함되어 있음을 알 수 있습니다.

실행 이:

chef-starter.zip 압축 해제

이제이 스타터 키트를 chef-repo 디렉토리의 cookbook 디렉토리로 이동하십시오.

실행 이:

mv 스타터 / root / chef-repo / cookbook

Chef Cookbook은 Cookbook Super Market에서 구할 수 있으며 Chef SuperMarket으로 이동할 수 있습니다. 필요한 요리 책을 다음에서 다운로드하십시오. 슈퍼마켓 .chef.io . Apache를 설치하기 위해 Cookbook 중 하나를 다운로드하고 있습니다.

실행 e t h is :

cd chef-repo 칼 요리 책 사이트 다운로드 learn_chef_httpd

Apache Cookbook 용으로 다운로드 된 Tar ball이 있습니다. 이제 다운로드 한 Tar 파일에서 내용을 추출해야합니다. 이를 위해 tar 명령을 사용합니다.

tar -xvf learn_chef_httpd-0.2.0.tar.gz

필요한 모든 파일은이 쿡북 아래에 자동으로 생성됩니다. 수정할 필요가 없습니다. 제 레시피 폴더 안의 레시피 설명을 확인해 보겠습니다.

t 실행 h 이다 :

cd / root / chef-repo / learn_chef_httpd / recipes cat default.rb

이제이 요리 책이 제게 완벽 해 보이기 때문에 요리사 서버에 업로드하겠습니다.

8 단계 : Cookbook을 Chef 서버에 업로드하십시오.

다운로드 한 Apache Cookbook을 업로드하려면 먼저이 learn_chef_httpd 파일을 chef-repo의 Cookbooks 폴더로 이동하십시오. 그런 다음 디렉토리를 요리 책으로 변경하십시오.

t 실행 h 이다 :

mv / root / chef-repo / learn_chef_httpd / root / chef-repo / cookbooks

이제이 요리 책 디렉토리로 이동하십시오.

이것을 실행하십시오 :

cd 요리 책

이제이 디렉토리에서 아래 명령을 실행하여 Apache Cookboo를 업로드하십시오.에:

Exec ute t h is :

칼 요리 책 업로드 learn_chef_httpd

Chef 서버 관리 콘솔에서 Cookbook을 확인하십시오. 정책 섹션에서 업로드 한 요리 책을 찾을 수 있습니다. 아래 스크린 샷을 참조하십시오.

이제 마지막 단계는 Chef Node를 추가하는 것입니다. Workstation, Chef Server를 설정했으며 이제 자동화를 위해 Chef Server에 클라이언트를 추가해야합니다.

9 단계 : Chef 서버에 Chef 노드 추가.

데모 목적으로 하나의 CentOS 머신을 Chef Node로 사용할 것입니다. 하나의 Chef 서버에 수백 개의 노드가 연결될 수 있습니다. 내 Node 컴퓨터의 터미널 색상은 Workstation과 다르므로 둘을 구분할 수 있습니다.

내 노드 기계에서 아래 명령을 실행하려면 내 노드의 IP 주소가 필요합니다.이다.

Exec 이다 h is :

ifconfig

The Chef Node의 IP 주소와 이름을 지정하는 Knife Bootstrap 명령을 실행하여 서버에 Chef 노드를 추가하겠습니다. 아래 표시된 명령을 실행하십시오.에:

Exec ute t h is :

나이프 부트 스트랩 192.168.56.102 --ssh-user root --ssh-password edureka --node-name chefNode

이 명령은 Chef 노드에서 Chef-Client 설치를 초기화합니다. 다음과 같이 knife 명령을 사용하여 Workstation의 CLI에서 확인할 수 있습니다.에:

Exec ute t h is :

나이프 노드 목록

Chef 서버에서 확인할 수도 있습니다. 서버 관리 콘솔의 노드 탭으로 이동하면 추가 한 노드가 있음을 알 수 있습니다. 아래 스크린 샷을 참조하십시오.

10 단계 : 노드 실행 목록 관리

노드에 쿡북을 추가하고 Chef 서버에서 실행 목록을 관리하는 방법을 살펴 보겠습니다. 아래 스크린 샷에서 볼 수 있듯이 작업 탭을 클릭하고 실행 목록 편집 옵션을 선택하여 실행 목록을 관리합니다.

사용 가능한 레시피에서 learn_chef_httpd 레시피를 볼 수 있으며, 사용 가능한 패키지에서 현재 실행 목록으로 끌어서 실행 목록을 저장할 수 있습니다.

이제 노드에 로그인하고 Chef-client를 실행하여 Run Lis를 실행하십시오.티.

Exec ute t h is :

주요 고객

이 Chef Tutorial이 재미 있고 Chef를 사용하여 수백 개의 노드를 구성하는 방법을 배웠기를 바랍니다. Chef는 DevOps를 달성하기 위해 많은 조직에서 중요한 역할을하고 있습니다. Chef를 통해 조직은 애플리케이션을 더 자주 출시하고 관련유리.

이 블로그를 ' Chef 튜토리얼 ”관련, 체크 아웃 전 세계에 걸쳐 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. Edureka DevOps 인증 교육 과정은 학습자가 SDLC의 여러 단계를 자동화하기 위해 Puppet, Chef, Jenkins, Nagios 및 GIT와 같은 다양한 DevOps 프로세스 및 도구에 대한 전문 지식을 습득하는 데 도움이됩니다.