Network engineers are finding it harder than ever to rely solely on manual processes to get their jobs done. New protocols, technologies, delivery models, and the need for businesses to become more agile and flexible have made network automation essential. The updated second edition of this practical guide shows network engineers how to use a range of technologies and tools, including Linux, Python, APIs, and Git, to automate systems through code. This edition also includes brand new topics such as network development environments, cloud, programming with Go, and a reference network automation architecture.
Network Programmability and Automation will help you automate tasks involved in configuring, managing, and operating network equipment, topologies, services, and connectivity. Through the course of the book, you'll learn the basic skills and tools you need to make this critical transition.
You'll
Programming skills with Python and data types, conditionals, loops, functions, and moreNew Linux-based networking technologies and cloud native environments, and how to use them to bootstrap development environments for your network projectsData formats and JSON, XML, YAML, Protobuf, and YANGJinja templating for creating network device configurationsA holistic approach to architecting network automation servicesThe role of application programming interfaces (APIs) in network automationSource control with Git to manage code changes during the automation processCloud-native technologies like Docker and KubernetesHow to automate network devices and services using Ansible, Nornir, and TerraformTools and technologies for developing and continuously integrating network automation
Ostatnio skończyłem czytać “Network Programmability & Automation” - książkę, której autorami są specjaliści od automatyzacji sieci: Matt Oswalt, Christian Adell, Scott S. Lowe i Jason Edelman. W tej zajawce spróbuję określić, o czym jest ta 800-stronicowa cegła oraz dlaczego nie byłem jej docelowym czytelnikiem.
Aby wpis miał sens, muszę przedstawić odrobinę kontekstu osobistego. Swoją karierę zawodową wiążę głównie z językiem programowania Python. Tak się złożyło, że pracuję głównie dla firm związanych z szeroko pojętą telekomunikacją. Stąd siłą rzeczy muszę choć trochę rozumieć domenę, w której działam. Dlatego z polecenia kolegi z pracy, specjalisty od sieci, sięgnąłem po omawianą tu książkę.
Ta niszowa publikacja omawia szerokie spektrum zagadnień, zaczynając od opisu trendów w automatyzacji konfiguracji urządzeń sieciowych. Idąc dalej, jest tu mowa o modelowaniu struktur danych (YANG, JSON, YAML), tworzeniu szablonów (Jinja2), komunikacji z API (Netconf, REST, RESTCONF) oraz podstawach programowania (Python, Go). Uzupełnieniem są opisy konkretnych narzędzi i ich użycia w praktyce (Git, Docker, Ansible, Nornir, Terraform). Zwieńczeniem lektury jest przykład architektury oprogramowania, które korzysta z omówionych technik i technologii.
Jak można wywnioskować z opisu, książka jest przekrojowa. Jej celem jest wprowadzenie “tradycyjnego” inżyniera sieci w tematy związane z programowaniem i automatyzacją procesów. Jeżeli ktoś przez większość kariery konfigurował routery przez logowanie się do nich i wklepywanie komend “z palca” - powinien się nią zainteresować.
Ja jednak mam tło programistyczne - dlatego uważam, że nie była to książka dla mnie. Inżynier sieci wyciągnie z niej sporo wiedzy programistycznej, jednak programista nie wyniesie z niej zbyt wiele wiedzy o sieciach.
Nie uważam jednak, że ta lektura była stratą czasu. Gdyby była, nie przeczytałbym jej. Nauczyłem się stąd wielu nowych rzeczy. Tyle tylko, że nie nadrobiłem braków w wiedzy o sieciach. Wygląda więc na to, że będę musiał poszukać czegoś bardziej specyficznego dla tej domeny…