파이썬 네트워킹 마스터 2/e [파이썬으로 하는 네트워크 자동화, 데브옵스, 테스트 주도 개발]
- 원서명Mastering Python Networking, 2nd Edition: Your one-stop solution to using Python for network automation, DevOps, and Test-Driven Development (ISBN 9781789135992)
- 지은이에릭 추(Eric Chou)
- 옮긴이전성빈
- ISBN : 9791161753638
- 35,000원
- 2019년 10월 31일 펴냄
- 페이퍼백 | 548쪽 | 188*235mm
- 시리즈 : acorn+PACKT, 네트워크 프로그래밍
책 소개
요약
급격히 변화하는 네트워킹 분야에서 파이썬 등을 활용한 네트워크 관리와 엔지니어링의 중요성은 나날이 커지고 있다. 이 책은 기존 네트워크 개발자들을 대상으로 자동화, 보안, 모니터링, 테스트 등 다양한 분야에서 파이썬을 도입하는 방법을 제시한다. 또한 실무에서 사용하는 풍부한 예제를 통해 독자들이 필요한 분야에 곧바로 적용할 수 있도록 했다. 개정판은 AWS, 데브옵스 등 최신 트렌드를 반영해 더 풍부한 내용을 담았다.
이 책에서 다루는 내용
■ 파이썬 라이브러리를 사용한 네트워크 상호작용
■ 앤서블 2.5와 파이썬을 결합한 Cisco, Juniper, Arista eAPI 제어
■ 기존 프레임워크를 통한 고레벨 API 구축
■ AWS 클라우드에 가상 네트워크 구축
■ 젠킨스를 사용한 네트워크 변경사항 자동 배포
■ PyTest 및 Unittest를 사용한 테스트 주도 네트워크 개발
이 책의 대상 독자
이미 여러 종류의 네트워크 기기를 관리하고 있으며, 파이썬이나 다른 도구를 사용해 네트워크 관련 문제를 해결하고 싶어하는 IT 전문가나 실무 엔지니어를 대상으로 한다. 네트워킹과 파이썬의 기본 지식은 미리 습득해 두기를 바란다.
이 책의 구성
1장, ‘TCP/IP 프로토콜과 파이썬 개괄’에서는 인터넷 커뮤니케이션을 구성하는 기본 기술, OSI와 클라이언트-서버 모델에서부터 TCP, UDP, IP 프로토콜 스위트까지 다룬다. 또한 파이썬 소개와 형식, 오퍼레이터, 반복문, 함수, 패키지 등을 간단히 다룬다.
2장, ‘저레벨 네트워크 기기 상호작용’에서는 예시를 통해 파이썬으로 네트워크 기기에 명령을 실행시키는 방법을 알아본다. 이 결과로 CLI 기반 인터페이스를 자동화할 때의 어려움을 확인하게 될 것이다. PExpect와 Paramiko 라이브러리를 사용한다.
3장, ‘API와 목적 중심 네트워킹’에서는 애플리케이션 프로그램 인터페이스 API와 고레벨 상호작용 메서드를 지원하는 최신 네트워크 기기를 다룬다. 네트워크 엔지니어가 파이썬을 통해 목적에 집중하면서 저레벨 작업을 수행하는 방법도 알아본다. 이 책에서는 많은 API 중 시스코 NX-API, 주니퍼 PyEZ, 아리스타 Pyeapi를 예시로 살펴본다.
4장, ‘파이썬 자동화 프레임워크 - 앤서블 기초’에서는 파이썬 기반 오픈 소스 자동화 프레임워크인 앤서블(Ansible)을 살펴본다. 앤서블은 API에서 한 단계 더 나아가 네트워크 목적과 디바이스 상호작용 구현에 초점을 맞추고 있다. 이 장에서는 앤서블의 장점, 구조, 시스코(Cisco), 주니퍼(Juniper), 아리스타(Arista) 기기 등에 적용하는 실제 예제를 알아본다.
5장, ‘파이썬 자동화 프레임워크 - 앤서블 심화’에서는 4장에서 다룬 내용을 토대로 앤서블의 고급 개념인 조건문, 반복문, 템플릿, 변수, 앤서블 볼트, 역할 등을 살펴본다. 사용 중인 네트워크 환경에 맞는 앤서블 모듈을 직접 작성하는 기본 방법도 알아본다.
6장, ‘파이썬 네트워크 보안’에서는 네트워크의 보안 강화에 사용되는 파이썬 도구를 알아본다. 스카피(Scapy)를 이용한 보안 테스팅, 앤서블을 통한 접근 목록 구축, 파이썬을 사용한 포렌식 분석 등을 살펴본다.
7장, ‘파이썬 네트워크 모니터링 I’에서는 다양한 도구를 사용해 네트워크를 모니터링하는 방법을 알아본다. SNMP와 PySNMP를 사용해 기기 정보부터 알아낸 다음 맷플롯립(Matplotlib)과 파이갤(Pygal)을 사용해 결과를 시각화한다. 마지막으로 칵티(Cacti) 예제를 통해 파이썬 스크립트를 입력 소스로 활용하는 방법을 살펴본다.
8장, ‘파이썬 네트워크 모니터링 II’에서는 더 많은 네트워크 모니터링 도구를 살펴본다. 우선 그래프비즈(Graphviz)를 통해 LLDP에서 자동으로 정보를 받아와 네트워크 그래프를 그리는 방법을 알아본다. 다음으로 넷플로우(NetFlow) 또는 유사한 기술을 사용해 푸시 기반 네트워크 모니터링을 수행한다. 또한 파이썬을 사용해 패킷 정보를 디코딩해 플로우 정보를 시각화한다. 마지막으로 일래스틱서치(Elasticsearch)를 설치해 네트워크 모니터링을 보안하는 방법을 살펴본다.
9장, ‘파이썬을 사용한 네트워크 웹 서비스 구축’에서는 파이썬 웹 프레임워크인 플라스크(Flask)를 사용해 네트워크 레벨에서 API를 직접 만드는 방법을 알아본다. 네트워크 레벨 API는 네트워크 환경과 무관하게 리퀘스트를 처리하거나, 원하는 대로 동작을 변경하거나, 필요한 동작만을 노출해 보안을 강화하는 장점이 있다.
10장, ‘AWS 클라우드 네트워킹’에서는 AWS를 사용해 기능적이고 유연한 가상 네트워크 구축 방법을 살펴본다. 또한 CloudFormation, VPC 라우팅 테이블, 접근 목록, 일래스틱 IP, NAT 게이트웨이, 다이렉트 커넥트 등 관련 주제도 알아본다.
11장, ‘깃 사용하기’에서는 깃(Git)을 사용해 협업과 코드 버전 제어를 구현하는 방법에 대해 알아본다. 깃을 네트워크 작업에 사용하는 실용적인 예시를 소개한다.
12장, ‘젠킨스를 사용한 지속적 통합’에서는 젠킨스를 사용해 동작 파이프라인을 자동으로 생성함으로써 시간과 신뢰성을 향상시키는 방법을 알아본다.
13장, ‘네트워크를 위한 TDD’에서는 파이썬 유닛테스트(unittest) 및 파이테스트(PyTest)를 사용해 코드를 검증하는 간단한 테스트 수행 방법을 알아본다. 또한 네트워크의 도달성, 지연, 보안, 트랜잭션 등을 검증하기 위한 테스트 작성 예시를 살펴본다. 아울러 이런 테스트를 젠킨스와 같은 지속적 통합 도구와 함께 사용하는 방법을 제시한다.
목차
목차
- 1장. TCP/IP 프로토콜과 파이썬 개괄
- 인터넷의 개요
- 서버, 호스트, 네트워크 컴포넌트
- 데이터 센터의 등장
- 엔터프라이즈 데이터 센터
- 클라우드 데이터 센터
- 엣지 데이터 센터
- OSI 모델
- 클라이언트-서버 모델
- 네트워크 프로토콜 스위트
- TCP
- TCP의 기능과 특성
- TCP 메시지와 데이터 전달
- UDP
- IP
- IP NAT과 보안
- IP 라우팅
- 파이썬 개요
- 버전
- 운영 체제
- 파이썬 프로그램 실행하기
- 내장 자료형
- None형
- 숫자형
- 나열형
- 매핑형
- 세트형
- 연산자
- 제어 흐름
- 함수
- 클래스
- 모듈과 패키지
- 요약
- 인터넷의 개요
- 2장. 저레벨 네트워크 기기 상호작용
- CLI의 어려움
- 가상 네트워크 랩 만들기
- 시스코 VIRL
- VIRL 팁
- 시스코 데브넷과 디클라우드
- GNS3
- 시스코 VIRL
- 파이썬 Pexpect 라이브러리
- 설치
- Pexpect 개요
- 첫 번째 Pexpect 예제
- Pexpect 좀 더 살펴보기
- Pexpect와 SSH
- 정리
- 파이썬 Paramiko 라이브러리
- 설치
- Paramiko 개요
- 첫 번째 Paramico 예제
- 심화 기능
- 서버 관리
- 정리
- 논의
- Pexpect와 Paramiko 사용 시 주의할 점
- 멱등 네트워크 기기 상호작용
- 빠른 자동화와 오작동
- Pexpect와 Paramiko 사용 시 주의할 점
- 요약
- 3장. API와 목적 중심 네트워킹
- 코드로서의 인프라스트럭처
- 목적 중심 네트워킹
- 스크린 스크래핑과 API 구조 출력
- 데이터 모델링 인프라스트럭처 코드
- 시스코 API와 ACI
- 시스코 NX-API
- 설치와 기기 준비
- NX-API 예제
- 시스코와 YANG 모델
- 시스코 ACI
- 시스코 NX-API
- 주니퍼 네트워크 파이썬 API
- 주니퍼와 NETCONF
- 준비 사항
- 주니퍼 NETCONF 예제
- 주니퍼 PyEZ
- 설치와 준비 사항
- PyEZ 예제
- 주니퍼와 NETCONF
- 아리스타 파이썬 API
- 아리스타 eAPI 관리 도구
- eAPI 준비
- eAPI 예제
- 아리스타 Pyeapi 라이브러리
- Pyeapi 설치
- Pyeapi 예제
- 아리스타 eAPI 관리 도구
- 범용 라이브러리
- 요약
- 코드로서의 인프라스트럭처
- 4장. 파이썬 자동화 프레임워크 - 앤서블 기초
- 더 선언적인 프레임워크
- 간단한 앤서블 예제
- 컨트롤 노드 설치
- 다른 버전의 앤서블 실행하기
- 랩 셋업
- 첫 번째 앤서블 플레이북
- 공개 키 인증
- 인벤토리 파일
- 플레이북 만들기
- 앤서블의 장점
- 에이전트가 필요 없음
- 멱등
- 단순함과 확장성
- 네트워크 벤더 지원
- 앤서블 구조
- YAML
- 인벤토리
- 변수
- 진자2 템플릿
- 앤서블 네트워킹 모듈
- 로컬 연결과 환경 변수
- 제공자 매개변수
- 앤서블 시스코 예제
- 앤서블 2.5 연결 예제
- 앤서블 주니퍼 예제
- 앤서블 아리스타 예제
- 요약
- 5장. 파이썬 자동화 프레임워크 - 앤서블 심화
- 앤서블 조건문
- when 절
- 앤서블 네트워크 팩트
- 네트워크 모듈 조건문
- 앤서블 반복문
- 표준 반복문
- 딕셔너리 반복문
- 템플릿
- 진자2 템플릿
- 진자2 반복문
- 진자2 조건문
- 그룹과 호스트 변수
- 그룹 변수
- 호스트 변수
- 앤서블 볼트
- 앤서블 include와 역할
- 앤서블 include 문
- 앤서블 역할
- 사용자 모듈 작성하기
- 사용자 모듈: 첫 번째
- 사용자 모듈: 두 번째
- 요약
- 앤서블 조건문
- 6장. 파이썬 네트워크 보안
- 랩 설정
- 파이썬 스카피
- 스카피 설치
- 대화형 예제
- 스니핑
- TCP 포트 스캔
- 핑 콜렉션
- 네트워크 공격
- 스카피 리소스
- 접근 목록
- 앤서블을 통한 접근 목록 구현
- MAC 접근 목록
- Syslog 검색
- RE 모듈 검색
- 그 밖의 도구
- 사설 VLAN
- UFW와 파이썬
- 참고 자료
- 요약
- 7장. 파이썬 네트워크 모니터링 I
- 랩 설정
- SNMP
- 설정
- PySNMP
- 파이썬 데이터 시각화
- 맷플롯립
- 설치
- 기본 예제
- 맷플롯립을 통한 SNMP 결과 출력
- 추가 맷플롯립 리소스
- 파이갤
- 설치
- 기본 예제
- 파이갤을 이용한 SNMP 출력
- 추가 파이갤 리소스
- 맷플롯립
- 파이썬과 칵티
- 설치
- 파이썬 스크립트를 통한 데이터 입력
- 요약
- 8장. 파이썬 네트워크 모니터링 II
- 그래프비즈
- 랩 설정
- 설치
- 그래프비즈 예제
- 파이썬 그래프비즈 예제
- LLDP 이웃 그래프
- 정보 취득
- 파이썬 파서 스크립트
- 최종 플레이북
- 플로 기반 모니터링
- 파이썬을 이용한 넷플로우 파싱
- 파이썬 소켓과 구조체
- ntop 트래픽 모니터링
- ntop 파이썬 확장 기능
- 에스플로우
- 파이썬을 이용한 sFlowtool과 sFlow-RT
- 파이썬을 이용한 넷플로우 파싱
- 일래스틱서치(ELK 스택)
- 호스팅 ELK 서비스 설정
- 로그스태시 형식
- 로그스태시 포매팅을 위한 파이썬 헬퍼 스크립트
- 요약
- 그래프비즈
- 9장. 파이썬을 사용한 네트워크 웹 서비스 구축
- 파이썬 웹 프레임워크 비교
- 플라스크와 랩 설정
- 플라스크 들어가기
- HTTPie 클라이언트
- URL 라우팅
- URL 변수
- URL 생성
- jsonify 반환
- 네트워크 정적 콘텐츠 API
- Flask-SQLAlchemy
- 네트워크 콘텐츠 API
- 기기 API
- 기기 ID API
- 네트워크 동적 동작
- 비동기 작업
- 보안
- 추가 리소스
- 요약
- 10장. AWS 클라우드 네트워킹
- AWS 설치
- AWS CLI와 파이썬 SDK
- AWS 네트워크 개요
- 가상 사설 클라우드
- 라우팅 테이블과 라우팅 타겟
- CloudFormation을 통한 자동화
- 보안 그룹과 네트워크 ACL
- 탄력적 IP
- NAT 게이트웨이
- 다이렉트 커넥트와 VPN
- VPN 게이트웨이
- 다이렉트 커넥트
- 네트워크 스케일링 서비스
- 탄력적 로드 밸런싱
- 라우트53 DNS 서비스
- 클라우드프론트 CDN 서비스
- 그 밖의 AWS 네트워크 서비스
- 요약
- AWS 설치
- 11장. 깃 사용하기
- 깃 소개
- 깃의 장점
- 깃 용어
- 깃과 깃허브
- 깃 설정
- Gitignore
- 깃 사용 예제
- 깃허브 예제
- 풀 리퀘스트를 통한 협업
- 깃허브 예제
- 깃과 파이썬
- GitPython
- PyGitHub
- 설정 백업 자동화
- 깃으로 협업하기
- 요약
- 깃 소개
- 12장. 젠킨스를 통한 지속적 통합
- 전통적인 변화 관리 프로세스
- 지속적 통합의 소개
- 젠킨스 설치
- 젠킨스 예제
- 첫 번째 작업: 파이썬 스크립트
- 젠킨스 플러그인
- 지속적 네트워크 통합 예제
- 젠킨스와 파이썬
- 지속적 네트워크 통합
- 요약
- 13장. 네트워크를 위한 TDD
- TDD의 개요
- 용어
- 코드로서의 토폴로지
- 파이썬 unittest 모듈
- 파이썬 테스트: 심화
- pytest 예제
- 네트워크 테스트 작성하기
- 접근성 테스트
- 네트워크 지연 테스트
- 보안 검사
- 트랜잭션 테스트
- 네트워크 설정 테스트
- 앤서블 테스트
- Pytest와 젠킨스
- 젠킨스 통합
- TDD의 개요