Новости

25.11.2021

Книга «Python и DevOps: Ключ к автоматизации Linux»

Это практическое руководство научит вас использовать Python для повседневных задач администрирования Linux с помощью наиболее удобных утилит DevOps, включая Docker, Kubernetes и Terraform.

Умение взаимодействовать с Linux играет важнейшую роль для миллионов специалистов. Python сильно упрощает эту задачу. Прочитав книгу, вы научитесь разрабатывать программное обеспечение и использовать контейнеры, а также выполнять мониторинг, телеметрию, нагрузочное тестирование ПО и вводить его в эксплуатацию. Ищете эффективный способ достичь поставленных целей на Python? Это руководство — для вас.

В книге

  • Основы Python, включая краткое введение в сам язык.
  • Автоматизация обработки текста, использование командной строки и автоматизация работы с файловой системой.
  • Утилиты Linux, управление пакетами, системы сборки, мониторинг и телеметрия, а также автоматизация тестирования.
  • Облачные вычисления, инфраструктура как код, Kubernetes и бессерверная обработка данных.
  • Машинное обучение и инженерия данных с точки зрения DevOps.
  • Создание, развертывание и ввод в эксплуатацию проекта машинного обучения.

 

Автоматизация работы с файлами и файловой системой


Одни из самых замечательных возможностей Python — операции с текстом и файлами. В мире DevOps постоянно приходится выполнять синтаксический разбор, поиск и изменение текста в файлах, идет ли речь о поиске в журналах приложения или распространении файлов конфигурации. Файлы — это способ сохранения состояния данных, кода и конфигурации, именно с их помощью можно просматривать постфактум журналы и управлять настройками. В Python можно создавать, читать и менять файлы и текст с помощью кода, и эти возможности вы будете использовать все время. Автоматизация этих задач — один из аспектов современного DevOps, который отличает его от традиционного системного администрирования. Вместо того чтобы хранить набор инструкций и следовать им самостоятельно, можно просто написать код, что снизит вероятность пропустить какие-либо шаги или перепутать их очередность. Уверенность в выполнении одинаковой последовательности шагов при каждом запуске системы повышает понятность и надежность процесса.

Чтение и запись файлов


Чтобы открыть файловый объект для чтения и записи, можно воспользоваться функцией open. Она принимает на входе два аргумента: путь к файлу и режим (по умолчанию режим чтения). Режим позволяет указывать, помимо прочего, открывается ли файл для чтения или записи, содержит ли он текстовые или двоичные данные. Для чтения содержимого текстового файла подходит режим r. У файлового объекта есть метод read, возвращающий содержимое файла в виде строкового значения:

 

По завершении работы с файлом желательно его закрывать. Python закрывает файлы при выходе из области видимости, но до тех пор они занимают ресурсы и могут оказаться недоступными для других процессов.

Можно также читать файлы с помощью метода readlines: он читает файл и разбивает его содержимое по символам перевода строк. Он возвращает список строковых значений, каждое из которых содержит одну строку исходного текста:

Файлы удобно открывать с помощью операторов with. При этом не требуется закрывать их явно. Python сам закроет файл и освободит выделенные под него ресурсы в конце отформатированного с помощью отступов блока:

В различных операционных системах — разные экранированные символы для обозначения конца строки: в Unix-системах — \n, а в Windows — \r\n. Python преобразует их в \n при открытии файла как текстового. Если открывать как текст двоичный файл, например изображение .jpeg, подобное преобразование, вероятно, повредит данные. Однако для чтения двоичных файлов можно добавить b в модификатор режима:

Добавление этого модификатора позволяет открыть файл без какого-либо преобразования символов конца строки.

Для записи в файл необходимо использовать режим записи, представленный аргументом w. Утилита direnv позволяет автоматически настроить среду разработки. В файле .envrc можно описать переменные среды и среду выполнения приложения; direnv настраивает все это на его основе при входе в каталог с файлом. Например, в Python можно задать в подобном файле переменную среды STAGE равной PROD и TABLE_ID равным token-storage-1234, воспользовавшись функцией open с флагом write:

Учтите, что метод write команды pathlib перезаписывает уже существующие файлы.

Функция open создает файл, если он еще не существует, и перезаписывает в противном случае. Чтобы сохранить существующее содержимое файла и просто добавить данные в его конец, используйте флаг a. Он позволяет добавить новый текст в конец файла, сохранив исходное содержимое. Запись нетекстового содержимого, например содержимого файла .jpeg, вероятно, повредит его, если задействовать флаги w или a. Дело в том, что Python преобразует символы конца строки в ориентированные на конкретную платформу при записи текстовых данных. Для безопасной записи двоичных данных можно использовать флаг wb или ab.

В главе 3 команда pathlib обсуждается подробно. В числе ее возможностей — две удобные функции для чтения и записи файлов, все операции с файловым объектом команда pathlib производит «за кулисами». Вот так можно прочитать текст из файла:

Для чтения двоичных данных предназначен метод path.read_bytes.

Если нужно перезаписать старый файл или записать новый, существуют методы для записи как текста, так и двоичных данных:

Для неструктурированного текста обычно вполне достаточно функций read и write файлового объекта, но что делать, если речь идет о более сложных данных? Для хранения простых структурированных данных в современных сервисах широко применяется формат нотации объектов JavaScript (JavaScript Object Notation, JSON). В нем задействуются две структуры данных: ассоциативный массив пар «ключ/значение», подобный ассоциативным массивам языка Python, и список элементов, подобный спискам Python. В нем описаны типы данных для чисел, строк, булевых значений (для хранения значений «истина/ложь») и неопределенных (пустых) значений (null). Веб-сервис AWS Identity and Access Management (IAM) позволяет управлять доступом к ресурсам AWS. Для описания стратегий доступа в нем используют JSON-файлы наподобие следующего примера:

С полным содержанием статьи можно ознакомиться на сайте "Хабрахабр":

https://habr.com/ru/company/piter/blog/589227/


Комментарии: 0

Пока нет комментариев


Оставить комментарий






CAPTCHAОбновить изображение

Наберите текст, изображённый на картинке

Все поля обязательны к заполнению.

Перед публикацией комментарии проходят модерацию.