책 소개
요약
데브옵스(DevOps)의 업무에 있어서 파이썬을 활용하는 방법을 안내한다. 도구와 언어의 사용자 위치에 머무르지 않고 파이썬으로 데브옵스를 보다 발전시키고 싶은 사람에게 이 책을 권한다. 텍스트 처리와 테스팅과 패키징 등 파이썬에 관한 것부터, 앤서블이나 도커, AWS 등 데브옵스와 관계가 깊은 도구를 파이썬으로 다뤄야 할 때 알아야 할 점 등 저자의 오랜 경험에서 나오는 실용적인 조언도 함께한다.
이 책에서 다루는 내용
◆ 파이썬을 통한 운영체제 자동화
◆ 파이썬 애플리케이션의 패키징
◆ 파이썬을 데브옵스 콘솔로 사용
◆ 클라우드 자동화
이 책의 구성
파이썬을 활용하면 복잡한 시스템을 자동화하는 가독성 있는 코드를 만들 수 있다. 이 책은 시스템 관리/운영 업무를 배우기 쉬운 코딩으로 전환하는 데 도움을 줄 수 있다.
우선 커맨드라인 스크립트를 작성하는 것부터 시작해서 간단한 데브옵스 작업을 자동화하는 과정을 다룬다. 그런 다음 결함으로 인한 사고를 방지하기 위한 안정적이고 빠른 단위 테스트를 설계하는 방법을 다룬다. 고급 사례로 주피터를 원격 제어 패널로 사용하는 방법과 앤서블, 솔트 그리고 그 확장을 다룬다.
또한 도커를 포함해 최신 파이썬 패키징 시스템, 패키지 저장소 등 파이썬 애플리케이션을 배포하는 모범 사례도 다룬다. 더불어 AWS API와 쿠버네티스 API 사용 방법, 도커 컨테이너 이미지 빌드와 실행을 자동화하는 방법을 다룬다. 끝으로 테라폼을 유연하게 사용하기 위한 파이썬 활용법을 다룬다.
지은이의 말
파이썬은 아메바(Amoeba) 운영체제를 자동화하기 위한 언어로 시작됐다. 일반적인 유닉스 셸은 운영체제에 의존성이 있기 때문에 자동화에 알맞지 않았다. 아메바 OS는 이제 유물이 됐다. 하지만 파이썬은 데브옵스 작업의 핵심인 운영 자동화에 여전히 사용되고 있다.
새벽에 장애 알림을 받고 잘못 작동하는 프로그램을 수정하는 것이 업무의 중요한 부분이라면 그만큼 이해하기 쉽고 읽기 좋은 코드를 만드는 것이 필수적이다.
파이썬은 운영체제의 범용 언어라고 할 수 있는 C, C++와 결합하기 좋으면서도 메모리 안전성을 제공하므로 자동화 계층에서 문제가 생기는 일이 적다.
처음에는 아니었지만 파이썬은 현재 인기 높은 언어 중 하나다. 파이썬 경험이 있는 사람을 찾기도 쉽고 학습을 위한 자료 또한 쉽게 구할 수 있다.
이 책은 운영 자동화를 위해 파이썬을 어떻게 활용하는지 다룬다.
이 책을 최대한 활용하려면 파이썬에 어느 정도 익숙해야 한다. 파이썬을 처음 접한다면 공식 파이썬 튜토리얼(https://docs.python.org)을 비롯해 인터넷에 좋은 자료가 많으므로 활용하기 바란다. 또한 리눅스와 같은 유닉스 계열 운영체제와 커맨드라인 인터페이스(CLI, Command Line Interface) 사용에 어느 정도 익숙해야 한다.
목차
목차
- 1장. 파이썬 설치
- 1.1 운영체제 패키지
- 1.2 pyenv 사용
- 1.3 소스코드에서 빌드
- 1.4 PyPy
- 1.5 아나콘다
- 1.6 정리
- 2장. 패키징
- 2.1 가상 환경
- 2.2 pip
- 2.3 셋업과 휠
- 2.4 바이너리 휠
- 2.5 manylinux 휠
- 2.5.1 라이브러리 내장 휠
- 2.5.2 이식성 휠
- 2.5.3 manylinux 컨테이너
- 2.5.4 manylinux 휠 설치
- 2.6 tox
- 2.6.1 하나의 환경
- 2.6.2 다중 환경
- 2.6.3 차이가 있는 다중 환경
- 2.7 pip 툴
- 2.8 Poetry
- 2.8.1 설치
- 2.8.2 생성
- 2.8.3 의존성
- 2.8.4 개발
- 2.8.5 빌드하기
- 2.9 Pipenv
- 2.10 DevPI
- 2.11 pex와 shiv
- 2.11.1 pex
- 2.11.2 shiv
- 2.12 정리
- 3장. 대화형 사용
- 3.1 네이티브 콘솔
- 3.2 코드 모듈
- 3.3 ptpython
- 3.4 IPython
- 3.5 주피터랩
- 3.6 정리
- 4장. 운영체제 자동화
- 4.1 파일
- 4.2 프로세스
- 4.3 네트워킹
- 4.4 정리
- 5장. 테스팅
- 5.1 단위 테스팅
- 5.2 목, 스텁, 가짜 객체
- 5.3 파일 테스팅
- 5.3.1 하위 디렉터리 테스팅
- 5.3.2 eatmydata로 테스트를 더 빠르게
- 5.3.3 tmpfs로 테스트를 빠르게
- 5.4 프로세스 테스팅
- 5.5 네트워크 테스팅
- 5.6 HTTP 클라이언트 테스트
- 6장. 텍스트 조작
- 6.1 바이트, 문자열, 유니코드
- 6.2 문자열
- 6.3 정규 표현식
- 6.4 JSON
- 6.5 CSV
- 6.6 정리
- 7장. httpx
- 7.1 클라이언트
- 7.2 REST
- 7.3 보안
- 7.4 인증
- 7.5 비동기 클라이언트
- 7.6 정리
- 8장. 암호화
- 8.1 페르넷
- 8.2 PyNaCl
- 8.3 Passlib
- 8.4 TLS 인증서
- 8.5 정리
- 9장. 파라미코
- 9.1 SSH 보안
- 9.2 클라이언트 키
- 9.3 호스트 식별
- 9.4 연결
- 9.5 명령 실행
- 9.6 원격 파일
- 9.6.1 메타정보 관리
- 9.6.2 업로드
- 9.6.3 다운로드
- 9.7 정리
- 10장. 솔트스택
- 10.1 솔트 기본
- 10.2 솔트의 기본 개념
- 10.3 솔트 형식
- 10.4 솔트 확장
- 10.4.1 상태 모듈
- 10.4.2 실행 모듈
- 10.4.3 유틸리티
- 10.4.4 추가 서드파티 의존성
- 10.5 정리
- 11장. 앤서블
- 11.1 앤서블 기본
- 11.2 앤서블 개념
- 11.3 앤서블 확장
- 11.4 정리
- 12장. 컨테이너
- 12.1 기반 이미지 선택
- 12.1.1 GNU C 라이브러리 지원
- 12.1.2 장기 지원
- 12.1.3 예상치 않은 변경 피하기
- 12.2 파이썬 인터프리터 설치
- 12.2.1 콘다
- 12.2.2 서드파티 저장소
- 12.2.3 컨터이너에서 파이썬 빌드
- 12.2.4 파이썬 기반 이미지
- 12.3 파이썬 애플리케이션 설치
- 12.4 컨테이너 빌드 캐시 최적화
- 12.5 컨테이너 재빌드
- 12.6 컨테이너 보안
- 12.7 정리
- 13장. AWS
- 13.1 보안
- 13.1.1 액세스 키 구성
- 13.1.2 임시 토큰 만들기
- 13.2 EC2
- 13.2.1 리전
- 13.2.2 AMI
- 13.2.3 SSH 키
- 13.2.4 머신 가동
- 13.2.5 안전하게 로그인하기
- 13.2.6 이미지 빌드
- 13.3 S3 서비스
- 13.3.1 버킷 관리
- 13.4 정리
- 14장. 쿠버네티스
- 14.1 파드
- 14.1.1 활성 상태와 준비 상태
- 14.1.2 설정
- 14.1.3 파이썬 사이드카
- 14.2 REST API
- 14.3 오퍼레이터
- 14.3.1 권한
- 14.3.2 커스텀 리소스
- 14.3.3 검색
- 14.3.4 목표 상태
- 14.3.5 비교
- 14.3.6 조정
- 14.3.7 하나로 합치기
- 14.4 정리
- 15장. 테라폼
- 15.1 JSON 문법
- 15.2 테라폼 설정 생성
- 15.3 정리
- 찾아보기