Top

Ansible 설정 관리 [손쉽게 환경설정 배포가 가능한 자동화 툴]

  • 원서명Ansible Configuration Management (ISBN 9781783280810)
  • 지은이다니엘 홀(Daniel Hall)
  • 옮긴이김용환
  • ISBN : 9788960777125
  • 14,000원
  • 2015년 05월 20일 펴냄
  • 페이퍼백 | 132쪽 | 188*235mm
  • 시리즈 : acorn+PACKT, 오픈소스 프로그래밍

책 소개

요약

환경설정 배포가 손쉬운 자동화 툴 앤시블(Ansible)은 단순하게 설계되어 배우기 쉽고, 곧바로 적용할 수 있다. 에이전트(Agent) 기반이 아닌 SSH 기반으로 SSH 연결을 통해 코드를 전송하고, 스크립트를 실행한다. 따라서 관리 장비에 앤시블을 설치할 필요가 없고 스크립트 배포 없이 서버 실행이 가능하다. 또한 멀티플랫폼에서도 동작하며, 병렬 실행이 가능해 처리 속도가 빠르다. 앤시블 내부 모듈은 멱등성을 지원하기 때문에 여러 번 실행해도 문제가 되지 않는다. 국내에서 첫 출간되는 앤시블 책이다.

이 책에서 다루는 내용

■ 앤시블을 이용한 시스템과 서비스 설정
■ 앤시블 시스템 정보를 얻기 위한 커맨드라인 도구 사용
■ 하나의 커맨드로 여러 액션을 수행할 수 있는 앤스블 스크립트 작성
■ 대규모 환경에서 유지 보수 가능한 설정 만들기
■ 앤시블의 고급 기능을 언제, 어떻게 사용할지 배우기
■ 동적으로 생성될 인벤토리 사용
■ 설정을 논리적인 부분으로 나눌 수 있는 앤시블 롤 사용과 이해
■ 자신만의 모듈을 작성하여 앤시블의 기능 확장

이 책의 대상 독자

이 책은 앤시블의 기초를 이해하고자 하는 사람을 위해 쓰여졌다. 리눅스 장비를 설치하고 설정하는 방법도 살펴볼 수 있다. 또한, BIND, MySQL, 리눅스 데몬의 설정 파일을 다루기 때문에 해당 설정 파일의 관련 지식이 있다면 도움이 되겠지만 반드시 필요한 것은 아니다.

이 책의 구성

1장, ‘앤시블 시작’에서는 앤시블의 기초, 인벤토리를 만드는 방법, 모듈을 사용하는 방법, 가장 중요한 도움을 받는 방법을 알아본다.

2장, ‘간단한 플레이북’에서는 장비를 관리하는 앤시블 플레이북을 생성하기 위해 여러 모듈을 결합할 수 있는 방법을 살펴본다.

3장, ‘플레이북 심화 내용’에서는 앤시블의 스크립트 언어에 대해 깊게 탐구하고 더 복잡한 언어 구조를 알려준다.

4장, ‘대규모 프로젝트’에서는 매우 복잡한 시스템을 포함하는 대규모 배포에서 앤시블 설정의 크기를 변경할 수 있는 기법을 알아본다.

5장, ‘사용자 정의 모듈’에서는 앤시블의 현재 기능뿐 아니라 앤시블의 확장 방법을 살펴본다.

저자/역자 소개

저자 서문

CFEngine이 1993년도에 마크 버제스(Mark Burgess)에 의해 처음 만들어질 때부터, 설정 관리 도구는 끊임없이 진화해왔다. 퍼펫과 셰프(Chef) 같은 더 현대적인 도구의 출현에 이어, 현재는 시스템 관리자가 선택할 수 있는 많은 도구가 존재한다. 앤시블(Ansible)은 설정 관리 공간에 초점을 맞춘 새로운 도구 중 하나다. 다른 도구들이 완전성과 설정에 초점을 맞췄다면 앤시블은 이런 동향을 완강히 거부하며, 대신 단순함과 사용 편의성에 초점을 맞추고 있다. 이 책에서는 앤시블 CLI 도구를 사용하는 것부터 시작해서 플레이북을 작성한 후 크고 복잡한 환경에서 관리하는 것을 담은 앤시블을 사용하는 방법을 보여주는 것을 목표로 한다. 마지막으로 자신의 모듈을 작성해서 앤시블을 확장하는 방법을 알려줄 것이다.

저자 소개

다니엘 홀(Daniel Hall)

2009년 RMIT 대학의 컴퓨터 과학 학사 학위를 받고 난 후 동 대학의 시스템 관리자로 일하기 시작했다. 얼마 전부터는 realestate.com.au에 배포 프로세스를 개선하는 작업을 진행하고 있다. 대부분의 시스템 관리자처럼 맡은 일을 더 쉽게 만들고자 끊임없이 노력하고, 이러한 일에 앤시블(Ansible)을 사용하고 있다.

옮긴이의 말

저는 네이버에서 백엔드 플랫폼을 개발하고 운영하는 업무를 했습니다. 그중 빌드/배포 서버 개발을 담당하면서 많은 것을 배우고 경험할 수 있었습니다. 자동화에 대한 고민들과 개발자들이 좀 더 효과적으로(편하게) 업무할 수 있는 방법에 대해 특히 많이 생각했던 것 같습니다. 현재 데브옵스(Devops)가 하는 비슷한 고민들이기도 합니다.
일반적인 웹/모바일 서비스 회사의 서버는 리눅스를 사용합니다. 리눅스가 설치된 서버에 들어가 라이브러리나 데이터베이스를 설치하고, 설정을 배포합니다. 운영하다가 하드웨어 문제(하드디스크, 전원 장비, CPU, 메모리)나 소프트웨어 이슈(리눅스 배포판 업그레이드)가 발생했을 때, 다시 설치하고 설정을 배포하려면 기존과 동일하게 작업해야 합니다. 자주 하는 작업은 아니지만, 매우 중요한 일입니다. 이런 작업이 자동화될 수 있도록 지원하는 것이 바로 배포 툴입니다. 과거에는 각 회사에서 담당 개발자의 취향에 맞게 개발되고 운영했지만, 현재 배포 툴이 점차 오픈소스로 바뀌면서 (각 상황에 맞게 최적화되어) 널리 사용되고 있습니다. 퍼펫(Puppet), 셰프(Chef), 앤시블(Ansible)이 대표적인 배포 툴입니다.
앤시블은 애플리케이션과 라이브러리를 쉽게 배포할 수 있는 자동화 툴입니다. 배포나 업데이트를 하기 위해 매번 서버에 접속해서 스크립트를 배포할 필요가 없습니다. 배포 스크립트 작성 없이 사용자 정의 설정만으로 에이전트(Agent) 없는 리모트 환경에서 SSH를 이용해 서버에 접근해서 작업할 수 있습니다.
현재 앤시블은 다른 툴과 달리 가장 빠른 추세로 확산되고 있습니다. 이렇게 단기간에 많이 사용되는 이유와 강점에 대한 제 생각은 다음과 같습니다.

■ 사용하기 쉽고, 간단해서 빠른 습득과 적용이 가능합니다. 이미 알려진 표준을 활용해 쉽게 사용할 수 있고, 유지보수 및 인수인계가 간단하고 쉽습니다.
■ 멀티 플랫폼을 지원합니다. 맥(Mac)/리눅스(Linux)/윈도우(Window)를 지원하며, 테스트 환경(Vagrant)에서도 사용할 수 있습니다.
■ 에이전트(Agent) 기반이 아닌 SSH 기반으로 스크립트 배포 없이 관리 서버에서 실행할 수 있습니다.
■ 멱등성(idempotence)(여러 번 적용하더라도 결과는 동일함)이 보장되는 모듈을 지원합니다.
■ 순차 실행뿐 아니라 병렬 실행을 지원해 좀 더 빠른 처리가 가능합니다.
■ 앞으로도 개발 가능성이 높고 개발자의 참여도가 높은 오픈소스 도구입니다. 앤시블 내부는 JSON으로 통신하며, 파이썬(Python)뿐 아니라 다른 언어에서도 호환되어 개발할 수 있습니다.

레드햇, 버라이즌, 애틀라시안, 트위터, 베리사인, EA, 에버노트, 나사(NASA), 고프로, 랙스페이스, 주니퍼 등 유수의 IT 기업들이 도입했으며, 1,000명이 넘는 개발자들이 앤시블 오픈소스에 공헌하고 있습니다.
국내에서 처음으로 앤시블 관련 서적을 번역하고 알릴 수 있어 영광입니다. 모쪼록 이 책이 앤시블을 활용하고자 하는 분들께 시원한 해결책을 제시하고, 하시는 업무에 실질적인 도움이 되기를 바랍니다.

옮긴이 소개

김용환

마흔의 평범한 개발자로, 네이버를 거쳐 현재는 다음카카오에서 카카오 스토리를 개발하고 있다. 다양한 시도와 도전을 좋아하며, 이와 관련한 개발과 실무 경험들은 김용환 블로그 http://knight76.tistory.com 에 기록하고 있다. 또한 정보통신산업진흥원(NIPA) 산하 소프트웨어공학센터에 실무 경험을 바탕으로 한 여러 주제의 글들을 기고하고 있다.

목차

목차
  • 1장. 앤시블 시작
    • 설치 방법
    • 배포판에서 설치
    • pip에서 설치
    • 소스 코드로 설치
    • 앤시블 설정
    • 앤시블과 함께 하는 첫 단계
    • 모듈 도움말
    • 정리

  • 2장. 간단한 플레이북
    • 타깃 부분
    • 변수 부분
    • 태스크 부분
    • 핸들러 부분
    • 플레이북 모듈
      • template 모듈
      • set_fact 모듈
      • pause 모듈
      • wait_for 모듈
      • assemble 모듈
      • add_host 모듈
      • group_by 모듈
    • 정리

  • 3장. 플레이북 심화 내용
    • 병렬로 작업 실행
    • 루핑
    • 조건절 실행
    • 태스크 위임
    • 추가 변수
      • hostvars 변수
      • groups 변수
      • group_names 변수
      • inventory_hostname 변수
      • inventoryhostnameshort 변수
      • inventory_dir 변수
      • inventory_file 변수
    • 변수로 파일 찾기
    • 환경 변수
    • 외부 데이터 검색
    • 결과 저장
    • 플레이북 디버그
      • debug 모듈
      • verbose 모드
      • check 모드
      • pause 모듈
    • 정리

  • 4장. 대규모 프로젝트
    • 인클루드
      • 태스크 인클루드
      • 핸들러 인클루드
      • 플레이북 인클루드
    • 1.3의 새로운 기능
    • 속도 내기
      • 태그
      • 앤시블의 풀 방식
    • 정리

  • 5장. 사용자 정의 모듈
    • 배시로 모듈 작성
    • 모듈 사용
    • 파이썬으로 모듈 작성
    • 외부 저장소

도서 오류 신고

도서 오류 신고

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

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

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