mirror of
https://github.com/MichaelCade/90DaysOfDevOps.git
synced 2025-02-02 12:24:40 +07:00
148 lines
9.8 KiB
Markdown
148 lines
9.8 KiB
Markdown
---
|
|
title: '#90DaysOfDevOps - Network Automation - Day 24'
|
|
published: false
|
|
description: 90DaysOfDevOps - Network Automation
|
|
tags: 'devops, 90daysofdevops, learning'
|
|
cover_image: null
|
|
canonical_url: null
|
|
id: 1048805
|
|
---
|
|
|
|
## 네트워크 자동화
|
|
|
|
### 네트워크 자동화의 기본 사항
|
|
|
|
네트워크 자동화의 주요 동인
|
|
|
|
- 민첩성 달성
|
|
- 비용 절감
|
|
- 오류 제거
|
|
- 규정 준수 보장
|
|
- 중앙 집중식 관리
|
|
|
|
자동화 도입 프로세스는 각 비즈니스에 따라 다릅니다. 자동화를 배포하는 데 있어 모든 것에 적합한 방법은 없으며, 조직에 가장 적합한 접근 방식을 파악하고 수용하는 능력은 보다 민첩한 환경을 유지하거나 만드는 데 매우 중요하며, 항상 비즈니스 가치와 최종 사용자 경험에 초점을 맞춰야 합니다. (처음에 DevOps 전체와 문화 변화 및 이로 인한 자동화된 프로세스와 관련하여 비슷한 내용을 말씀드렸습니다.)
|
|
|
|
이를 세분화하려면 자동화하려는 작업이나 프로세스가 최종 사용자 경험 또는 비즈니스 가치를 어떻게 달성하고 개선할 수 있는지 파악하고 단계별 체계적인 접근 방식을 따라야 합니다.
|
|
|
|
"어디로 가는지 모르면 어떤 길이라도 그곳에 도달할 수 있습니다."
|
|
|
|
달성하고자 하는 프레임워크 또는 설계 구조를 통해 최종 목표가 무엇인지 파악한 다음, 비즈니스 결과를 기반으로 다양한 단계에서 자동화 성공 여부를 측정하면서 목표 달성을 위해 단계적으로 작업하세요.
|
|
|
|
기존 애플리케이션을 중심으로 모델링된 개념 구축 자동화는 애플리케이션, 서비스, 인프라에 적용해야 하기 때문에 거창하게 개념을 설계할 필요가 없으므로 기존 인프라, 즉 기존 애플리케이션을 중심으로 모델링하여 개념을 구축하기 시작하세요.
|
|
|
|
### 네트워킹 자동화에 대한 접근 방식
|
|
|
|
작업을 식별하고 네트워크 변경 요청에 대한 검색을 수행하여 솔루션을 자동화할 가장 일반적인 이슈와 문제를 파악해야 합니다.
|
|
|
|
- 현재 수동으로 처리하고 있는 모든 변경 요청과 workflow의 목록을 작성합니다.
|
|
- 가장 일반적이고 시간이 오래 걸리며 오류가 발생하기 쉬운 활동을 파악하세요.
|
|
- 비즈니스 중심 접근 방식을 취하여 요청의 우선순위를 정하세요.
|
|
- 이는 자동화 프로세스를 구축하기 위한 프레임워크이며, 자동화해야 하는 작업과 자동화하지 않아야 하는 작업을 구분합니다.
|
|
|
|
그런 다음 작업을 나누고 서로 다른 네트워크 기능이 어떻게 작동하고 상호 작용하는지 분석해야 합니다.
|
|
|
|
- 인프라/네트워크 팀은 애플리케이션을 배포하기 위해 여러 계층에서 변경 티켓을 받습니다.
|
|
- 네트워크 서비스를 기반으로 여러 영역으로 나누고 서로 어떻게 상호 작용하는지 이해합니다.
|
|
- 애플리케이션 최적화
|
|
- ADC(애플리케이션 전송 컨트롤러)
|
|
- 방화벽
|
|
- DDI(DNS, DHCP, IPAM 등)
|
|
- 라우팅
|
|
- 기타
|
|
- 다양한 종속성을 파악하여 비즈니스 및 문화적 차이를 해결하고 팀 간 협업을 유도하세요.
|
|
|
|
재사용 가능한 정책, 재사용 가능한 서비스 작업, 프로세스 및 입출력을 정의하고 단순화하세요.
|
|
|
|
- 다양한 서비스, 프로세스 및 입출력을 위한 오퍼링을 정의하세요.
|
|
- 배포 프로세스를 간소화하면 신규 워크로드와 기존 워크로드 모두의 시장 출시 시간을 단축할 수 있습니다.
|
|
- 표준 프로세스가 마련되면, 멀티스레드 접근 방식과 제공을 위해 개별 요청에 따라 프로세스를 순서화 및 조정할 수 있습니다.
|
|
|
|
정책을 비즈니스별 활동과 결합하세요. 이 정책을 구현하면 비즈니스에 어떤 도움이 되나요? 시간이 절약되나요? 비용이 절감되나요? 더 나은 비즈니스 결과를 제공하나요?
|
|
|
|
- 서비스 작업이 상호 운용 가능한지 확인하세요.
|
|
- 증분 서비스 작업을 연결하여 비즈니스 서비스를 만들 수 있도록 정렬하세요.
|
|
- 필요에 따라 서비스 작업을 연결하고 다시 연결할 수 있는 유연성을 제공하세요.
|
|
- 셀프 서비스 기능을 배포하고 운영 효율성을 개선할 수 있는 기반을 마련하세요.
|
|
- 감독 및 규정 준수에 지속적으로 기여할 수 있도록 다양한 기술 스킬셋을 허용합니다.
|
|
|
|
가용성과 서비스를 유지하면서 정책과 프로세스를 **반복**하여 추가하고 개선하세요.
|
|
|
|
- 기존 작업을 자동화하여 작게 시작하세요.
|
|
- 자동화 프로세스에 익숙해져서 자동화를 통해 이점을 얻을 수 있는 다른 영역을 식별할 수 있습니다.
|
|
- 자동화 이니셔티브를 반복하여 필요한 가용성을 유지하면서 민첩성을 점진적으로 추가합니다.
|
|
- 점진적인 접근 방식을 취하면 성공의 길을 열 수 있습니다!
|
|
|
|
네트워크 서비스를 오케스트레이션하세요!
|
|
|
|
- 애플리케이션을 신속하게 제공하려면 배포 프로세스의 자동화가 필요합니다.
|
|
- 민첩한 서비스 환경을 구축하려면 기술 전반에 걸쳐 관리해야 할 다양한 요소가 필요합니다.
|
|
- 자동화와 배포 순서를 제어할 수 있는 End To End 오케스트레이션을 준비하세요.
|
|
|
|
## 네트워크 자동화 도구
|
|
|
|
여기서 좋은 소식은 대부분의 경우 네트워크 자동화에 사용하는 도구는 다른 자동화 영역에 사용하거나 지금까지 이미 다룬 내용 또는 향후 세션에서 다룰 내용과 동일하다는 것입니다.
|
|
|
|
운영 체제 - 이번 챌린지 내내 그랬듯이 저는 대부분의 학습을 Linux OS로 하는 데 집중하고 있으며, 그 이유는 Linux 섹션에서 설명했지만, 크로스 OS 플랫폼이긴 하지만 오늘 다룰 거의 모든 도구는 처음부터 모두 Linux 기반 애플리케이션 또는 도구로 시작되었습니다.
|
|
|
|
통합 개발 환경(IDE) - 다양한 언어에서 사용할 수 있는 광범위한 플러그인을 기반으로 Visual Studio Code를 IDE로 추천한다는 것 외에는 여기서 더 이상 설명할 것이 없습니다.
|
|
|
|
구성 관리 - 아직 구성 관리 섹션은 다루지 않았지만, 이 영역에서 구성 관리 및 자동화를 위해 Ansible이 가장 선호되는 것은 분명합니다. Ansible은 Python으로 작성되었지만, Python을 알 필요는 없습니다.
|
|
|
|
- 에이전트리스
|
|
- SSH만 필요
|
|
- 대규모 지원 커뮤니티
|
|
- 다양한 네트워크 모듈
|
|
- 푸시 전용 모델
|
|
- YAML로 구성
|
|
- 오픈 소스!
|
|
|
|
[Link to Ansible Network Modules](https://docs.ansible.com/ansible/2.9/modules/list_of_network_modules.html)
|
|
|
|
구성 관리 섹션에서 **Ansible Tower**에 대해서도 다룰 예정이며, 이를 Ansible의 GUI로 보시면 됩니다.
|
|
|
|
CI/CD - 이와 관련된 개념과 도구에 대해서는 다시 다룰 예정이지만, 네트워킹뿐만 아니라 서비스 및 플랫폼의 모든 프로비저닝에 걸쳐 있기 때문에 최소한 여기서 언급하는 것이 중요합니다.
|
|
|
|
특히 Jenkins는 네트워크 자동화를 위한 인기 있는 도구를 제공하거나 제공하는 것으로 보입니다.
|
|
|
|
- 변경사항이 있는지 git 리포지토리를 모니터링한 다음 변경을 시작합니다.
|
|
|
|
버전 관리 - 이 역시 나중에 자세히 살펴볼 내용입니다.
|
|
|
|
- Git은 로컬 디바이스에서 코드의 버전 제어를 제공합니다 - 크로스 플랫폼
|
|
- GitHub, GitLab, BitBucket 등은 리포지토리를 정의하고 코드를 업로드할 수 있는 온라인 웹사이트입니다.
|
|
|
|
언어 | 스크립팅 - 우리가 아직 다루지 않은 Python입니다. 상황에 따라 프로그래밍 언어로 Go를 사용하기로 결정했는데, Golang과 Python이 박빙의 승부를 펼쳤으며 네트워크 자동화에는 Python이 승자가 된 것 같습니다.
|
|
|
|
- 여기서 언급해야 할 것이 바로 파이썬으로 작성된 자동화 프레임워크인 Nornir입니다. 이것은 Ansible의 역할을 하는 것으로 보이지만 특히 네트워크 자동화를 중심으로 합니다. [Nornir documentation](https://nornir.readthedocs.io/en/latest/)
|
|
|
|
API 분석 - Postman은 RESTful API를 분석하기 위한 훌륭한 도구입니다. API를 빌드, 테스트 및 수정하는 데 도움이 됩니다.
|
|
|
|
- POST >>> 리소스 객체를 생성합니다.
|
|
- GET >>> 리소스를 검색합니다.
|
|
- PUT >>> 리소스를 생성하거나 교체합니다.
|
|
- PATCH >>> 리소스 오브젝트를 생성하거나 업데이트합니다.
|
|
- DELETE >>> 리소스를 삭제합니다.
|
|
|
|
[Postman tool Download](https://www.postman.com/downloads/)
|
|
|
|
### 기타 언급할 도구
|
|
|
|
[Cisco NSO (Network Services Orchestrator)](https://www.cisco.com/c/en/us/products/cloud-systems-management/network-services-orchestrator/index.html)
|
|
|
|
[NetYCE - Simplify Network Automation](https://netyce.com/)
|
|
|
|
[Network Test Automation](https://pubhub.devnetcloud.com/media/genie-feature-browser/docs/#/)
|
|
|
|
앞으로 3일 동안은 지금까지 다룬 내용 중 몇 가지를 좀 더 실습해보고 Python과 네트워크 자동화에 관한 작업을 해볼 계획입니다.
|
|
|
|
지금까지 네트워킹 주제를 모두 다루지는 못했지만, 아래에 추가하는 리소스를 통해 계속 학습하면서 따라갈 수 있을 정도로 폭넓게 다루고자 합니다.
|
|
|
|
## 자료
|
|
|
|
- [3 Necessary Skills for Network Automation](https://www.youtube.com/watch?v=KhiJ7Fu9kKA&list=WL&index=122&t=89s)
|
|
- [Computer Networking full course](https://www.youtube.com/watch?v=IPvYjXCsTg8)
|
|
- [Practical Networking](http://www.practicalnetworking.net/)
|
|
- [Python Network Automation](https://www.youtube.com/watch?v=xKPzLplPECU&list=WL&index=126)
|
|
|
|
[Day 25](day25.md)에서 봐요!
|