Top

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를 관리하는 방법을 설명한다.

저자/역자 소개

지은이의 말

여러분이 시스템 관리자이든 개발자이든 상관없이 반복되는 수동 작업이 지겹거나 서버를 재부팅해도 좋을지 자신이 없다면 인프라스트럭처(infrastructure) 자동화를 고려해야 한다.
이 책에서는 독자가 다섯 대의 서버를 관리하든 5,000대의 서버를 관리하든 50만 대의 서버를 관리하든 규모에 상관없이 서버와 애플리케이션을 설정하고 배포하고 확장하는 데 필요한 모든 레시피(recipe)를 제공한다.
이 책에 담긴 레시피는 실세계에서 발생하는 자동화 문제를 해결하는 방법을 따라 하기 쉽게 단계별로 보여준다. 그리고 이를 바탕으로 고수들의 기술을 배우고, 독자만의 인프라스트럭처 자동화 프로젝트를 수행할 수 있다.
앞으로 간단한 기법부터 실전에 적용할 수 있는 완성도 있는 기법까지, 셰프(Chef)의 다양한 측면을 살펴본다. 쉽고 간단한 예제를 바탕으로 독자의 인프라스트럭처를 자동화하는 데 필요한 셰프의 주요 개념을 이해할 수 있다. 그리고 커뮤니티의 쿡북(cookbook)을 독자의 환경에서 실행하려고 씨름하는 대신, 이미 완성된 코드 예제를 사용할 수 있다.
기본적인 셰프 도구의 사용법을 익힌 후에 문제 발생 시 해결 방법과 셰프 언어를 살펴본다. 이어서 사용자와 애플리케이션, 전체 클라우드 인프라스트럭처를 관리하는 방법을 설명한다. 마지막으로 셰프 생태계에 대해 깊이 살펴보고 독자에게 꼭 필요한 도구들을 제공한다.
이제 실전에서 발생하는 인프라스트럭처 자동화의 문제점을 해결할 수 있는 고수들의 비결을 단계적으로 학습해보자.

지은이 소개

마티아스 마샬 (Matthias Marschall)

독일 태생의 소프트웨어 엔지니어로, 네 명의 자녀를 편안하고 활기차게 잘 보살피는 아버지기도 하며, 네 명의 아이가 만들어내는 혼돈을 잘 극복하고 있다. 린 엔지니어링과 애자일 엔지니어링을 바탕으로 지속적인 배포와 인프라스트럭처 자동화, 데브옵스(DevOps) 관련 기술에 힘을 쏟고 있다.

최근에는 자바와 루비 온 레일스를 이용한 웹 기반 비즈니스에 도움을 줬고, 시스템 관리자로 성장한 초기에 스스로 설정 관리 도구를 제작하기도 했다. 물론 지금은 전체 인프라스트럭처를 셰프로 관리 중이다.

2008년에는 댄 애커슨(Dan Ackerson)과 함께 블로그(http://www.agileweboperations.com)를 개설하고 데브옵스의 초기 시절부터 관련 아이디어를 공유해왔다. 트위터 @mmarschall에서도 그를 만날 수 있다.

구트프라게닷넷 주식회사(gutefrage.net GmbH)의 CTO로, 독일에서 가장 큰 Q&A 사이트를 비롯해 트래픽이 많은 사이트를 운영하는 데 도움을 주고 있다. 컴퓨터 과학 석사에 해당하는 디플롬을 취득했고, 오스버그 대학에서 애자일 소프트웨어 개발에 대한 강의를 하고 있다.

코딩을 하지 않을 때는 카툰을 그리거나 바둑을 즐기며, 독일 뮌헨에서 살고 있다.

옮긴이의 말

“자동화: 어떤 일을 자동적인 수단에 의해 행할 수 있도록 하는 과정의 총칭”

자동화의 동의어로 컴퓨터화라는 말이 쓰일 정도로, 컴퓨터를 연구하고 직업으로 삼는 사람들에게 자동화는 영원한 숙제라고 할 수 있습니다. 그러나 아이러니하게도 수백, 수천 대의 컴퓨터로 이뤄진 IT 인프라스트럭처를 자동화하는 일은 아직까지도 어려운 주제 중 하나입니다. 그만큼 변수가 많고 요구 사항도 다양하다는 말이겠지요.

특히 하드웨어와 네트워크, 소프트웨어를 비롯한 대규모 IT 인프라를 서비스 형태로 제공하는 클라우드 컴퓨팅이 보편화되면서 효율적인 인프라스트럭처 자동화는 필수적인 요소가 되었습니다. IT의 본고장이라고 할 수 있는 미국에서는 셰프(Chef)와 퍼펫(Puppet)을 비롯한 오픈소스 설정 관리 도구를 사용하는 일이 일반화된 지 오래입니다. 반복되는 작업을 간소화하고, 실수를 줄일 수 있다는 이점이 있기 때문입니다.

그 중에서도 셰프는 유연성과 간결함, 커뮤니티에 공개된 수많은 쿡북 덕분에 인프라스트럭처 자동화에 탁월한 도구입니다. 그러나 셰프의 장점은 이뿐만이 아닙니다. 다른 설정 관리 도구에 비해 외부 시스템에 연동하기 쉽고, 이런 장점으로 인해 가상 머신과 미들웨어를 자동으로 구성해 제공하는 클라우드 컴퓨팅 서비스 구축에도 아주 유용한 도구입니다.

이러한 장점에도 불구하고 국내에서는 셰프를 체계적으로 소개하는 안내서를 찾기 힘든 실정입니다. 실무에서 셰프를 직접 활용하고 그 유용함을 잘 알고 있는 옮긴이는 국내 개발자와 운영자들의 궁금증을 조금이라도 덜어주고자 하는 마음으로 번역에 임했습니다.

특히 이 책은 셰프 쿡북 개발은 물론, 쿡북 개발 환경 구성과 테스팅, 배포에 이르는 전 과정을 실무자의 입장에서 다루며, 커뮤니티에 공개된 쿡북을 활용해 실무에서 자주 쓰는 주요 소프트웨어를 설치하고 구성하는 방법도 설명합니다. 이를 바탕으로 셰프를 처음 접하는 초보자는 물론, 당장 실무에 적용해야 하는 독자에게도 좋은 길잡이가 될 것입니다.

옮긴이 소개

최광민

한양대학교 컴퓨터 전공을 마치고, 현재 삼성SDS 연구소에 재직 중이다. 회사에서든 일상에서든 새롭고 흥미로운 기술이라면 무엇이든 배우고 즐길 준비가 돼있으며, 백발노인이 되어서도 끝없이 탐구하고 창조하는 사람이 되는 것을 인생의 목표로 삼고 있다. 옮긴 책으로는 에이콘출판사에서 출간한 『JavaScript Testing』(2014)과 『WordPress: The Missing Manual 워드프레스 사용자 가이드』(2014)가 있다.

목차

목차
  • 1장 셰프 인프라스트럭처
    • 소개
    • 버전 컨트롤 활용
    • 워크스테이션에 셰프 설치
    • 호스티드 셰프 플랫폼 활용
    • 베이그런트를 이용한 가상 머신 관리
    • 쿡북 생성과 실행
    • 나이프를 이용해 셰프 서버의 파일 검사
    • 쿡북 의존성 정의
    • 버크셸프를 이용한 쿡북 의존성 관리
    • 깃 저장소에서 쿡북을 다운로드하고 벤더 브랜치로 통합
    • 맞춤형 나이프 플러그인 활용
    • 현재 깃 브랜치를 기반으로 조직명 변경
    • 셰프 서버에서 노드 삭제
    • 셰프 솔로 실행
    • 롤 활용
    • 엔바이런먼트 활용
    • 쿡북 프리징
    • 셰프 클라이언트를 데몬으로 실행
    • 셰프 콘솔 활용

  • 2장 쿡북과 셰프 런 검토와 문제 해결
    • 소개
    • 셰프 쿡북 테스트
    • 셰프 쿡북의 문제점 찾기
    • 셰프스펙을 활용한 테스트 주도형 쿡북 개발
    • 테스트 키친을 활용한 셰프 쿡북 통합 테스트
    • 쿡북을 업로드하기 전에 영향을 받는 노드 조회
    • 노드의 실행 목록을 오버라이드해서 개별 레시피 실행
    • why-run 모드로 레시피 수행 내역 미리보기
    • 셰프 클라이언트 런 디버깅
    • 마지막 셰프 클라이언트 런의 결과 검증
    • 레시피에서 예외를 일으키고 로그 남기기
    • 나이프로 쿡북의 변경 사항 보기
    • 커뮤니티 예외와 리포트 핸들러 활용
    • 맞춤형 핸들러 만들기

  • 3장 셰프 언어와 스타일
    • 소개
    • 커뮤니티 셰프 스타일 활용
    • 속성을 이용해 레시피를 동적으로 설정
    • 템플릿 활용
    • 보통 루비 코드와 셰프 DSL 혼용
    • 레시피 안에서 루비 젬 설치와 활용
    • 라이브러리 활용
    • 정의 활용
    • 경량 리소스 제공자(LWRP) 만들기
    • 애플리케이션 랩퍼 쿡북을 이용한 커뮤니티 쿡북 확장
    • 맞춤형 오하이 플러그인 제작
    • 맞춤형 나이프 플러그인 제작

  • 4장 더 나은 쿡북 만들기
    • 소개
    • 환경 변수 설정
    • 셸 명령어에 인수 전달
    • 속성 오버라이딩
    • 노드 검색
    • 데이터 백 활용
    • 데이터 백 아이템 검색
    • 데이터 백 아이템 암호화
    • 외부 스크립트에서 데이터 백에 접근
    • 시스템 환경 정보 수집
    • 다중 플랫폼 호환 쿡북 작성
    • 쿡북에서 사용할 수 있는 모든 운영체제 조회
    • 조건부 실행을 바탕으로 레시피의 멱등성 구현

  • 5장 파일과 패키지 다루기
    • 소개
    • 템플릿을 이용한 설정 파일 생성
    • 루비 조건문과 반복문을 활용한 템플릿 작성
    • 서드파티 저장소의 패키지 설치
    • 소스코드를 이용한 소프트웨어 설치
    • 파일이 변경될 때 명령어 수행
    • 디렉터리 트리 배포
    • 오래된 파일 정리
    • 목적 플랫폼에 알맞은 파일 배포

  • 6장 사용자와 애플리케이션
    • 소개
    • 데이터 백으로부터 사용자 생성
    • 시큐어 셸 데몬(SSHD) 보안 설정
    • 패스워드 없는 슈퍼유저 모드(sudo) 설정
    • NTP 관리
    • nginx 관리
    • nginx 사이트 생성
    • MySQL 데이터베이스와 사용자 생성
    • 워드프레스 사이트 관리
    • 루비 온 레일스 애플리케이션 관리
    • 바니쉬 관리
    • 로컬 워크스테이션 관리

  • 7장 서버와 클라우드 인프라스트럭처
    • 소개
    • 블루프린트를 이용해서 구동 중인 시스템의 쿡북 생성
    • 여러 머신에서 동일한 명령어 한 번에 실행
    • 외부 모니터링 서비스용 SNMP 설정
    • 나기오스 모니터링 서버 배포
    • 하트비트를 이용한 고가용성 서비스 구성
    • HAProxy를 이용한 웹 서버 부하 분산
    • 맞춤형 부트스트랩 스크립트 활용
    • iptables를 이용한 방화벽 관리
    • fail2ban을 이용해서 악의적인 IP 주소 차단
    • 아마존 EC2 인스턴스 관리
    • 스파이스위즐과 나이프를 이용해서 파일로부터 셰프 인프라스트럭처 불러오기

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

2015-08-03

p69 17행

knife node client → knife client delete

p178 7행

응응 쿡북을 만든다. → 응용 쿡북을 만든다.