앤서블 철저 입문

Ansible로 클라우드 구성 관리 자동화하기

앤서블 설치부터 사용 방법을 이 책 한 권으로 끝내세요!

《앤서블 철저 입문》에서는 서버를 편하게 관리하는 방법을 소개합니다. 이 책은 실습 위주의 예제들로 구성되어 있어 어려움 없이 따라 할 수 있습니다. 또한 AWS, 애저 등에서도 활용할 수 있는 방법을 제시하여 실무에 적용할 수 있습니다.

서버 관리와 유지 보수 및 배포를 손쉽게 관리하고 싶다면 이 책을 통해 바로 시작할 수 있습니다.

★ 이 책에서 다루는 내용 ★

  1. 앤서블의 개념을 명확히 설명합니다.
  2. 앤서블 설치부터 사용 방법까지 실습을 따라 하며 습득할 수 있습니다.
  3. 오픈 스택, AWS, 애저 등에서의 활용 방법도 익힐 수 있습니다.
  4. 앤서블의 고급 기능도 익힐 수 있습니다.
  5. 필요한 모듈을 작성할 수 있도록 도와줍니다.

히로가와 히데토시

주식회사 리얼글로브 책임 기술자. 2011년부터 컨테이너형 멀티 테넌트 PaaS를 개발하고 운용하고 있다. 2013년쯤 PaaS 환경을 외부로 복사하기 위해 효과적인 방법을 찾고 있는 중 앤서블을 알게 되어 현재는 파이썬 기반의 응용 프로그램을 개발하는 업무에서 앤서블을 중심으로 한 DevOps/Infrastructures as Code를 추진하는 활동도 하고 있다.

타이라 하지메

레드햇 주식회사 소프트웨어 아키텍트. 무역상사 계열에서 SI개발자로 일했으며, 외국계 하드웨어 벤더를 거쳐 현재는 레드햇 주식회사에서 파트너 솔루션 아키텍트로 근무하고 있다. 가상화 기술의 여명기에 IA 서버 가상화 기술 에반젤리스트로 일본 국내에 가상화 기술을 보급하는 데 기여했다. 가상화 기술 LinuxKVM, OpenStack, Gluster을 널리 알리기 위한 에반젤리스트로 활약하고 있으며 최근에는 파트너 인에이블먼트를 담당하고 있다. 쇼에이사의 《KVM 철저 입문》을 집필한 것을 계기로 아내를 만나서 지금은 두 아이의 아버지이다.

하시모토 나오야

레드햇 주식회사 컨설턴트. MSP와 DC 관련회사에서 인프라 엔지니어와 클라우드 엔지니어를 거쳐 레드햇 주식회사에서 컨설턴트로 근무하고 있다. 앤서블은 2015년 무렵 셸 스크립트를 플레이북으로 대체하려고 할 때 알게 되었다. 요즘 관심사는 마라톤과 수제 맥주에 관한 것이다.

모리타 구니히로

주식회사 알터부스 솔루션 아키텍트. 대기업에서 네트워크 기반 임베디드 시스템 엔지니어로 시작해 고향인 규슈에 있는 회사로 전직하는 것을 계기로 인프라 엔지니어로 근무했다. 클라우드 기술을 더 추구하고 발전할 수 있는 회사를 찾아 2016년에 주식회사 알터부스에 입사했다. 현재는 클라우드 인프라 구축과 운용, 데브옵스를 담당하고 있다. 전문 분야는 AWS 인증 솔루션 아키텍트이다. 개인적으로 부부 공통의 취미인 신사 순례를 즐기고 있다.

와타나베 카즈히로

합동회사 decr 대표사원. 전력 계통 제어 시스템과 CD-ROM 등 멀티미디어 계열의 윈도우/맥OS 앱 개발을 거쳐 2000년 월에 주식회사 이투를 설립하는 데 참가했다. 그 후, 2013년 7월에 합동회사 decr를 설립했다. 웹 계열 시스템 개발과 클라우드 인프라 구축,운용 및 iOS 앱 개발 등을 하고 있다. 주요 저서는 《CakePHP에서 배울 지속적인 통합》 《CakePHP2 실천 입문》 《클라우드 보안, 부제:클라우드 활용을 위한 위험 관리 입문》 등이 있다. Twitter: @kaz_29, Blog: http://kaz29.hatenablog.com/

이현정

아이들을 가르치다 늦게 개발을 시작했다. 일본에서 개발자로 근무했으며, 현재는 한국에서 의료 솔루션의 데이터를 설계하고 개발, 관리하고 있다.

  • ▣ 1장: 클라우드 시대의 인프라와 앤서블 기초
    • 1.1. 클라우드와 시스템 운용의 패러다임 변화
    • 1.2. Infrastructure as Code란?
      • 1.2.1. Infrastructure as Code 도입의 장점
      • 1.2.2. 데브옵스(DevOps)
      • 1.2.3. Infrastructure as Code를 실현한 도구
    • 1.3. 앤서블의 역사
    • 1.4. 앤서블의 구성
      • 1.4.1. 앤서블 본체
      • 1.4.2. 인벤터리
      • 1.4.3. 모듈
      • 1.4.4. 플레이북
    • 1.5. 앤서블의 특징
      • 1.5.1. 에이전트리스
      • 1.5.2. 멱등성
      • 1.5.3. 재사용성
    •  
  • ▣ 2장: 앤서블을 사용해 보자
    • 2.1. 앤서블을 가동하기 위한 요건
      • 2.1.1. 리눅스/유닉스 계열의 OS를 사용하는 경우
      • 2.1.2. 맥 OS를 사용하는 경우
      • 2.1.3. 윈도우를 사용하는 경우
      • 2.1.4. 파이썬 3 대응
    • 2.2. 앤서블 설치
    • 2.3. 앤서블의 동작 확인하기
    • 2.4. 베이그런트에서 가상 머신(VM) 준비하기
      • 2.4.1. 버추얼박스와 베이그런트에 대해서
      • 2.4.2. 베이그런트로 가상 머신 작성
    • 2.5. 인벤터리 파일 작성
    • 2.6. 설정 파일 만들기
    • 2.7. 작업 대상에 접속한 것을 확인한다
    • 2.8. 플레이북에 대해서
    • 2.9. site.yml의 생성
      • 2.9.1. 플레이
    • 2.10. 플레이북의 실행
      • 2.10.1. setup에 의한 서버 내 정보 자동 수집
    • 2.11. 플레이 내에서 태스크 구현 - 엔진엑스의 배포
      • 2.11.1. 관리자 권한으로 실행
      • 2.11.2. 최초의 태스크 - SE리눅스 대응
      • 2.11.3. 태스크 작성 방법
      • 2.11.4. EPEL 리포지터리의 설치
      • 2.11.5. 엔진엑스 설치와 시작
    • 2.12. 플레이북 실행과 상태 확인
      • 2.12.1. 플레이북의 재실행
      • 2.12.2. 웹 브라우저에서 엔진엑스 기동 확인
    • 2.13. 자주 사용하는 모듈
      • 2.13.1. 파일 작업
      • 2.13.2. 명령어 실행 모듈
    •  
  • ▣ 3장: 앤서블 상세기능
    • 3.1. 인벤터리
      • 3.1.1. 정적 인벤터리 파일을 작성하는 방법
      • 3.1.2. 인벤터리 변수를 YAML 파일에 정의한다
      • 3.1.3. 동적 인벤터리 스크립트
      • 3.1.4. 플레이북에서 인벤터리 작업
    • 3.2. 변수
      • 3.2.1. 무엇을 위해서 변수를 사용할 것인가?
      • 3.2.2. 변수 이름을 작성하는 규칙
      • 3.2.3. 변수를 정의하는 방법
      • 3.2.4. 변수의 우선순위
    • 3.3. 진자2를 이용한 변수 확장
      • 3.3.1. 진자2란?
      • 3.3.2. 변수를 활용하는 방법
      • 3.3.3. 진자2의 여러 가지 기능
    • 3.4. 플레이북에서의 태스크 실행 제어와 지시자
      • 3.4.1. 태스크 실행 결과를 변수로 저장 - register
      • 3.4.2. 태스크에 조건을 추가해서 실행 - when
      • 3.4.3. with_items를 사용한 태스크의 반복
    •  
  • ▣ 4장: 롤을 이용한 플레이북의 공통 부품화
    • 4.1. 롤 만들기
    • 4.2. nginx 롤 구현
      • 4.2.1. 롤 실행
      • 4.2.2. 엔진엑스 시작 포트를 변수로 구성
      • 4.2.3. 엔진엑스 리로드용 핸들러 추가
      • 4.2.4. 엔진엑스용 사용자/그룹 작성
      • 4.2.5. nginx 롤의 동작 확인
    • 4.3. 롤의 의미
      • 4.3.1. include로 외부 파일 로드
      • 4.3.2. include와 롤의 차이
    •  
  • ▣ 5장: 플레이북으로 위드프레스 환경 구축하기
    • 5.1. 플레이북 전체 구성
    • 5.2. 플레이북 구현
      • 5.2.1. 각 롤의 초기화
      • 5.2.2. 롤 구현 1 - common
      • 5.2.3. 롤 작성 2 - 마리아DB
      • 5.2.4. 롤 구현 3 - PHP-FPM
      • 5.2.5. 롤 구현 4 - 엔진엑스
      • 5.2.6. 롤 구현 5 - 워드프레스
    • 5.3. 플레이북 실행
    •  
  • ▣ 6장: 오픈스택에서 앤서블 활용
    • 6.1. 앤서블에서 오픈스택 실행하기
      • 6.1.1. 오픈스택과 관련된 앤서블 모듈의 목록
      • 6.1.2. 플레이북을 실행하기 전의 주의점
      • 6.1.3. 플레이북을 실행하는 방법
      • 6.1.4. 앤서블에서 오픈스택 노바 인스턴스 작성하기
      • 6.1.5. 오픈스택 노바 인스턴스를 여러 개 생성하기
      • 6.1.6. 유동 IP 주소 부여
      • 6.1.7. 오픈스택 노바 인스턴스 삭제하기
      • 6.1.8. 인증 정보가 외부에 저장된 파일 - os-client-config
      • 6.1.9. 키 쌍을 등록
      • 6.1.10. 보안 그룹 작성
    • 6.2. 앤서블에서 스케일 아웃/스케일 인
      • 6.2.1. 앤서블에서 스케일 아웃
      • 6.2.2. 인스턴스의 IP 주소를 확인하는 방법
      • 6.2.3. 앤서블에서 스케일 인
    • 6.3. 앤서블에서 오픈스택을 다룰 때의 팁
      • 6.3.1. 사용자 관리
      • 6.3.2. 오픈스택의 네트워크 제어
      • 6.3.3. 오픈스택의 플레이버 이용
      • 6.3.4. 앤서블에서 글랜스 이미지 업로드
    •  
  • ▣ 7장: AWS에서 앤서블의 활용
    • 7.1. 앤서블 for AWS
    • 7.2. 준비
      • 7.2.1. AWS SDK for Python (Boto) 설치
      • 7.2.2. AWS 접근키 설정
    • 7.3. EC2 인스턴스 생성
      • 7.3.1. EC2 인스턴스를 작성하는 플레이북
    • 7.4. AWS 클라우드포메이션과 연계
      • 7.4.1. AWS 클라우드포메이션 스택을 생성하는 플레이북
      • 7.4.2. AWS EC2 동적 인벤터리
      • 7.4.3. EC2 인스턴스에 배포하는 플레이북
    • 7.5. 롤링 배포
      • 7.5.1. 롤링 배포란
      • 7.5.2. 롤링 배포하는 플레이북
    •  
  • ▣ 8장: 애저에서 앤서블 활용
    • 8.1. ARM을 사용하기 위한 준비
      • 8.1.1. Azure Python SDK 설치
      • 8.1.2. 애저 CLI 설치
    • 8.2. 인증 설정
      • 8.2.1. 애저 CLI에 로그인
      • 8.2.2. 애플리케이션 등록
      • 8.2.3. 서비스 주체 생성
      • 8.2.4. 서비스 주체의 역할을 설정
      • 8.2.5. 테넌트 ID 확인
      • 8.2.6. 인증 정보를 앤서블에 전달
    • 8.3. Azure Virtual Machines 인스턴스 생성
      • 8.3.1. 리소스 그룹 생성
      • 8.3.2. 가상 네트워크를 생성
      • 8.3.3. 서브넷 생성
      • 8.3.4. 글로벌 IP 주소 생성
      • 8.3.5. 보안 그룹 생성
      • 8.3.6. 네트워크 인터페이스 생성
      • 8.3.7. 저장소 계정 생성
      • 8.3.8. 저장소 컨테이너 생성
      • 8.3.9. VM 인스턴스 생성
    • 8.4. 생성한 VM 설정하기
      • 8.4.1. azure_rm.ini 파일
      • 8.4.2. azure_rm.py 스크립트
      • 8.4.3. 인벤터리 파일과 병용
      • 8.4.4. VM과 통신 확인
      • 8.4.5. 엔진엑스를 설치하는 플레이북 실행
    • 8.5. 애저 리소스 매니저 템플릿을 사용한 배포
      • 8.5.1. 자동화 스크립트를 사용한 환경 설정
      • 8.5.2. 플레이북 실행
      • 8.5.3. ARM 템플릿을 이용해 배포
    •  
  • ▣ 9장: 도커 컨테이너 사용
    • 9.1. 앤서블 컨테이너란?
    • 9.2. 앤서블 컨테이너 프로젝트
    • 9.3. 앤서블 컨테이너 사용 방법과 특징
      • 9.3.1. 설치
      • 9.3.2. 플레이북 구성과 파일의 용도
      • 9.3.3. ansible-container build - 이미지 빌드
      • 9.3.4. ansible-container run - 컨테이너 실행
      • 9.3.5. ansible-container push - 이미지 등록
    •  
  • ▣ 10장: 플레이북 테스트
    • 10.1. 플레이북을 테스트할 때의 과제
    • 10.2. 플레이북 테스트 전략
      • 10.2.1. 적절한 테스트 레벨
      • 10.2.2. 드리프트 테스트용 체크 모드
      • 10.2.3. 테스트에 도움이 되는 모듈
      • 10.2.4. 테스트 생명주기
      • 10.2.5. 롤링 업데이트를 이용한 통합 테스트
      • 10.2.6. 앤서블에서 테스트 할 때의 고려 사항
    • 10.3. 트래비스 CI를 사용한 앤서블의 롤 테스트
      • 10.3.1. 롤 생성
      • 10.3.2. 트래비스 CI로 롤 테스트
    •  
  • ▣ 11장: 부록
    • A.1. YAML이란
    • A.2. YAML 파일의 기본 형식
    • A.3. YAML의 데이터 형
      • A.3.1. 문자열
      • A.3.2. 여러 행인 문자열
      • A.3.3. 숫자
      • A.3.4. Null
      • A.3.5. 부울형
      • A.3.6. 날짜형
    • A.4. YAML의 데이터 구조
      • A.4.1. 시퀀스(리스트)
      • A.4.2. 매핑(사전)
    • B.1. 설정 파일의 기본
    • B.2. 설정 항목
      • B.2.1. [defaults] 섹션
      • B.2.2. [privilege_escalation] 섹션
      • B.2.3. [ssh_connection] 섹션
      • B.2.4. [paramiko] 섹션
      • B.2.5. [selinux] 섹션
      • B.2.6. [galaxy] 섹션
      • B.2.7. [color] 섹션

예제코드 관련 GitHub 페이지

  • 34쪽, 2번째 줄

    플레이북을 생생하고,

    ==>

    플레이북을 생성하고,

  • 35쪽, 12번째 줄

    키(여기서는 name, hosts, taske)는

    ==>

    키(여기서는 name, hosts, tasks)는

  • 35쪽, 14번째 줄

    한다. 공식 도큐먼트에서는

    ==>

    합니다. 공식 도큐먼트에서는

  • 310쪽, 우측 6번째 줄

    hash_befaviour ===> hash_behaviour