Top

시스템 관리자를 위한 Puppet 3 [클라우드 환경을 위한 최적의 관리 도구]

  • 원서명Puppet 3 Beginner's Guide (ISBN 9781782161240)
  • 지은이존 아룬델
  • 옮긴이김남곤, 이정효
  • ISBN : 9788960776265
  • 25,000원
  • 2014년 10월 23일 펴냄
  • 페이퍼백 | 244쪽 | 188*235mm
  • 시리즈 : acorn+PACKT

책 소개

요약

시스템 관리자는 자신이 맡고 있는 시스템과 업무 자체의 신뢰성을 높이기 위해 여러 가지 도구를 이용한다. 퍼펫(Puppet)은 이미 검증된 가장 대중화된 도구이며, 이 책은 단계별로 간단한 예제와 충분한 설명을 제공하여 당장 업무에 활용할 수 있도록 도와주고. 퍼펫에 생소한 초보자라도 어떤 용도로 퍼펫을 사용하고, 자신의 업무에 도움이 될 수 있는지 느끼도록 구성되어 있다.

이 책에서 다루는 내용

퍼펫 설치와 구성 방법

여러 서버를 퍼펫으로 관리하는 방법

번개처럼 빠른 설치를 위한 설정 파일과 템플릿 배포 방법

보고서 생성과 모니터링 방법

사용자 계정, 보안, 접근 제어와 작업 예약 관리 방법

깃(Git)을 이용한 퍼펫 코드 관리 실무

이 책의 대상 독자

이 책은 시스템 관리자나 개발자, 그리고 커맨드 라인에서 직접 파일을 수정하는 기본 작업이 포함된 시스템 관리 업무가 필요한 사람을 대상으로 하며, 퍼펫을 이용하여 더 많은 작업을 하면서도 삶은 좀 더 쉽게 만드는 것을 목표로 한다.

이 책의 구성

1장. ‘퍼펫 소개’에서는 설정 관리의 문제점과 왜 전통적인 수작업 방식이 확장성이 없는지를 설명한다. 이런 문제를 퍼펫이 어떻게 효과적으로 처리하는지 보여주고, 퍼펫의 기본 구조에 대해 소개한다.

2장. ‘퍼펫 시작’에서는 처음 퍼펫을 설치하고, 간단한 매니페스트를 생성하여 장치에 적용하는 과정을 안내한다. 퍼펫 언어를 이용하여 텍스트 파일 같은 자원을 어떻게 묘사하고 수정하는지 볼 수 있다.

3장. ‘패키지와 파일, 서비스’에서는 중요한 자원 타입에 대한 사용 방법을 설명하고, 어떻게 그들이 함께 동작하는지 보여준다. 엔진엑스 웹 서버를 기반으로 완벽하고 유용한 예제를 살펴본다.

4장. ‘깃을 이용한 퍼펫 관리’에서는 퍼펫을 이용하여 장치들을 연결하고, 깃(Git) 버전 관리 시스템을 이용하여 매니페스트를 배포하고 협력하는 간단하고 강력한 방법을 설명한다.

5장. ‘사용자 관리’에서는 사용자 관리에 대한 몇 가지 좋은 사례를 설명하고, 이를 구현하기 위해 퍼펫을 사용하는 방법을 보여준다. 또한, SSH를 이용하여 액세스를 제어하고, sudo를 이용하여 사용자 권한을 관리하는 방법을 설명한다.

6장. ‘작업과 템플릿’에서는 자동화에 대한 주요 요소를 다룬다. 작업 스케줄을 설정하고 퍼펫의 템플릿 메커니즘을 이용하여 동적 데이터로부터 설정 파일을 생성하는 방법을 설명한다.

7장. ‘정의와 클래스’에서는 이전 장들을 기반으로, 재사용 가능한 모듈과 객체를 만들기 위해 퍼펫 코드를 어떻게 구성하는지 보여준다. 정의와 클래스를 생성하는 방법과 파라미터들을 전달하는 방법에 대해서도 설명한다.

8장. ‘표현식과 로직’에서는 퍼펫 언어에 대해서 탐구하고, 조건문과 논리 표현식을 이용하여 어떻게 플로우 제어를 하는지, 그리고 산술 및 문자열 표현식을 어떻게 만드는지 보여준다. 또한 연산자와 배열, 해시를 다룬다.

9장. ‘리포팅 및 문제 해결’에서는 퍼펫을 이용한 작업의 실질적인 부분에 대해 살펴본다. 일반적인 문제들에 대해 어떻게 진단하고, 해결하며, 퍼펫 동작을 디버깅하는 방법과 에러 메시지를 해석하는 방법을 설명한다.

10장. ‘퍼펫 나아가기’에서는 퍼펫 코드를 더 우아하고, 읽기 쉽고, 유지보수를 용이하게 만드는 방법을 보여준다. 더 상세한 내용을 얻기 위한 링크와 제안들을 제공하고, 퍼펫을 이용하여 비즈니스 가치를 전달하는 데 도움이 되는 실질적인 일련의 프로젝트들을 소개한다.

저자/역자 소개

저자 서문

컴퓨터 시스템 관련 일을 하고 있다면, 소프트웨어 설치와 구성, 백업이나 사용자 관리 등의 관리 업무, 그리고 보안 패치나 소프트웨어를 최신 버전으로 관리하는 일에 얼마나 많은 시간이 소요되는지 알 것이다. 아마도 이미 이런 일을 좀 더 자동화하고 신뢰성 있게 만들기 위해 셸 스크립트나 다른 방법을 시도해 본 사람도 있을 것이다.

아마 퍼펫이 이런 일들을 어떻게 도와줄 수 있는지에 대해 읽어보았지만, 어떻게 시작해야 할지 확신이 서지 않을 것이다. 온라인의 문서는 참고용으로는 훌륭하지만, 처음부터 모든 것을 설명해주지는 않는다. 많은 책과 교본들은 퍼펫 서버와 인프라를 구성하는 데 많은 부분을 할애하기 때문에 실제 퍼펫을 이용하여 뭔가를 하게 되는 시점까지는 시간이 너무 많이 걸린다.

인프라구조 컨설턴트로 일하면서 나는 완전 초보자들을 위한 퍼펫 강좌를 할 수 있게 되었고, 가장 효과적이고 재미있게 접근하는 방법은, 바로 실전 작업부터 시작하는 것임을 알게 되었다. 처음 5분 동안 나는 사람들에게 퍼펫을 이용하여 그들의 시스템을 바꾸게 했다. 불이 나서 5분만에 수업이 끝나더라도, 그들은 각자의 작업에 도움될 만한 어떤 것을 알고 떠나게 될 것이다.

이 책도 동일한 방식을 적용했다. 상세한 배경 설명이나 이론 없이 어떻게 퍼펫을 이용하는지를, 패키지를 설치하고, 파일을 설정하고, 사용자를 생성하고, 예약 작업을 만드는 등의 예시를 통해 바로 보여 줄 것이다. 모든 예제는 업무에 사용될 가능성이 있는, 현실적이고 실제적인 내용들이며, 완벽하게 동작하는 퍼펫 코드를 입력해야 하는 내용에 대한 단계별 지침과 그 실행 결과를 함께 보게 될 것이다.

각 실행 예제 뒤에는 목적에 맞게 수정해서 쓸 수 있도록, 그리고 동작에 대해 충분히 이해했다고 자신할 수 있도록, 각 코드 라인이 무엇을 하고 어떻게 동작하는지에 대해 상세하게 설명하였다. 책의 마지막 부분에 이르면 여러분은 퍼펫을 이용하여 실제적인 일상 업무를 하기 위한 모든 기술을 갖추게 될 것이다.

저자 소개

존 아룬델 (John Arundel)

사람들의 컴퓨터 시스템이 더 신뢰성 있고, 유용하며, 비용 효율적이 되도록 도와주는 인프라 컨설턴트로서 이 일을 즐기고 있다. 그는 래리 월Larry Wall이 ‘프로그래머의 세 가지 덕목’으로 꼽은 게으름, 조급함, 오만함을 모두 갖추고 있다.

게으르다. 컴퓨터가 대신할 수 있는 일을 직접 하는 것을 좋아하지 않기 때문이다. 조급하다. 즉시 일을 처리하고 싶어하기 때문이다. 오만하다. 자신이 직접 작업하는 것처럼 잘 동작하는 시스템을 구축하는 것을 좋아하기 때문이다.

책 쓰기를 즐기며, 특히 퍼펫에 관한 글 쓰기를 좋아한다. 사람들은 그가 쓴 책을 좋아하기는 하는 듯 하나, 책에 들어간 그림만 좋아하는 건지도 모르겠다. 종종 퍼펫에 대한 강의와 코칭도 하는데, 그에게 강의는 일하는 것보다 훨씬 어려운 작업이다.

여가 시간에는 랜드로버 차량을 이용하여 여러 산을 넘어 운전하는 것을 즐긴다. 현재는 콘월Cornwall의 작은 오두막에서 정원과 도서관이 있으면 필요한 모든 것을 가졌다고 믿었던 로마의 정치가 키케로Cicero처럼 살고 있다.

트위터 팔로우 계정은 @bitfield다.

옮긴이의 말

불과 몇 년 사이에 IT 분야에서 클라우드(Cloud)는 일반적인 용어가 되었습니다. 기존의 물리적인 하드웨어에서 이루어지던 작업들이 이제는 클라우드라는 가상 공간에서 이루어집니다. 우리가 느끼지 못할지라도 이미 많은 서비스가 클라우드 환경에서 구동되고 있고, 최근에는 네트워크 장치마저도 가상화하여 클라우드 환경에서 제공하는 NFV(Network Function Virtualization)가 활발히 연구되고 있습니다.

하지만, 시스템 관리자 입장에서 클라우드의 도입은 반가운 일이 아닐 수 있습니다. 단일 서버에서 단일 운영체제를 기반으로 운영되던 형태에서 여러 개의 서로 다른 운영체제를 가진 가상 머신들 간의 연동까지 관리해야 되기 때문입니다. 이것은 시스템 관리자의 업무를 가중시키고 관련 기술을 계속 습득해야 하는 부담을 안겨줍니다. 이제는 시스템과 DB, 네트워크를 제어하는 수준을 넘어서, 클라우드에 구성된 소프트웨어 솔루션 동작과 설정까지도 시스템 관리자의 책임이 되고 있고, 데브옵스(Devops) 개념이 생기면서 시스템 운용자(Operator)가 개발자의 역할(Developer)까지 담당해야 하는 상황입니다.

시스템 관리자가 슈퍼맨도 아닌데 대규모의 복잡한 시스템을 혼자서 모두 운용하고 개발까지 하는 것은 얼핏 불가능한 일로 생각됩니다. 하지만, 퍼펫과 같은 형상 관리 도구들은 시스템 관리에 필요한 많은 부분을 자동화해주어 이를 가능하게 합니다. 원하는 시스템 형상을 간단한 명세서로 작성하면 그에 맞추어 복잡한 시스템을 구성해주기 때문에 빈번한 자원 할당과 회수, 프로비저닝(Provisioning), 설정(Configuration)이 발생하는 시스템의 경우, 이러한 형상 관리 도구가 ‘있고 없고’는 업무 효율성에 있어서 엄청난 차이를 만듭니다. 이미 대규모 클라우드 환경 구축에 있어 이러한 형상관리 도구의 활용은 필수 요소가 되었고, 오픈소스 클라우드의 대표 플랫폼인 오픈스택(OpenStack) 커뮤니티에서도 퍼펫을 주축으로 다양한 형상 관리 도구가 이용되고 있습니다.

퍼펫 이외에도 형상 관리 기능을 제공하는 도구들은 여럿 존재하고, 꼭 퍼펫만을 고집할 필요는 없습니다. 퍼펫이 제공하는 명세서 작성 방법과 그 기능이 너무 복잡하게 느껴진다면, 차라리 간단한 셸 스크립트로 원하는 기능을 만들어서 사용하는 편이 더 나을 수도 있습니다. 하지만, 이 책을 통해 관리 시스템이 커지고 복잡할수록 검증된 도구를 사용하는 장점을 느껴보시기 바랍니다.

마지막으로 이 책은 퍼펫의 최신 버전인 버전 3를 다루고 있고, 단계별로 상세한 예제를 통해 퍼펫의 기능과 그 지향점을 느낄 수 있도록 구성되었습니다. 먼저 가벼운 마음으로 전체 내용을 한번 속독하시기를 권장합니다. 작은 부분이라도 독자 여러분께 도움이 되기를 기원합니다.

옮긴이 소개

김남곤

대한민국에서 가장 큰 네트워크를 운용하는 통신회사에서 미래 네트워크 인프라의 변화 방향과 그 운용 방법을 연구하고 있다.

이정효

대한민국 대표 네트워크 기업에서 미래 네트워크 기술을 연구하고 있으며 현재는 기술의 응용 방법 및 서비스 모델을 만드는 것에 관심이 많다.

목차

목차
  • 1장 퍼펫 소개
  • 문제점
    • 형상 관리
    • 시스템 관리자의 하루 일과
    • 설정을 동기화해 유지
    • 여러 서버를 반복해서 수정
    • 문서 자동 업데이트
    • 기종 플랫폼에 대한 대처
    • 버전 관리와 히스토리
  • 문제 해결
    • 사용할 도구 제작
    • 노력의 낭비
    • 이전 가능한 기술
    • 형상 관리 도구
  • 코드로서의 인프라
    • 데브옵의 시작
    • 직업 만족도
    • 퍼펫의 장점
    • 퍼펫의 의미
    • 퍼펫 언어
    • 자원과 속성
  • 정리
    • 형상 관리
    • 퍼펫이 하는 일
    • 퍼펫의 장점
    • 확장성
    • 퍼펫의 언어

  • 2장 퍼펫 시작
  • 준비 사항
    • 실습 예제 | 퍼펫을 위한 사전 준비
    • 실습 예제 | 퍼펫 설치
  • 처음 작성하는 매니페스트
    • 작동 원리
    • 매니페스트 적용
    • 파일 수정
    • 연습
  • 매니페스트 구조화
    • 실습 예제 | 디렉토리 구조 생성
    • Nodes.pp 파일 생성
    • 실습 예제 | 노드 선언
  • 정리
    • 퍼펫 설치
    • 매니페스트
    • 노드

  • 3장 패키지와 파일, 서비스
    • 패키지
    • 실습 예제 | 엔진엑스 설치
    • 패키지에 대한 추가 내용
  • 모듈
    • 실습 예제 | 엔진엑스 모듈 생성
    • 실습 예제 | puppet apply 명령어 생성
  • 서비스
    • 실습 예제 | 엔진엑스 서비스 등록
    • 자원 요청
    • 서비스에 대한 추가 사항
  • 파일
    • 실습 예제 | 가상호스트 생성
    • 다른 자원 호출
    • 패키지-파일-서비스 패턴
    • 연습
  • 정리
    • 패키지
    • 모듈
    • 서비스
    • 자원 의존성
    • 파일

  • 4장 Git을 이용한 퍼펫 관리
  • 버전 관리
    • 실습 예제 | 깃에 매니페스트 등록
    • 실습 예제 | 변경 사항을 커밋하고 검사
    • 적절한 커밋 횟수
    • 브랜치 생성
  • 퍼펫 매니페스트 배포
    • 신뢰성
    • 확장성
    • 단순함
    • 실습 예제 | 깃 저장소 생성
    • 실습 예제 | 새로운 장치에 저장소 복제
    • 실습 예제 | 새로운 노드 추가
    • 실습 예제 | 마스터 저장소로 변경 사항 푸시
    • 연습
    • 자동으로 변경 사항 가져오기
    • 실습 예제 | 자동으로 가져와서 적용하는 스크립트
  • 깃에 대한 추가 내용
  • 정리
    • 버전 관리를 하는 이유
    • 깃 시작
    • 퍼펫 네트워킹

  • 5장 사용자 관리
  • 사용자
    • 보안과 접속 제어
    • 퍼펫으로 할 수 있는 일
    • 실습 예제 | 사용자 생성
    • 사용자 계정 삭제
  • 접속 제어
    • SSH
    • SSH 키 관리
    • 실습 예제 | SSH 인증키 등록
    • 새로운 SSH 키 생성
    • 특별한 목적의 키
    • 사용자 계정 잠금
    • SSH 설정 관리
    • 실습 예제 | SSH 설정 파일 배포
  • 사용자 권한
    • sudo
    • 실습 예제 | sudoers 파일 배포
  • 정리
    • 보안 방법
    • User 자원
    • SSH 설정
    • sudo을 이용한 권한 관리

  • 6장 작업과 템플릿
  • Exec 자원을 이용해 명령어 실행
    • 실습 예제 | 임의의 명령어 실행
    • 명령어를 선택적으로 실행
    • 명령어 트리거링
    • 명령어 연결
    • 명령어 검색 경로
  • 작업 예약
    • 실습 예제 | 백업 예약
    • 다른 예약 옵션
    • 주기마다 실행
    • 특정한 사용자만 작업 수행
    • 연습
  • 파일 배포
    • 실습 예제 | 순환(recursive) 파일 자원 이용
  • 템플릿 사용
    • 실습 예제 | 템플릿으로 Nginx 가상호스트 생성
    • 인라인템플릿
    • 시스템 값
    • 산술 표현
    • 종합
  • 정리
    • Exec 자원
    • 작업 예약
    • 순환 파일 자원
    • 템플릿

  • 7장 정의와 클래스
  • 자원을 배열로 그룹화하기
  • 정의
    • Definition에 매개변수 전달
    • 옵션 매개변수
    • 실습 예제 | 엔진엑스 웹사이트를 위한 Definition 생성
    • 여러 개의 Definition 인스턴스
    • 연습
  • 클래스
    • 클래스 정의
    • 모듈 내부에 클래스 두기
    • 클래스 선언
    • 클래스와 Definition의 차이점
    • 실습 예제 | NTP 클래스 생성
  • 정리
    • 배열
    • 정의
    • 클래스

  • 8장 표현식과 로직
  • 조건문
    • if 문
    • else와 elsif
    • Unless 문
    • case 문
    • 셀렉터
  • 표현식
    • 비교문
    • Boolean 연산자
    • 산술 연산자
  • 정규 표현식
    • 연산자
    • 문법
    • 조건문
    • 대체
    • 노드 정의
  • 배열과 해시
    • 배열로 자원 그룹화
    • 배열에서 값 가져오기
    • 해시
    • 다단계 해시
    • 해시 키 테스트
  • 정리
    • 조건문
    • 연산자
    • 정규표현식
    • 텍스트 대체
    • 배열
    • 해시

  • 9장 리포팅 및 문제 해결
  • 리포팅
    • 요약 리포트
    • 리포트 활성화
    • 리포트에는 담긴 내용
    • 실습 예제 | 리포트 생성
    • 리포트 이용
    • 디버그 실행
    • Noop 실행
    • 구문 오류 검사
  • 디버그 출력
    • 자원 알림
    • Exec 출력
  • 모니터링
    • 퍼펫을 이용한 모니터링 관리
    • 모니터링 대상
    • 퍼펫의 상태 모니터링
    • 퍼펫 사용의 문제점
    • 동기화 유지
  • 에러
    • 컴파일 에러
    • 명령어 옵션 오타
  • 정리
    • 리포팅
    • 디버그와 시험 모드
    • 메시지 출력
    • 퍼펫 모니터링
    • 일반적인 퍼펫 에러

  • 10장 퍼펫 나아가기
  • 퍼펫 스타일
    • 코드를 모듈로 분리
    • 공통 코드를 Definition으로 리팩토링
    • 노드 선언은 간단하게 한다
    • 퍼펫 린트 사용
    • 주석이 필요 없는 코드 제작
  • 퍼펫 관련 학습 자료
    • 참조 문서
    • 모듈과 코드
  • 프로젝트
    • 모든 장치에서 퍼펫 사용
    • 사용자 계정
    • 시스템 도구 상자
    • 시간 동기화
    • 서버 모니터링
    • 중요 서비스를 퍼펫으로 관리
    • 자동으로 백업
    • 시험 서버 구축
    • 모든 것을 자동화
  • 맺음말

도서 오류 신고

도서 오류 신고

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

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

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

정오표

정오표

2016. 7. 26 수정 사항

[p114. 아래에서 6행]
마자막으로
->
마지막으로

[p125. 6장 제목]
사용자 관리
->
작업과 템플릿