Top

앤서블 시작과 실행 [쉬운 자동화 설정 관리부터 배포 방법]

  • 원서명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)라는 용어를 사용한 적이 있다면 여기에서 가치를 찾아야 한다.

이 책의 구성

이 책은 처음부터 끝까지 읽을 수 있도록 작성됐고 이전 장을 기반으로 다음 장이 작성됐다. 주로 튜토리얼 형태로 작성됐기에 사용자의 컴퓨터로 따라 할 수 있다. 대부분의 예시는 웹 애플리케이션에 집중하고 있다.

저자/역자 소개

지은이의 말

나는 인기 있는 파이썬 기반 프레임 워크인 장고(Django)를 사용해 첫 번째 웹 애플리케이션을 개발할 때 애플리케이션이 데스크톱에서 마침내 작동할 때 성취감을 느꼈다. django manage.py runserver를 실행하고 브라우저에서 URL을 http://localhost:8000으로 지정하면 웹 애플리케이션이 기쁘게도 잘 동작했다.
단지 리눅스 서버에서 실행되는 멋진 애플리케이션을 얻고 싶었을 뿐인데, 애플리케이션을 제대로 실행하려면 해야 할 많은 작업들이 있다는 것을 알게 됐다. 장고와 애플리케이션을 서버에 설치하는 것 외에 아파치 서버(Apache Http 서버)와 장고 애플리케이션을 실행할 수 있는 mod_python 모듈을 설치해야 했다. 그 다음에 올바른 아파치 설정 파일을 알아내야만 애플리케이션을 실행하고 정적 콘텐츠를 제대로 제공할 수 있었다.
사실 어떤 것도 쉽지 않았다. 그 모든 세부 사항을 제대로 이해하는 것이 고통이었다. 설정 파일에 많은 노력을 들이고 싶지 않았다. 그냥 애플리케이션을 실행하고 싶었다. 일단 애플리케이션을 실행하면 잘 동작했다. 하지만 몇 달 후 다른 서버에서 애플리케이션을 실행하는 작업을 다시 해야 되는 상황이 오면 이전의 과정을 다시 진행해야 했다.
마침내 나는 진행 과정이 잘못됨을 알게 됐다. 이런 종류의 작업을 하는 올바른 방법은 이름이 있는데 그 이름은 설정 관리(configuration management)다. 설정 관리 사용의 가장 좋은 점은 항상 최신 상태로 유지되는 지식을 포착하는 방법이라는 것이다. 올바른 문서 페이지를 찾거나 이전 노트를 검색하지 않아도 된다.

지은이 소개

로린 혹스테인(Lorin Hochstein)

캐나다 퀘벡주 몬트리올에서 태어나 자랐다. 하지만 가끔 "빛을 닫아라(close the light)"라고 말할 때만 빼면, 결코 억양으로는 캐나다인이라고 추측하지 못할 정도이다. 학계로 다시 돌아갈 계획을 갖고 있으며 네브라스카링컨대학교(University of Nebraska-Lincoln) 컴퓨터공학과와 엔지니어링학과 조교수로 있었고, 서던캘리포니아대학교(University of Southern California)의 정보과학 연구소의 컴퓨터 사이언티스트로 4년 동안 일했다. 맥길대학교(McGill University)의 컴퓨터엔지니어링학부 졸업 후 보스톤대학교(Boston University)의 전기공학 석사, 칼리지 파크의 메릴랜드대학교(Maryland University) 컴퓨터공학 박사 학위를 받았다. 현재 넷플릭스의 카오스 엔지니어링(Chaos Engineering) 팀에서 선임 소프트웨어 엔지니어로 일하고 있다.

르네 모저(René Moser)

아내, 세 자녀와 함께 스위스에 살고 있다. 일하는 것과 규모가 있는 단순한 일을 좋아하며 IT 분야 고등 교육 고급 자격(Advanced Diploma of Higher Education)을 취득했다. 15년 넘게 오픈 소스 커뮤니티에 참여했으며, 최근에는 앤서블 주요 컨트리뷰터이자 40개가 넘는 앤서블 모듈 저자로 활동하고 있다. 또한 프로젝트 관리 위원회이자 아파치 클라우드 스택(Apache CloudStack)의 커미터 멤버이기도 하다. 현재 SWISS TXT의 시스템 엔지니어로 일하고 있다.

옮긴이의 말

저는 2014년에 네이버가 주관한 개발자 콘퍼런스 데뷰(Deview)에서 앤서블에 대해 발표하고, 이듬해에는 에이콘출판사를 통해 국내에 처음으로 앤서블 번역서를 선보였습니다. 앤서블이 많은 개발자, 데브옵스, 시스템 관리자를 편하게 도와줄 것이라고 믿었기 때문입니다. 그 믿음은 현실화됐고, 이제는 앤서블을 사용하지 않는 곳은 거의 없을 정도입니다.
서버에 배포와 관련된 에이전트를 설치하지 않고 단순히 서버 접근 권한과 앤서블만 있으면 작은 대수의 서버부터 수백, 수천 대의 서버를 관리할 수 있습니다. 가상화, 클라우드 환경까지 다룰 정도입니다. 또한 멱등성, 단순한 설치, 설정 기능을 넘어서 애플리케이션 배포까지 담당하고 있습니다. 이제는 생산성을 향상시킬 수 있는 필수 툴이 되고 있습니다.
레드햇에 따르면 특정 회사에 대해 앤서블을 이용한 업무 자동화 컨설팅을 진행해 대응 및 소모 시간을 66퍼센트에서 80퍼센트까지 단축했다고 합니다. 그만큼 운영 자동화 툴, 앤서블을 이용한 생산성 혁신은 매우 의미 있다고 할 수 있습니다.
이 책은 베이그런트를 실험 머신으로 설정하고 앤서블과 연동되도록 설치 및 설정합니다. 플레이북의 기능을 설명하고, 한 대 또는 여러 대의 베이그런트 실험 머신에 파이썬 웹 애플리케이션을 배포합니다. 앤서블의 기본 기능인 변수 및 팩트, 플레이, 롤, 태스크뿐만 아니라 고급 필터, 룩업, 루프, 핸들러, 콜백 핸들러, 사용자 정의 모듈 등을 다룹니다. 플레이북 디버깅 방법과 아마존 EC, 도커, 윈도우 호스트, 네트워크 장비에서 앤서블 사용 방법을 살펴봅니다. 마지막으로 앤서블 타워를 설명합니다.
이 책은 2017년에 출간된 책이지만 번역서에서는 최신 우분투 18.04, 베이그런트(Vagrant) 2.2.2, 파이썬 3.7, 앤서블 2.7.5 버전을 기준으로 설명했으며, https://github.com/knight76/ansiblebook에 소스를 올려놓았습니다. 이 책을 통해 즐겁게 앤서블을 배워 가면 좋겠습니다.

옮긴이 소개

김용환

알티캐스트, 네이버, 라인, SK Planet을 거쳐 현재 카카오에서 개발자로 일하고 있다. 이제 마흔네 살의 평범한 개발자로 다양한 도전에서 에너지를 얻으며, 개발과 실무 경험을 블로그(http://knight76.tistory.com)에 기록하고 있다.
정보통신산업진흥원(NIPA) 산하의 소프트웨어공학포털에 개발 관련 내용을 공유했고, 각종 콘퍼런스와 세미나에서 그동안 쌓은 개발 지식을 발표하고 있다. 스스로에게는 물론 누군가에게 도움이 될 수 있다는 생각으로 번역을 시작했는데, 어느덧 14번째 책이다.

목차

목차
  • 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 롤 사용하기

도서 오류 신고

도서 오류 신고

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

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

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