CHEF를 사용한 자동화 및 구성 관리란? – 1부
간단한 시나리오를 가정해 보겠습니다. 10개의 redhat 서버가 있고 모든 서버에서 'tecmint' 사용자를 만들어야 합니다. 직접적인 접근 방식은 각 서버에 로그인하고 useradd 명령으로 사용자를 생성해야 한다는 것입니다. 서버가 100대나 1000대일 때 모든 서버에 하나씩 로그인하는 것은 사실상 불가능하다.
여기에서 이러한 경우에 가장 먼저 떠오르는 것은 스크립트를 작성하고 스크립트가 서버에서 실행을 수행하도록 하는 것입니다. 이는 검증된 접근 방식입니다. "스크립팅은 나름의 단점이 있지만 조직에서 널리 사용되지만 스크립트 소유자가 조직을 떠나면 유지 관리가 어렵습니다.
스크립트는 이기종 환경에서 작동하지 않습니다. 스크립트는 간단한 작업 등을 위해 긴 코드를 작성해야 하는 작업을 수행하기 위한 필수 방법입니다. 이러한 상황에서는 Chef와 같은 자동화 및 구성 관리 도구를 찾아야 합니다.
Chef에 대한 이 시리즈의 기사에서는 1-3부까지 Chef Automation 도구의 설치 및 구성 절차를 살펴보고 다음 주제를 다룹니다.
이 튜토리얼은 Chef의 작동 방식, 자동화, 구성 관리, 아키텍처 및 구성 요소에 대한 시작점을 제공합니다.
1. 구성 관리
구성 관리는 DevOps 사례의 핵심 초점입니다. 소프트웨어 개발 주기에서 모든 서버는 소프트웨어로 구성되고 개발 주기에서 중단되지 않는 방식으로 잘 유지되어야 합니다. "잘못된 구성 관리는 시스템 중단, 누출 및 데이터 유출을 일으킬 수 있습니다. "구성 관리 도구를 사용하면 DevOps 기반 환경에서 정확성, 효율성 및 속도를 촉진할 수 있습니다.
구성 관리 도구에는 PUSH 기반 및 PULL 기반의 두 가지 모델이 있습니다. "PUSH 기반에서 마스터 서버는 구성 코드를 서버에 푸시하고 PULL 기반 개별 서버는 구성 코드를 얻기 위해 마스터에 접속합니다. "PUPPET 및 CHEF는 널리 사용되는 PULL 기반 모델이고 ANSIBLE은 널리 사용되는 PUSH 기반 모델입니다. "이 기사에서는 CHEF에 대해 알아볼 것입니다.
2. 셰프란?
셰프는 시스템 관리자가 조직의 여러 서버 및 기타 장치에서 배포, 구성, 관리 및 진행 중인 작업을 간단하고 쉬운 방법으로 자동화할 수 있게 해주는 오픈 소스 자동화 프로그램입니다.
- "
- 2008년 OPSCODE로 설립되어 이후 CHEF(Chef Automation tool)로 명칭 변경되었습니다.
- 구성을 관리하고 조직의 전체 인프라를 자동화 및 조정하는 데 사용되는 Ruby 기반 자동화 도구입니다.
- 오픈소스 프로젝트이며 서버 클라이언트 및 독립 실행형의 두 가지 배포 모델과 함께 제공됩니다.
- Chef는 Ubuntu, Redhat/CentOS, Fedora, macOS, Windows, AIX 등과 같은 다양한 운영 체제를 지원합니다.
- 셰프는 선언적이며 기본 스크립팅 언어보다 훨씬 간단합니다.
- 기업이 시장 요구 사항을 계속 업데이트할 수 있도록 지속적인 배포를 제공합니다.
- Chef의 주요 책임은 정의된 구성 상태를 유지 관리하는 것입니다.
- 10~1000개의 노드를 쉽게 관리할 수 있는 자체 선언적 언어가 있습니다.
- 요리사는 클라우드에 적응할 수 있고 Infrastructure on Cloud와 쉽게 통합됩니다.
- 셰프는 배우기 쉽고 강력한 커뮤니티 지원 DevOps 친화적인 도구입니다. "
- Chef WorkStation: Chef 사용자가 구성을 생성, 테스트 및 적용할 수 있는 로컬 개발 플랫폼입니다. "로컬 데스크탑, Chef DK(개발 키트)가 설치된 랩탑이 될 수 있습니다. "프로덕션으로 승격되기 전에 개발/테스트 환경으로 사용할 수 있습니다.
- Chef Server: Chef-server 소프트웨어가 설치 및 구성되어 있는 서버입니다. Chef의 코드를 관리하고 Chef Workstation에서 구성 코드에 액세스하는 작업을 담당합니다. Chef 서버는 Linux 시스템이어야 하며 다른 운영 체제는 지원하지 않습니다.
- Chef 클라이언트: Chef 코드 및 바이너리의 기타 종속 파일과 같은 구성 세부 정보를 위해 Chef 서버에 연결하는 서버가 있습니다. Chef 서버에서 코드를 가져와 로컬에 배포합니다. "
- 리소스는 인프라 관리에 사용되는 Recipe의 기본 모듈입니다.
- 속성은 키-값 쌍 형태의 설정입니다.
- 레시피는 워크스테이션에서 만들 수 있는 속성 모음입니다. Chef 코드로 Chef 클라이언트에 적용할 수 있는 명령 세트입니다.
- 요리책 모음을 요리책이라고 합니다.
- 칼은 Chef 서버와 상호작용하는 Chef Workstation의 명령줄 도구입니다. "
- 서버 클라이언트 – 프로덕션 배포에 사용됩니다. "
- Chef Zero – 개발, 테스트 및 POC에 사용됩니다.
- Chef 클라이언트/노드가 Chef 서버에 등록 및 인증을 수행합니다.
- Chef 클라이언트/노드는 주기적으로 Chef Server를 조사합니다. 셰프-클라이언트가 셰프-서버에 저장된 데이터에 액세스하려고 할 때마다 인증 프로세스가 수행됩니다.
- Ohai는 시스템 상태를 결정하기 위해 Chef 클라이언트가 실행하는 도구이며 노드의 속성(OS, 메모리, 디스크, CPU, 커널 등)을 감지하고 해당 속성을 셰프 클라이언트. "Ohai는 Chef Client 설치의 일부입니다. "
- 쿡북 또는 구성 설정에 변경 사항이 있는 경우 Chef-Client로 전송되어 업데이트/설치됩니다.
- 요리책 및 설정은 명령줄 도구인 Knife를 통해 Chef Workstation을 사용하여 Chef 서버에서 업데이트됩니다. Workstation은 Knife를 사용하여 모든 정책을 Chef 서버로 푸시합니다.
- 각 클라이언트/노드가 Chef 서버와 주기적으로 확인되므로 구성은 서버 역할에 따라 개별적으로 적용됩니다. "예: Chef 노드에서 일부 노드는 데이터베이스 서버, 일부 노드는 게이트웨이 서버 등이 됩니다.
3. 셰프 아키텍처
Chef 아키텍처는 3개의 주요 섹션으로 나뉩니다.
- "

4. 셰프 구성 요소
다음은 주요 Chef 구성 요소입니다.
- "
5. 셰프 배포 모델
Chef에는 두 가지 배포 모델이 있습니다.
- "
6. 셰프는 어떻게 일하는가? 코드로서의 인프라
Infrastructure as Code는 다양한 설치/배포 및 구성 관리를 자동으로 수행할 수 있는 IT 인프라 관리입니다. "여기에서 모든 구성, 설치는 코드로 작성됩니다.
- "
이 기사에서는 구성 관리 및 Chef 자동화 도구의 기본 개념을 살펴보았습니다. 다음 기사에서 Chef 설치의 단계별 프로세스를 볼 것입니다.