앤서블 시작과 실행 [쉬운 자동화 설정 관리부터 배포 방법]
- 원서명Ansible: Up and Running, 2nd Edition: Automating Configuration Management and Deployment the Easy Way (ISBN 9781491979808)
- 지은이로린 혹스테인(Lorin Hochstein), 르네 모저(René Moser)
- 옮긴이김용환
- ISBN : 9791161753218
- 35,000원
- 2019년 06월 28일 펴냄
- 페이퍼백 | 548쪽 | 188*235mm
- 시리즈 : 오픈소스 프로그래밍, 클라우드 컴퓨팅
판매처
개정판책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
환경설정 배포가 손쉬운 자동화 툴 앤서블(Ansible)은 에이전트(Agent) 기반이 아닌 SSH 기반으로 SSH 연결을 통해 코드를 전송하고 스크립트를 실행한다. 베이그란트를 실험 머신으로 설정하고 앤서블과 연동되도록 설치 및 설정한다. 플레이북의 기능을 설명하고 한 대 또는 여러 대의 베이그란트 실험 머신에 파이썬 웹 애플리케이션을 배포한다. 앤서블의 기본 기능인 변수 및 팩트, 플레이, 롤, 태스크뿐 아니라 고급 필터, 룩업, 루프, 핸들러, 콜백 핸들러, 사용자 정의 모듈 등을 다룬다. 플레이북 디버깅 방법과 아마존 EC, 도커, 윈도우 호스트, 네트워크 장비에서 앤서블 사용 방법을 살펴보고 마지막으로 앤서블 타워를 설명한다.
이 책에 쏟아진 찬사
이 책의 초판 원고를 집중해서 읽었다. 로린이 앤서블의 모든 부분을 설명하는 놀랄 만한 일을 진행했다. 그리고 로린이 르네와 힘을 합쳤다는 소식을 듣고 흥분했다. 2판에서 두 저자는 믿을 수 없을 정도로 유용한 유틸리티를 좋은 용도로 사용하는 방법을 탁월한 결과물로 보여준다. 두 저자가 앤서블을 깊이 다루지 않은 내용이 없다고 생각한다.
- 장-피에르 멘즈(Jan-Piet Mens), 컨설턴트
이 책에서 앤서블의 기능을 인상적으로 다룬다. 또한 앤서블을 시작할 때 참고하기 좋을 책일뿐만 아니라 고급 기능을 사용하는 방법을 이해할 때에도 유용하다. 이 책은 여러분의 앤서블 기술을 높일 수 있는 환상적인 자료다.
- 맷 제인스(Matt Jaynes), High Velocity Ops 수석 기술자
앤서블의 장점은 바로 시작할 수 있다는 점이다. 쉬운 프로토타입을 작성해 빨리 진행하고 완료할 수 있다. 그러나 시간이 지나면서 앤서블에 대한 지식과 이해의 간격으로 이어지기 쉽고 이로 인해 어려움을 겪을 수 있다.
그러나 이 책은 기본적인 내용부터 YAML과 진자2를 함께 작업하는 복잡성에 대한 답을 설명하며 그 간격을 채우기 때문에 매우 유용한 자료라고 말할 수 있다. 그리고 이 책에서는 배우고 구축할 수 있는 많은 기초적인 예시를 제공하기에 사람들이 환경을 자동화하는 방법에 대한 통찰력을 가질 수 있다. 지난 몇 년 동안의 교육과 실습을 진행할 때면 항상 이 책을 동료와 고객에게 권한다.
- 다그 위어스(Dag Wieers), 프리랜서 리눅스 시스템 엔지니어, 오랜 기간 앤서블 컨트리뷰터이자 컨설턴트
이 책은 모든 사람이 앤서블을 쉽게 시작할 수 있도록 도울 뿐만 아니라 앤서블 설정 관리에 대해 자세히 설명한다. 많은 힌트와 방법을 제공하며 AWS, 윈도우, 도커와 같은 광범위한 사용 사례를 다룬다.
- 잉고 요하임(Ingo Jochim), 지능형 GMS/CIS를 담당하는 Cloud Implementation 매니저
로린과 르네는 이 책을 만드는 놀라운 일을 해냈다. 두 저자는 직접 사용자를 붙잡고 적절하게 설계된 앤서블 프로젝트를 생성하고 관리하는 모든 중요한 단계를 수행하도록 돕는다. 이 책은 공식 문서에서 누락된 일부 중요한 개념 주제를 다루기 때문에 앤서블을 간단히 참조하는 것 이상의 책이다. 앤서블 초보자를 위한 훌륭한 자료이지만 기존 앤서블을 사용하는 사람에게는 많은 실용적인 개념과 팁을 포함한다.
- 도미닉 바튼(Dominique Barton), confirm IT solutions의 데브옵스 엔지니어
이 책에서 다루는 내용
■ 윈도우 컴퓨터를 관리하고 네트워크 장치 설정 자동화하기
■ 웹 브라우저에서 앤서블 타워를 사용해 많은 장비 관리하기
■ 앤서블이 여타 설정 관리 시스템과 다른 점 이해하기
■ 사용자 정의 플레이북을 작성하기 위한 YAML 파일 포맷 사용하기
■ 완전한 예시로 작업해 중요한 애플리케이션 배포하기
■ 아마존 EC2 및 기타 클라우드 플랫폼에 애플리케이션 배포하기
■ 도커 이미지를 생성하고 도커 컨테이너 배포하기
이 책의 대상 독자
이 책은 리눅스 또는 유닉스 계열의 서버를 다뤄야 하는 사람들을 위한 책이다. 시스템 관리, 운영, 배포, 설정 관리, 데브옵스(DevOps)라는 용어를 사용한 적이 있다면 여기에서 가치를 찾아야 한다.
이 책의 구성
이 책은 처음부터 끝까지 읽을 수 있도록 작성됐고 이전 장을 기반으로 다음 장이 작성됐다. 주로 튜토리얼 형태로 작성됐기에 사용자의 컴퓨터로 따라 할 수 있다. 대부분의 예시는 웹 애플리케이션에 집중하고 있다.
목차
목차
- 1장. 소개
- 버전 정보
- 앤서블: 어디에 사용하면 좋을까?
- 앤서블의 동작 방식
- 앤서블의 어떤 부분이 훌륭한가?
- 앤서블이 너무 간단한가?
- 내가 알아야 할 내용은 무엇인가?
- 다루지 않는 내용
- 앤서블 설치
- 테스트용 서버 설정
- 요약
- 2장. 플레이북: 시작
- 준비 사항
- 아주 간단한 플레이북
- 플레이북 실행하기
- 플레이북은 YAML이다
- 플레이북 분석
- 무엇이 변경됐는가? 호스트 상태 추적하기
- 더 좋은 기능: TLS 지원
- 3장. 인벤토리: 서버 설명
- 인벤토리 파일
- 준비 사항: 여러 대의 베이그런트 머신
- 동작 인벤토리 매개변수
- 그룹과 그룹과 그룹
- 호스트와 그룹 변수: 인벤토리 내부
- 호스트 변수와 그룹 변수: 사용자 정의 파일을 갖는다
- 동적 인벤토리
- 여러 파일로 인벤토리 분할
- 런타임에 addhost와 groupby 사용해 항목을 추가하기
- 4장. 변수와 팩트
- 플레이북에서 변수 정의하기
- 변숫값 보기
- 변수 등록하기
- 팩트
- 새 변수를 정의하기 위해 set_fact를 사용하기
- 내장 변수
- 커맨드라인에서 변수 설정하기
- 우선순위
- 5장. 메자닌 소개: 테스트 애플리케이션
- 상용 환경에 배포하는 것이 복잡한 이유
- PostgreSQL: 데이터베이스
- Gunicorn: 애플리케이션 서버
- 엔진엑스: 웹 서버
- 수퍼바이저: 프로세스 관리자
- 상용 환경에 배포하는 것이 복잡한 이유
- 6장. 앤서블을 사용해 메자닌 배포하기
- 플레이북의 태스크 출력하기
- 배포된 파일의 설정
- 변수와 비밀 변수
- 반복문(with_items)을 사용해 여러 패키지 설치하기
- 태스크에 Become 절 추가하기
- apt-cache 업데이트하기
- 깃을 사용해 프로젝트 체크아웃하기
- 메자닌과 기타 패키지를 virtualenv에 설치
- 태스크의 복잡한 매개변수: 간략한 설명
- 데이터베이스 설정하기
- 템플릿에서 local_settings
- django-manage 커맨드 실행하기
- 애플리케이션의 컨텍스트에서 사용자 지정 파이썬 스크립트 실행하기
- 엔진엑스 설정 활성화하기
- TLS 인증서 설치
- 트위터 크론잡 설치하기
- 전체 플레이북
- 베이그런트 머신에 플레이북 실행하기
- 트러블 슈팅
- 여러 머신에 메자닌 배포하기
- 7장. 플레이북 확장하기
- 롤의 기본 구조
- 예시: 데이터베이스와 mezzanine 롤
- 플레이북에서 롤 사용하기
- 사전 태스크와 사후 태스크
- 데이터베이스 배포를 위한 데이터베이스 롤
- 메자닌을 배포하기 위한 Mezzanine 롤
- ansible-galaxy을 사용해 롤 파일과 디렉터리 생성하기
- 의존 롤
- 앤서블 갤럭시
- 8장. 복잡한 플레이북
- 잘못 처리된 커맨드 처리하기 : changedwhen와 failedwhen
- 필터
- 조회
- 더 복잡한 루프
- 루프 제어문
- include
- 블록
- 블록을 사용한 에러 처리
- 볼트를 활용한 중요한 데이터의 암호화
- 9장. 호스트, 실행, 핸들러 사용자 정의
- 호스트 지정 패턴
- 실행 중인 호스트 제한
- 제어 머신에서 태스크 실행하기
- 특정 호스트가 아닌 다른 호스트에서 태스크 실행하기
- 한 번에 한 호스트에서 실행하기
- 한 번에 여러 호스트에 플레이 실행하기
- 한 번만 실행
- 실행 전략
- 고급 핸들러
- 팩트를 수동으로 수집하기
- 호스트의 IP 주소 얻기
- 10장. 콜백 플러그인
- 표준 플러그인
- 기타 플러그인
- 11장. 앤서블을 가능한 빠르게 하기
- SSH 멀티플렉싱과 ControlPersist
- 파이프 라이닝
- 팩트 캐싱
- 병렬
- 비동기로 동시 작업
- 12장. 사용자 정의 모듈
- 예시: 원격 서버에 연결할 수 있는지 확인
- 사용자 정의 모듈 대신 script 모듈 사용하기
- can_reach 모듈
- 사용자 정의 모듈을 저장할 위치
- 앤서블이 모듈을 호출하는 방법
- 매개변수를 사용해 스탠드얼론 파이썬 스크립트 생성(파이썬 기반 모듈만)
- 호스트에 모듈 복사
- 호스트에 매개변수 파일 생성(파이썬 기반이 아닌 모듈만)
- 모듈 호출
- 예상된 출력
- 앤서블이 기대하는 출력 변수
- 파이썬에서 사용자 정의 모듈 구현하기
- 모듈 문서화
- 사용자 정의 모듈 디버깅하기
- 배시에서 모듈 구현하기
- 배시에서 대체 경로 지정
- 예시 모듈
- 13장. 베이그런트
- 편리한 베이그런트 설정 옵션
- 앤서블 프로비저너
- 프로비저너가 실행될 때
- 베이그런트가 생성한 인벤토리
- 병렬 프로비저닝
- 그룹 지정
- 앤서블 로컬 프로비저너
- 14장. 아마존 EC2
- 개념
- 자격 증명 지정하기
- 선행 조건: 파이썬의 Boto 라이브러리
- 동적 인벤토리
- 태그가 포함된 동적 그룹 정의하기
- EC2 가상 사설 클라우드와 EC2-Classic
- ec2 모듈을 사용해 ansible.cfg 설정하기
- 새로운 인스턴스 시작하기
- EC2 키 쌍
- 보안 그룹
- 최신 AMI 받기
- 그룹에 새로운 인스턴스 추가하기
- 서버가 동작될 때까지 기다리기
- 멱등성을 지닌 앤서블 플레이북을 사용해 EC2 인스턴스 생성하기
- 함께 실행하기
- 가상 사설 클라우드 지정
- AMI 빌드하기
- 기타 모듈
- 15장. 도커
- 앤서블로 도커를 연결하는 사례
- 도커 애플리케이션 수명 주기
- 애플리케이션 예시: Ghost
- 도커 데몬에 연결
- 로컬 머신에서 컨테이너 실행하기
- Dockerfile로부터 이미지 빌드하기
- 로컬 머신에서 여러 컨테이너를 오케스트레이션하기
- 이미지를 도커 레지스트리에 푸시하기
- 로컬 이미지 쿼리하기
- 도커 애플리케이션 배포하기
- 앤서블 컨테이너
- 16장. 앤서블 플레이북 디버깅하기
- 사람이 실수하는 에러 메시지
- SSH 이슈 디버깅하기
- debug 모듈
- 플레이북 디버거
- assert 모듈
- 실행 전 플레이북 확인하기
- 실행할 태스크 제어하기
- 17장. 윈도우 호스트 관리
- 윈도우에 연결
- 파워셸
- 윈도우 모듈
- 첫 번째 플레이북
- 윈도우 업데이트
- 로컬 사용자 추가하기
- 결론
- 18장. 앤서블의 네트워크 장비 지원
- 네트워크 모듈의 상태
- 지원되는 네트워크 공급 업체 목록
- 네트워크 장비 준비하기
- 모듈의 동작 방법
- 첫 번째 플레이북
- 네트워크 모듈의 인벤토리와 변수
- 파일에서 설정을 사용하기
- 템플릿, 템플릿, 템플릿
- 팩트 수집
- 결론
- 19장. 앤서블 타워: 상용 앤서블
- 가입 모델
- 앤서블 타워가 해결할 수 있는 부분
- RESTful API
- 앤서블 타워 CLI
- 결론
- 부록 A. SSH 509
- 부록 B. EC2 자격 증명에 IAM 롤 사용하기