Chef, 클라우드 서비스 설정관리 자동화 도구 [오픈소스 설정관리 도구 셰프의 설치부터 배포까지]
- 원서명Chef Infrastructure Automation Cookbook (ISBN 9781849519229)
- 지은이마티아스 마샬(Matthias Marschall)
- 옮긴이최광민
- ISBN : 9788960777279
- 33,000원
- 2015년 06월 26일 펴냄
- 페이퍼백 | 376쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 오픈소스 프로그래밍
책 소개
요약
이 책은 오픈소스 설정관리 도구인 셰프(Chef)를 활용하는 가이드북인 쿡북 개발은 물론, 쿡북 개발 환경 구성과 테스팅, 배포에 이르는 전 과정을 실무자의 입장에서 다루며, 커뮤니티에 공개된 쿡북을 활용해 실무에서 자주 쓰는 주요 소프트웨어를 설치하고 구성하는 방법을 설명한다.
추천의 글
셰프의 출발을 돌이켜보면 더 좋은 인프라스트럭처를 구축하는 데 있어서 서로에게 도움을 주고자 하는, 그리고 마음이 잘 통하는 실무자의 모임이었다. 이렇게 소수의 사람들이 모여 개발과 실험을 시작했고, 그 시작은 미약했다. 하지만 우리가 개발하는 도구와 우리 스스로에 대한 확신이 점차 확고해지면서 자동화할 수 있는 인프라스트럭처의 범위는 물론, 개발하는 도구의 분야도 계속해서 확대되어왔다.
셰프처럼 빠르게 변화하는 기술을 다루는 책을 쓰는 일은 과감한 시도이며, 커뮤니티의 일원으로서 활발히 활동하는 실무자가 아니면 달성하기 힘든 일이다. 다행히 이 책의 저자 마티아스가 바로 그런 사람으로, 이처럼 뛰어난 동료와 지금까지 함께 해온 일과, 그가 셰프에 대한 책을 쓴 점 모두 자랑스럽게 생각한다.
셰프를 처음 접하는 독자라면 우리 커뮤니티에 들어온 것을 환영한다. 독자 스스로 자부심을 느끼고, 또 사용자가 좋아하는 시스템을 구축할 수 있길 바란다. 이미 오래 전부터 커뮤니티의 일원이라면 더욱 축하한다! 마티아스는 우리 모두에게 무언가를 가르쳐줄 수 있는 사람이며, 독자의 공헌으로 지금의 우리를 있게 한 점에 자부심을 느끼길 바란다.
그럼, 독자 여러분 모두에게 행운이 있기를!
-아담 제이콥(Adam Jacob) / 옵스코드(Opscode)의 공동 창업자 겸 셰프 개발자
이 책에서 다루는 내용
셰프를 이용해서 인프라스트럭처를 코드로 정의하는 방법
쿡북과 베이그런트를 이용해서 셰프 개발과 테스트 환경을 구축하는 방법
셰프가 제공하는 다양한 검증 도구와 로그를 바탕으로 쿡북과 셰프 런을 디버깅하는 방법
검증된 코딩 스타일과 패턴을 바탕으로 명확하고 관리하기 편한 쿡북을 작성하는 방법
데이터 백과 검색을 바탕으로 외부 데이터나 노드 속성을 이용해 쿡북을 실행하는 방법
설정 관리를 자동화해 클라우드 인프라스트럭처를 관리하고 확장하는 방법
나이프와 오하이 맞춤형 플러그인을 작성해 필요에 맞게 셰프를 확장하는 방법
이 책의 대상 독자
정보 관리 시스템과 인프라스트럭처의 기초를 이해하고 있는 시스템 엔지니어나 관리자에게 적합하다. 셰프를 다뤄봤다면 도움이 되지만, 알아야 할 중요한 주제는 책에서 상세히 설명한다. 본격적으로 시작하기 전에 책 전체를 정독하고 싶지 않다면 몇 가지 예제만 당장 실행해봐도 좋다.
이 책의 구성
1장, '셰프 인프라스트럭처'에서는 셰프 학습의 첫걸음을 뗀다. 쿡북과 롤(role), 엔바이런먼트(environment) 등의 주요 개념을 설명하고, 깃(Git)과 나이프(Knife), 셰프 셸(Chef Shell), 베이그런트(Vagrant), 버크셸프(Berkshelf) 등의 기본적인 도구 사용법을 알아본다.
2장, '쿡북과 셰프 런 검토와 문제 해결'에서는 쿡북을 잘 만드는 방법을 설명한다. 로깅과 디버깅은 물론이고 런 모드가 필요한 이유를 알아보고, 테스트 주도 방식으로 쿡북을 개발하는 과정을 보여준다.
3장, '셰프 언어와 스타일'에서는 속성(attribute)과 템플릿, 라이브러리(library), 경량 리소스 프로바이더(Light Weight Resource Providers) 등 셰프의 부가적인 개념을 살펴본다. 그리고 레시피 안에서 일반적인 루비(Ruby) 코드를 사용하는 방법, 오하이(Ohai)와 나이프 플러그인을 직접 제작하는 방법을 배워본다.
4장, '더 나은 쿡북 만들기'에서는 쿡북의 유연성을 높이는 방법을 알아본다. 속성을 덮어쓰는 방법, 데이터 백(data bag)과 검색 기능을 이용하는 방법, 한 쿡북을 여러 번 적용해도 문제가 없게 하는 방법(멱등성(idempotent)), 크로스플랫폼 쿡북 제작 방법 등을 설명한다.
5장, '파일과 패키지 다루기'에서는 설정 파일을 관리하고, 패키지를 설치하고 관리하는 강력한 기법을 살펴본다. 소스코드를 이용해 소프트웨어를 설치하는 방법과 전체 디렉터리 트리를 관리하는 방법도 설명한다.
6장, '사용자와 애플리케이션'에서는 사용자 관리와 SSH 보안, sudo 설정 방법을 살펴본다. 그리고 엔진엑스(nginx)와 MySQL, 워드프레스(Wordpress), 루비 온 레일스(Ruby on Rails), 바니쉬(Varnish) 등 실제로 많이 사용하는 애플리케이션을 설치해본다. 마지막으로 셰프로 OS X 워크스테이션을 관리하는 방법을 살펴본다.
7장, '서버와 클라우드 인프라스트럭처'에서는 네트워크와 여러 서버에 걸쳐 구동되는 애플리케이션을 살펴본다. 고가용성 서비스 구성과 부하 분산기(load balancer), 나기오스(Nagios)를 이용해 전체 인프라스트럭처를 모니터링하는 방법도 알아본다. 마지막으로 셰프를 사용해 아마존(Amazon) EC2를 관리하는 방법을 설명한다.
목차
목차
- 1장 셰프 인프라스트럭처
- 소개
- 버전 컨트롤 활용
- 워크스테이션에 셰프 설치
- 호스티드 셰프 플랫폼 활용
- 베이그런트를 이용한 가상 머신 관리
- 쿡북 생성과 실행
- 나이프를 이용해 셰프 서버의 파일 검사
- 쿡북 의존성 정의
- 버크셸프를 이용한 쿡북 의존성 관리
- 깃 저장소에서 쿡북을 다운로드하고 벤더 브랜치로 통합
- 맞춤형 나이프 플러그인 활용
- 현재 깃 브랜치를 기반으로 조직명 변경
- 셰프 서버에서 노드 삭제
- 셰프 솔로 실행
- 롤 활용
- 엔바이런먼트 활용
- 쿡북 프리징
- 셰프 클라이언트를 데몬으로 실행
- 셰프 콘솔 활용
- 2장 쿡북과 셰프 런 검토와 문제 해결
- 소개
- 셰프 쿡북 테스트
- 셰프 쿡북의 문제점 찾기
- 셰프스펙을 활용한 테스트 주도형 쿡북 개발
- 테스트 키친을 활용한 셰프 쿡북 통합 테스트
- 쿡북을 업로드하기 전에 영향을 받는 노드 조회
- 노드의 실행 목록을 오버라이드해서 개별 레시피 실행
- why-run 모드로 레시피 수행 내역 미리보기
- 셰프 클라이언트 런 디버깅
- 마지막 셰프 클라이언트 런의 결과 검증
- 레시피에서 예외를 일으키고 로그 남기기
- 나이프로 쿡북의 변경 사항 보기
- 커뮤니티 예외와 리포트 핸들러 활용
- 맞춤형 핸들러 만들기
- 3장 셰프 언어와 스타일
- 소개
- 커뮤니티 셰프 스타일 활용
- 속성을 이용해 레시피를 동적으로 설정
- 템플릿 활용
- 보통 루비 코드와 셰프 DSL 혼용
- 레시피 안에서 루비 젬 설치와 활용
- 라이브러리 활용
- 정의 활용
- 경량 리소스 제공자(LWRP) 만들기
- 애플리케이션 랩퍼 쿡북을 이용한 커뮤니티 쿡북 확장
- 맞춤형 오하이 플러그인 제작
- 맞춤형 나이프 플러그인 제작
- 4장 더 나은 쿡북 만들기
- 소개
- 환경 변수 설정
- 셸 명령어에 인수 전달
- 속성 오버라이딩
- 노드 검색
- 데이터 백 활용
- 데이터 백 아이템 검색
- 데이터 백 아이템 암호화
- 외부 스크립트에서 데이터 백에 접근
- 시스템 환경 정보 수집
- 다중 플랫폼 호환 쿡북 작성
- 쿡북에서 사용할 수 있는 모든 운영체제 조회
- 조건부 실행을 바탕으로 레시피의 멱등성 구현
- 5장 파일과 패키지 다루기
- 소개
- 템플릿을 이용한 설정 파일 생성
- 루비 조건문과 반복문을 활용한 템플릿 작성
- 서드파티 저장소의 패키지 설치
- 소스코드를 이용한 소프트웨어 설치
- 파일이 변경될 때 명령어 수행
- 디렉터리 트리 배포
- 오래된 파일 정리
- 목적 플랫폼에 알맞은 파일 배포
- 6장 사용자와 애플리케이션
- 소개
- 데이터 백으로부터 사용자 생성
- 시큐어 셸 데몬(SSHD) 보안 설정
- 패스워드 없는 슈퍼유저 모드(sudo) 설정
- NTP 관리
- nginx 관리
- nginx 사이트 생성
- MySQL 데이터베이스와 사용자 생성
- 워드프레스 사이트 관리
- 루비 온 레일스 애플리케이션 관리
- 바니쉬 관리
- 로컬 워크스테이션 관리
- 7장 서버와 클라우드 인프라스트럭처
- 소개
- 블루프린트를 이용해서 구동 중인 시스템의 쿡북 생성
- 여러 머신에서 동일한 명령어 한 번에 실행
- 외부 모니터링 서비스용 SNMP 설정
- 나기오스 모니터링 서버 배포
- 하트비트를 이용한 고가용성 서비스 구성
- HAProxy를 이용한 웹 서버 부하 분산
- 맞춤형 부트스트랩 스크립트 활용
- iptables를 이용한 방화벽 관리
- fail2ban을 이용해서 악의적인 IP 주소 차단
- 아마존 EC2 인스턴스 관리
- 스파이스위즐과 나이프를 이용해서 파일로부터 셰프 인프라스트럭처 불러오기
도서 오류 신고
정오표
정오표
2015-08-03
p69 17행
knife node client → knife client delete
p178 7행
응응 쿡북을 만든다. → 응용 쿡북을 만든다.