- ru
- Language: en
- Documentation version: latest
Часто задаваемые вопросы (FAQ)
Здесь собраны вопросы, которые наиболее часто возникают при чтении книги.
Чем это отличается от обычного вводного курса по Python?
Основных отличий три:
основы даются достаточно коротко;
подразумевается определённая предметная область знаний (сетевое оборудование);
все примеры, по возможности, ориентированы на сетевое оборудование.
Я сетевик. Для чего мне нужна эта книга?
В первую очередь – для автоматизации рутинных задач. Автоматизация даёт несколько преимуществ:
высокоуровневое мышление – проще подняться над всем, когда вы свободны от рутинной работы. У Вас появится время и возможность думать об улучшениях;
доверие – вы не будете бояться делать изменения, которые, как правило, сопряжены с риском, так как сеть это основа работы всех приложений и цена ошибки высока;
консистентная конфигурация – вы сможете автоматизированно создавать файлы настроек сетевого оборудования, от пользователей и подписей интерфейсов до функционала безопасности, и будете меньше переживать о том, забыли ли вы нечто.
Конечно, не будет такого, что после прочтения книги, вы “всё автоматизируете и наступит счастье”, но это шаг в данном направлении. Я ни в коем случае не агитирую за то, чтобы автоматизация выполнялась кучей самописных скриптов. Если есть софт, который решает нужные Вам задачи, это отлично, используйте его. Но если его нет, или если вы просто ещё о таком не думали, попробуйте начать с простого – Ansible, например, позволит выполнять многие задачи практически “из коробки”.
Зачем тогда учить Python? Дело в том, что тот же Ansible не решит все вопросы. И, возможно, вам понадобится добавить какой-то функционал самостоятельно. Кроме непосредственной настройки оборудования, есть ежедневные рутинные задачи, которые можно автоматизировать с помощью Python. Скажем так, если вы не хотите разбираться с Python, но хотите автоматизировать процесс настройки и работы с оборудованием, обратите своё внимание на Ansible. Даже “из коробки” он будет очень полезен. Если же вы потом войдете во вкус и захотите добавить своё, чего нет в Ansible, возвращайтесь :-)
И ещё, этот курс не только о том, как использовать Python для подключения к оборудованию и его настройке. Он и о том, как решать задачи, которые не касаются подключения к оборудованию, например, изменить что-то в нескольких файлах конфигурации, или обработать log-файл – Python поможет вам решать в том числе и подобные задачи.
Почему книга именно для сетевых инженеров?
Есть несколько причин:
сетевые инженеры уже обладают опытом работы в ИТ, и часть концепций им знакома, и, скорее всего, какие-то основы программирования большинству уже будут знакомы. Это означает, что будет гораздо проще разобраться с Python;
работа в командной строке и написание скриптов вряд ли испугает их;
у сетевых инженеров есть знакомая им предметная область, на которую можно опираться при составлении примеров и заданий.
Если рассказывать на абстрактных примерах “о котиках и зайчиках”, это одно. Но когда в примерах есть возможность использовать идеи из предметной области, всё становится проще, рождаются конкретные идеи, как улучшить какую-либо программу, скрипт. А когда человек пытается её улучшить, он начинает разбираться с новым - это очень сильно помогает продвигаться вперёд.
Почему именно Python?
Причины следующие:
в контексте работы с сетевым оборудованием, сейчас часто используется именно Python;
на некотором оборудовании Python встроен или есть API, который поддерживает Python;
Python достаточно прост для изучения (конечно, это относительно, и более простым может казаться другой язык, но, скорее, это будет из-за имеющегося опыта работы с языком, а не потому, что Python сложный);
с Python вы вряд ли быстро дойдете до границ возможностей языка;
Python может использоваться не только для написания скриптов, но и для разработки приложений. Разумеется, это не является задачей этой книги, но, по крайней мере, вы потратите время на язык, который позволит вам легко шагнуть дальше, чем написание простых скриптов;
из программ, связанных с сетями, на Python написан, например, GNS3.
И еще один момент – в контексте книги, Python нужно рассматривать не как единственно правильный вариант, и не как “правильный” язык. Нет, Python это просто инструмент, как отвёртка например, и мы учимся им пользоваться для конкретных задач. То есть, никакой идеологической подоплеки здесь нет, никакого “только Python” и никакого поклонения тем более. Странно поклоняться отвертке :-) Всё просто - есть хороший и удобный инструмент, который подойдет к разным задачам. Он не лучший во всём и далеко не единственный язык в принципе. Начните с него, и потом вы сможете самостоятельно выбрать нечто другое, если захотите – эти знания всё равно не пропадут.
Нужный мне модуль не поддерживает Python 3
Есть несколько вариантов решения:
попробуйте найти альтернативный модуль, который поддерживает Python 3 (не обязательно последней версии языка);
попробуйте найти community-версию этого модуля для Python 3. Возможно, официальной версии нет, но сообщество могло перевести его самостоятельно на версию 3, особенно если этот модуль популярен;
используйте Python 2.7, ничего страшного не произойдет. Если вы не собираетесь писать огромное приложение, а просто используете Python для автоматизации своих задач, Python 2.7 совершенно точно подойдет.
Я не знаю, нужно ли мне это.
Я, конечно же, считаю, что нужно :-) Иначе я бы не писала эту книгу. Совсем не факт, что вам захочется погружаться во всё это, поэтому для начала попробуйте разобраться с Ansible. Возможно, вам хватит надолго его возможностей. Начните с простых команд show, попробуйте подключиться сначала к тестовому оборудованию (виртуальным машинам), затем попробуйте выполнить команду show на реальной сети, на 2-3 устройствах, потом на большем количестве. Если вам этого будет достаточно, можно остановиться на этом. Следующим шагом я бы попробовала использование Ansible для генерации шаблонов конфигурации.
Зачем сетевому инженеру программирование?
На мой взгляд, для сетевого инженера умение программировать очень важно, и не потому, что сейчас все об этом говорят, или пугают SDN, потерей работы или чем-то подобным, а потому, что сетевой инженер постоянно сталкивается с:
рутинными задачами;
проблемами и решениями, которые надо протестировать;
большим объёмом однотипных и повторяющихся задач;
большим количеством оборудования;
На текущий момент большое количество оборудования по-прежнему предлагает нам только интерфейс командной строки и неструктурированный вывод команд. Управляющий софт часто ограничен вендором, дорого стоит и имеет урезанные возможности – в итоге мы вручную снова и снова делаем одно и то же. Даже такие банальные вещи, как отправить одну и ту же команду show на 20 устройств, не всегда просто сделать. Допустим, ваш SSH-клиент поддерживает эту возможность. А если вам теперь надо проанализировать вывод? Мы ограничены теми средствами, которые нам дали, а знание программирования, даже самое базовое, позволяет нам расширить наши средства и даже создавать новые. Я не считаю, что всем надо торопиться учиться программировать, но для инженера это очень важный навык. Именно для инженера, а не для всех на свете.
Сейчас явно наблюдается тенденция, которую можно описать фразой “все учимся программировать”, и это, в целом, хорошо. Но программирование это не что-то элементарное, это сложно, в это нужно вкладывать много времени, особенно если вы никогда не имели отношения к техническому миру. Может сложиться впечатление, что достаточно пройти “вот эти вот курсы” и через 3 месяца вы крутой программист с высокой зарплатой. Нет, этот книга не об этом :-) Мы не говорим в ней о программировании как профессии и не ставим такую цель, мы говорим о программировании как инструменте, таком как, например, знание CLI Linux. Дело не в том, что инженеры какие-то особенные, просто, как правило:
они уже имеют техническое образование;
многие работают, так или иначе, с командной строкой;
они сталкивались, как минимум, с одним языком программирования;
у них “инженерный склад ума”.
Это не значит, что всем остальным “не дано”. Просто инженерам это будет проще.
Книга будет когда-то платной?
Нет, эта книга всегда будет бесплатной. Я читаю платно онлайн курс “Python для сетевых инженеров”, но это не будет влиять на эту книгу - она всегда будет бесплатной.