앤서블 시작과 실행 3/e [구성 관리와 배포를 쉽게 자동화하는 방법]
- 원서명Ansible: Up and Running: Automating Configuration Management and Deployment the Easy Way, 3rd Edition (ISBN 9781098109158)
- 지은이바스 마이어, 로린 혹스테인, 르네 모저
- 옮긴이양정열
- ISBN : 9791161759265
- 40,000원
- 2024년 11월 13일 펴냄
- 페이퍼백 | 608쪽 | 188*235mm
- 시리즈 : 클라우드 컴퓨팅
책 소개
요약
IT 자동화 도구인 앤서블(Ansible)을 쉽게 이해하고 활용할 수 있도록 돕는 책이다. 초보자부터 전문가까지, 인프라 관리와 애플리케이션 배포를 자동화하는 방법을 단계별로 설명하며, 다양한 예제와 실습을 통해 실무에 적용할 수 있는 실질적인 지식을 제공한다. 또한 앤서블의 기본 개념부터 고급 기능까지 폭넓게 다루며, 최신 트렌드와 기술적 인사이트도 제공한다. 이 책은 IT 자동화의 필수 도구로서 앤서블을 배우고자 하는 모든 이에게 최적의 안내서가 될 것이다.
추천의 글
"바스 마이어는 로린 혹스테인, 르네 모저에서 시작된 이미 좋은 책 내용의 최신화 작업을 진행했다. 초보자나 중급, 고급 앤서블 사용자에 관계없이 읽어야 할 책이다."
─ 얀-피트 멘스(Jan-Piet Mens)/ 컨설턴트
이 책에서 다루는 내용
◆ 앤서블 구성 관리와 배포
◆ 리눅스와 윈도우, 네트워크 장비 관리
◆ 앤서블 모범 사례 적용
◆ 새로운 컬렉션 형식의 사용 방법
◆ 사용자 정의 모듈과 플러그인 제작
◆ 오픈소스 미들웨어용 재사용 가능한 앤서블 콘텐츠 생성
◆ 컨테이너 이미지와 클라우드 인스턴스용 이미지, 클라우드 인프라
◆ CI/CD 개발 환경 자동화
◆ 데브옵스를 위한 앤서블 오토메이션 플랫폼 사용 방법
이 책의 대상 독자
앤서블을 생산적으로 사용하려면 기본적인 유닉스, 리눅스 시스템 관리 작업에 익숙해야 한다. 앤서블은 작업을 쉽게 자동화해 주는 도구이지만 처리 방법을 모르는 부분까지 자동화해 주지는 않는다.
이 책에서는 적어도 하나의 리눅스 배포판(우분투나 RHEL/CentOS, SUSE 등)을 잘 알고 있으며 다음 내용을 알고 있다고 가정한다.
목차
목차
- 1장. 소개
- 버전 정보
- 앤서블을 어디에 사용하면 좋은가?
- 앤서블의 동작 방식
- 앤서블의 장점은 무엇인가?
- 단순함
- 강력함
- 안전함
- 앤서블은 너무 단순한가?
- 선수지식
- 다루지 않는 내용
- 요약
- 2장. 설치와 설정
- 앤서블 설치
- 느슨한 의존성
- 컨테이너에서 앤서블 실행
- 앤서블 개발
- 테스트용 서버 설정
- 베이그런트 테스트 서버 설정
- 앤서블에 서버 정보 제공하기
- ansible.cfg 파일을 통한 단순화
- 익숙함과 결별하라
- 편리한 베이그런트 설정 옵션
- 포트 포워딩과 사설 IP 주소
- 에이전트 포워딩 활성화
- 도커 프로비저너
- 앤서블 로컬 프로비저너
- 프로비저너 실행 시점
- 베이그런트 플러그인
- hostmanager
- vbguest
- 버추얼박스 사용자화
- Vagrantfile은 루비다
- 상용 환경 설정
- 요약
- 앤서블 설치
- 3장. 플레이북 시작하기
- 준비 단계
- 아주 간단한 플레이북
- 엔진엑스 설정 파일 지정
- 웹 페이지 생성
- 그룹 생성
- 플레이북 실행
- 플레이북은 YAML
- 문서의 시작
- 파일의 끝
- 주석
- 들여쓰기와 공백
- 문자열
- 불리언
- 리스트
- 딕셔너리
- 여러 줄 문자열
- 문자열 대신 순수 YAML
- 플레이북의 구조
- 플레이
- 태스크
- 모듈
- 앤서블 모듈 문서 살펴보기
- 하나로 모으기
- 변경되면 호스트 상태 추적
- 고급 기능: TLS 지원
- TLS 인증서 생성
- 변수
- 앤서블 문자열에 인용부호 사용
- 엔진엑스 설정 템플릿 생성하기
- 루프
- 핸들러
- 핸들러에서 알아둘 내용
- 테스트
- 검증
- 플레이북
- 플레이북 실행
- 요약
- 4장. 서버를 기술하는 인벤토리
- inventory/hosts 파일
- 사전 작업: 여러 베이그런트 머신 준비
- 동작 인벤토리 파라미터
- 동작 파라미터의 기본값 변경
- 그룹, 그룹, 그룹
- 예제: 장고 앱 배포
- 에일리어스와 포트
- 그룹의 그룹
- 번호가 있는 호스트(반려동물과 가축)
- 인벤토리에서 호스트와 그룹 변수
- 파일에서 호스트와 그룹 변수
- 동적 인벤토리
- 인벤토리 플러그인
- 아마존 EC2
- 애저 리소스 매니저
- 동적 인벤토리 스크립트 인터페이스
- 동적 인벤토리 스크립트 작성
- 인벤토리를 여러 파일로 분할
- 런타임에 addhost와 groupby를 사용해 항목 추가
- add_host
- group_by
- 요약
- inventory/hosts 파일
- 5장. 변수와 팩트
- 플레이북에서 변수 정의
- 별도 파일에 변수 정의
- 디렉터리 배치
- 변수의 값 확인
- 변수 보간
- 변수 등록
- 팩트
- 서버와 관련된 모든 팩트 보기
- 팩트의 하위 집합 보기
- 모든 모듈은 팩트나 인포를 반환한다
- 로컬 팩트
- set_fact로 새로운 변수 정의
- 내장 변수
- hostvars
- inventory_hostname
- groups
- 명령줄에서 변수 설정
- 우선순위
- 요약
- 플레이북에서 변수 정의
- 6장. 메자닌 소개: 테스트 애플리케이션
- 상용 환경 배포가 복잡한 이유
- Postgres 데이터베이스
- 거니콘 애플리케이션 서버
- 엔진엑스 웹 서버
- Supervisor 프로세스 관리자
- 요약
- 7장. 앤서블로 메자닌 배포
- 플레이북 태스크 리스트
- 배포된 파일
- 변수와 비밀 변수
- 여러 패키지 설치
- 태스크에 Become 절 추가
- apt 캐시 갱신
- 깃으로 프로젝트 체크아웃
- 가상 환경에 메자닌과 나머지 패키지 설치
- 태스크에서 복잡한 인수에 관한 짧은 이야기
- 데이터베이스 구성
- 템플릿에서 local_settings.py 파일 생성
- django-manage 명령 실행
- 애플리케이션 컨텍스트에서 사용자 정의 파이썬 스크립트 실행
- 서비스 구성 파일 설정
- 엔진엑스 구성 활성화
- TLS 인증서 설치
- 트위터 크론 잡 설치
- 전체 플레이북
- 베이그런트 머신에 플레이북 실행
- 트러블슈팅
- 깃 저장소를 체크아웃할 수 없는 문제
- 192.168.33.10.nip.io에 접속할 수 없는 오류
- 잘못된 요청(400) 발생
- 요약
- 8장. 앤서블 플레이북 디버깅
- 친화적인 오류 메시지
- SSH 문제 디버깅
- SSH에서 알아야 할 일반적인 사항
- PasswordAuthentication no
- 다른 사용자로 SSH 접속
- 호스트 키 확인 실패
- 내부 네트워크
- debug 모듈
- 플레이북 디버거
- assert 모듈
- 플레이북 실행 전 점검
- 문법 검사
- 호스트 리스트
- 태스크 리스트
- 점검 모드
- Diff(파일 변경사항 표시)
- 태그
- limit
- 요약
- 9장. 롤: 플레이북 확장
- 롤의 기본 구조
- 롤을 사용한 메자닌 배포 예
- 플레이북에서 롤 사용
- pre-tasks와 post-tasks
- 데이터베이스를 배포하기 위한 database 롤
- 메자닌 배포용 mezzanine 롤
- ansible-galaxy를 사용해 롤 파일과 디렉터리 생성
- 의존 롤
- 앤서블 갤럭시
- 웹 인터페이스
- 명령줄 인터페이스
- 실무에서 롤 요구사항
- 직접 작성한 롤 제공
- 요약
- 10장. 복잡한 플레이북
- 오동작한 명령 처리
- 필터
- default 필터
- 등록된 변수용 필터
- 파일 경로에 적용하는 필터
- 사용자 정의 필터 작성
- 룩업
- file
- pipe
- env
- password
- template
- csvfile
- dig
- redis
- 룩업 플러그인 작성
- 더 복잡한 루프
- 룩업 플러그인 사용
- with_lines
- with_fileglob
- with_dict
- 룩업 플러그인으로 구조 반복
- 루프 제어문
- 변수 이름 설정
- 출력에 레이블 지정
- 임포트와 인클루드
- 동적 인클루드
- 롤 인클루드
- 롤 흐름 제어
- 블록
- 블록으로 오류 처리
- ansible-vault를 활용한 중요 정보 암호화
- 다중 비밀번호용 vault
- 요약
- 11장. 호스트, 실행, 핸들러 사용자 정의
- 호스트 지정 패턴
- 호스트 실행 제한
- 제어 머신에서 태스크 실행
- 수동 팩트 수집
- 호스트 IP 주소 조회
- 특정 호스트가 아닌 다른 호스트에서 태스크 실행
- 한 번에 하나의 호스트에서 실행
- 한 번에 여러 호스트에 대해 배치 실행
- 한 번만 실행
- 태스크 실행 제한
- step
- start-at-task
- 태그 실행
- 태그 건너뛰기
- 실행 전략
- linear
- free
- 고급 핸들러
- 태스크 전/후 핸들러
- 핸들러 강제 실행
- 메타 명령
- 핸들러 간 알림
- listen 핸들러
- SSL에서 listen 핸들러 사용 예
- 요약
- 12장. 윈도우 호스트 관리
- 윈도우에 연결
- 파워셸
- 윈도우 모듈
- 자바 개발 머신
- 로컬 사용자 추가
- 윈도우 기능
- Chocolatey를 사용해 소프트웨어 설치
- 자바 설정
- 윈도우 업데이트
- 요약
- 13장. 앤서블과 컨테이너
- 쿠버네티스
- 도커 애플리케이션 생명주기
- 레지스트리
- 앤서블과 도커
- 도커 데몬 연결
- Ghost 애플리케이션
- 로컬 머신에서 도커 컨테이너 실행
- Dockerfile로 이미지 생성
- 도커 레지스트리에 이미지 푸시
- 로컬 머신에서 여러 컨테이너 관리하기
- 로컬 이미지 조회
- 도커화된 애플리케이션 배포
- MySQL 구성
- 고스트 데이터베이스 배포
- 프론트엔드
- 고스트 프론트엔드
- 엔진엑스 프론트엔드
- 컨테이너 초기화
- 요약
- 14장. Molecule을 사용한 품질 보증
- 설치와 설정
- Molecule 드라이버 설정
- 앤서블 롤 생성
- 시나리오
- 원하는 상태
- Molecule 시나리오 구성
- 가상 머신 관리
- 컨테이너 관리
- Molecule 명령
- 린트
- YAMLlint
- ansible-lint
- ansible-later
- 검증 도구
- 앤서블
- 고스
- 테스트인프라
- 요약
- 15장. 컬렉션
- 컬렉션 설치
- 컬렉션 리스트
- 플레이북에서 컬렉션 활용
- 컬렉션 개발
- 요약
- 16장. 이미지 생성
- 패커로 이미지 생성
- 베이그런트 버추얼박스 VM
- 패커와 베이그런트 조합
- 클라우드 이미지
- GCP
- 애저
- 아마존 EC2
- 플레이북
- 도커 이미지 GCC 11
- 요약
- 17장. 클라우드 인프라
- 용어
- 인스턴스
- 아마존 머신 이미지
- 태그
- 자격증명 지정
- 환경 변수
- 구성 파일
- 전제 조건: Boto3 파이썬 라이브러리
- 동적 인벤토리
- 인벤토리 캐시
- 그 밖의 구성 옵션
- 태그를 사용해 동적 그룹 정의
- 기존 리소스에 태그 적용
- 더 나은 그룹 이름
- 가상 사설 클라우드
- ec2와 함께 사용할 ansible.cfg 구성
- 새 인스턴스 시작
- EC2 키 쌍
- 새 키 생성
- 공개 키 업로드
- 보안 그룹
- 허용 IP 주소
- 보안 그룹 포트
- 최신 AMI
- 새 인스턴스 생성과 그룹 추가
- 서버 생성 대기
- 하나로 통합
- VPC 지정
- 동적 인벤토리와 VPC
- 요약
- 용어
- 18장. 콜백 플러그인
- stdout 플러그인
- ARA
- debug
- default
- dense
- json
- minimal
- null
- oneline
- notification과 aggregate 플러그인
- 파이썬 요구사항
- foreman
- jabber
- junit
- log_plays
- logentries
- logstash
- profile_roles
- profile_tasks
- say
- slack
- splunk
- timer
- 요약
- stdout 플러그인
- 19장. 사용자 정의 모듈
- 원격 서버에 접속 가능 여부를 점검하는 예제
- script 모듈 사용
- can_reach 모듈
- 모듈을 개발해야 하는가?
- 사용자 정의 모듈의 위치
- 앤서블에서 모듈 호출 방법
- 인수가 있는 독립 실행 파이썬 스크립트 생성(파이썬 모듈에 해당)
- 모듈을 호스트로 복사
- 호스트에서 인수 파일 생성(비 파이썬 모듈에 해당)
- 모듈 호출
- 예상 출력
- 앤서블의 예상 변수 출력
- 파이썬 모듈 구현
- 인수 파싱
- 파라미터 접근
- AnsibleModule 헬퍼 클래스 불러오기
- 인수 옵션
- AnsibleModule 초기화 파라미터
- 성공/실패 반환
- 외부 명령 호출
- 체크 모드
- 모듈 문서화
- 모듈 디버깅
- 배시에서 모듈 작성
- 배시용 대체 경로 지정
- 요약
- 원격 서버에 접속 가능 여부를 점검하는 예제
- 20장. 앤서블 성능 개선
- SSH 다중화와 ControlPersist
- SSH 다중화 수동 설정
- 앤서블의 SSH 다중화 옵션
- SSH 최적화
- 알고리듬 권장사항
- 파이프라인
- 파이프라인 설정
- 파이프라인용 호스트 구성
- 앤서블용 Mitogen
- 팩트 캐시
- JSON 파일 팩트 캐시
- 레디스 팩트 캐시
- 멤캐시드 팩트 캐시
- 병렬 처리
- 비동기 동시 태스크
- 요약
- SSH 다중화와 ControlPersist
- 21장. 네트워크와 보안
- 네트워크 관리
- 지원되는 공급사
- 네트워크 자동화를 위한 앤서블 연결
- 특권 모드
- 네트워크 인벤토리
- 네트워크 자동화 사용 예시
- 보안
- 규정 준수
- 안전하지만 안전하지 않은
- 섀도 IT
- 선샤인 IT
- 제로 트러스트
- 요약
- 네트워크 관리
- 22장. CI/CD와 앤서블
- CI
- CI 시스템의 구성 요소
- 젠킨스와 앤서블
- 앤서블 롤용 CI 실행
- 스테이징
- 앤서블 플러그인
- 앤서블 타워 플러그인
- 요약
- CI
- 23장. 앤서블 오토메이션 플랫폼
- 구독 모델
- 앤서블 오토메이션 플랫폼 시험판
- 앤서블 오토메이션 플랫폼의 기능
- 접근 통제
- 프로젝트
- 인벤토리 관리
- 잡 템플릿을 통한 잡 실행
- RESTful API
- AWX.AWX
- 설치
- 조직 생성
- 인벤토리 생성
- 잡 탬플릿을 통해 플레이북 실행
- 컨테이너를 통해 앤서블 실행
- 실행 환경 생성
- 요약
- 구독 모델
- 24장. 모범 사례
- 단순성, 모듈화, 결합성
- 콘텐츠 구조화
- 프로젝트와 인벤토리 분리
- 롤과 컬렉션 분리
- 플레이북
- 코드 스타일
- 모두 태그 및 테스트
- 원하는 상태
- 지속적인 제공
- 보안
- 배포
- 성과 지표
- 성과 측정 근거
- 맺는말
- 24장. 모범 사례
- 단순성, 모듈화, 결합성
- 콘텐츠 구조화
- 프로젝트와 인벤토리 분리
- 롤과 컬렉션 분리
- 플레이북
- 코드 스타일
- 모두 태그 및 테스트
- 원하는 상태
- 지속적인 제공
- 보안
- 배포
- 성과 지표
- 성과 측정 근거
- 맺는말