- Лекции Технотрека. Администрирование Linux
- Лекция 1. Основы
- Лекция 2. Пользовательское окружение Linux
- Лекция 3. Linux и сеть (основы)
- Лекция 4. Управление пользовательским окружением
- Лекция 5. Веб-сервисы
- Лекция 6. Хранение данных
- Лекция 7. Сервисы инфраструктуры
- Лекция 8. Резервное копирование
- Лекция 9. Резервное копирование (часть 2)
- Лекция 10. Инфраструктура электронной почты
- Лекция 11. Распределение ресурсов системы
- 51 задание для оттачивания навыков системного администрирования
- О сисадминах
- Специализации
- Начинаем
- Задание №1
- Задание №2
- Задание №3
- Задание №4
- Задание №5
- Задание №6
- Задание №7
- Задание №8
- Задание №9
- Задание №10
- Задание №11
- Задание №12
- Задание №13
- Задание №14
- Задание №15
- Задание №16
- Задание №17
- Задание №18
- Задание №19
- Задание №20
- Задание №21
- Задание №22
- Задание №23
- Задание №24
- Задание №25
- Задание №26
- Задание №27
- Задание №28
- Задание №29
- Задание №30
- Задание №31
- Задание №32
- Задание №33
- Задание №34
- Задание №35
- Задание №36
- Задание №37
- Задание №38
- Задание №39
- Задание №40
- Задание №41
- Задание №42
- Задание №43
- Задание №44
- Задание №45
- Задание №46
- Задание №47
- Задание №48
- Задание №49
- Задание №50
- Задание №51
Лекции Технотрека. Администрирование Linux
Представляем вашему вниманию очередную порцию лекций Технотрека. В рамках курса будут рассмотрены основы системного администрирования интернет-сервисов, обеспечения их отказоустойчивости, производительности и безопасности, а также особенности устройства ОС Linux, наиболее широко применяемой в подобных проектах. В качестве примера будут использоваться дистрибутивы семейства RHEL 7 (CentOS 7), веб-сервер nginx, СУБД MySQL, системы резервного копирования bacula, системы мониторинга Zabbix, системы виртуализации oVirt, балансировщика нагрузки на базе ipvs+keepalived. Курс ведёт Сергей Клочков, системный администратор в компании Variti.
Лекция 1. Основы
В начале лекции вы узнаете об истории появления и развития Linux. Затем проводится экскурс по экосистеме Linux, рассказывается о некоторых различиях между дистрибутивами. Далее обсуждается иерархия файловой системы, рассматривается основной рабочий инструмент в этой ОС — командная строка. Подробно рассказывается о Bash-скриптах, о двух основных сущностях в системе — пользователях и группах. Затем обсуждаются регулирование прав доступа к файлам и директориям, рассматриваются привилегии пользователей и в завершение лекции затрагивается тема удалённого доступа.
Лекция 2. Пользовательское окружение Linux
Сначала подробно рассказывается об этапах загрузки системы и ОС, обсуждается ядро Linux. Объясняется, что собой представляет «процесс», как он использует оперативную память. Вы узнаете, что такое дескрипторы и для чего они нужны, как процессор потребляет ресурсы. Затем рассматриваются системные вызовы, сигналы, лимиты процессов, переменные окружения. Обсуждается вопрос размножения процессов и подробно анализируется работа процесса. В завершение вы узнаете о подсистеме perf и логах.
Лекция 3. Linux и сеть (основы)
Вы узнаете, что такое сетевой стек и модель OSI. Вспомните, что такое Ethernet и как с ним работает Linux. Дальше будут освежены ваши знания об использовании IPv4, особенностях IPv4-пакетов и сетей. Затем рассматривается ICMP, мультикаст в IPv4. Далее переходим к IPv6, обсуждаются заголовки IPv6-пакетов, UDP, TCP-соединения. Затрагивается тема TCP congestion control. Потом рассказывается о NAT, протоколах уровня приложения, DNS, NTP, HTTP и URL. Разбираются коды HTTP-ответа (успешные ответы и ошибки).
Лекция 4. Управление пользовательским окружением
Вы узнаете о том, что такое менеджер пакетов RPM и как его использовать. Далее рассматривается классический init, системный менеджер systemd. Разбирается пример init-файла. Обсуждаются основные типы Unit’ов, рассказывается про системный логгер и ротацию логов. В заключение вы узнаете об основах конфигурации сетевых интерфейсов.
Лекция 5. Веб-сервисы
Сначала рассматривается типовая архитектура веб-сервиса. Рассказывается о том, что такое фронтенд, что такое сервер приложений. Разбирается вопрос хранения данных веб-приложениями. Подробно разбирается работа и использование протокола HTTP. Обсуждаются виды HTTP-запросов. Затрагивается тема создания шифрованных туннелей с помощью SSL. Затем рассматриваются примеры установки СУБД MySQL с созданием БД и пользователя. Разбирается работа с PHP-FPM, конфигурирование nginx, установка и настройка wiki-движка.
Лекция 6. Хранение данных
Перечисляются основные проблемы хранения данных, рассматриваются достоинства и недостатки разных устройств хранения, их интерфейсы. Затем вы узнаете, как определять состояние жёсткого диска, какова его производительность, что такое RAID, какие бывают RAID-массивы и как их создавать. Сравниваются разные типы RAID, а также программные и аппаратные массивы. Обсуждаются LVM-снепшоты, рассматриваются разные файловые системы. Затрагивается вопрос удалённого хранения данных и использование протокола ISCSI.
Лекция 7. Сервисы инфраструктуры
Рассматривается DNS-сервер bind, NTP-сервер. Обсуждается централизованная аутентификация на основе LDAP. Разбирается DHCP, задача установки ОС по сети с помощью kickstart, а в завершение рассматривается система управления конфигурацией Salt.
Лекция 8. Резервное копирование
Начало лекции посвящено продолжению рассказа о системе управления конфигурацией Salt. Рассказывается, как её установить, как осуществляется управление конфигурацией Linux, разбирается её пример. Вы узнаете, что такое «зёрна» и зачем они нужны. Далее переходим к теме резервного копирования: какие данные нужно копировать, каковы основные трудности, какие бывают виды резервных копий. Обсуждается задача резервного копирования ОС. Рассказывается об использовании системы резервного копирования bacula.
Лекция 9. Резервное копирование (часть 2)
В начале лекции рассказывается о резервном копировании БД. Обсуждаются различные стратегии резервного копирования — mysqldump, mylvmbackup. Вы узнаете, для чего нужен мониторинг и как его выполнять, какие есть средства мониторинга. Рассматриваются разные виды проверок. Обсуждаются шаблоны проверок. В заключение рассказывается об элементах данных, о выполнении веб-мониторинга.
Лекция 10. Инфраструктура электронной почты
Вы узнаете, что такое электронная почта, познакомитесь с основными понятиями. Затем рассматривается процесс доставки и выдачи почты. Обсуждается использование протоколов SMTP, POP3 и IMAP. Разбирается применение SMTP-сервера postfix, IMAP-сервера Dovecot. Рассказывается о том, как ходят письма по сети и что такое MX-записи. Наконец, обсуждается защита от спама, разбираются SPF-записи, DKIM и Spamassassin.
Лекция 11. Распределение ресурсов системы
Лекция посвящена продвинутым вопросам администрирования Linux. Сначала вы узнаете, как управлять параметрами ядра ОС. Затем рассматриваются модули ядра, как ими управлять. Обсуждается выделение ресурсов приложения. Далее рассказывается о планировщике задач, об алгоритмах шедулинга, о приоритетах процессов. Разбирается шедулер CFS, политики шедулинга. Вы узнаете, что такое NUMA и как с ней работать. Познакомитесь с планировщиками ввода/вывода. Далее рассказывается о контрольных группах, об управляемых ресурсах, об управлении контрольными группами и лимитами ввода/вывода.
Плейлист всех лекций находится по ссылке. Напомним, что актуальные лекции и мастер-классы о программировании от наших IT-специалистов в проектах Технопарк, Техносфера и Технотрек по-прежнему публикуются на канале Технострим.
Другие курсы Технотрека на Хабре:
Информацию обо всех наших образовательных проектах вы можете найти в недавней статье.
Источник
51 задание для оттачивания навыков системного администрирования
Разбираемся с тем, как стать системным администратором, и выполняя реальные задачи, получаем основные знания для работы и развития.
Статья-туториал, к которой нужно отнестись с полной серьёзностью и не приступать к её прочтению, пока вы не поймёте, стоит ли становиться системным администратором и сможете ли вы.
О сисадминах
Как правило, системный администратор отвечает за технические вещи в организациях. Например, системные администраторы отвечают за то, что интернет-соединение в офисе работает, и что почтовый сервер в порядке, контролирует работу сетей, постоянно поддерживая их аппаратное и программное обеспечение, устанавливая обновления и многое другое, всё зависит от специализации.
Специализации
1. Универсальный сисадмин
Такой человек занимается операционными системами (Linux, Windows Server, Sun Solaris, BSD и др.) и их службами.
2. Сисадмин с узкой специализацией
Сюда можно отнести и тех кто работает с базами данных, кластерами, сетями, и тех, кто работает с чем-то другим. Главное отличие от других сисадминов — работа над конкретными узкопрофильными задачами. Этим обычно занимаются бывшие универсалы, которые выросли и хотят заниматься чем-то конкретным. Кстати, зачастую, зарплаты выше, но могут возникнуть сложности, если у вас совсем уж узкая специализация.
3. Build/Release инженер/Configuration manager
Некогда сисадмины, которые перешли к работе с IDE и серверами. В их обязанности входит статический анализ, модульное тестирование, компиляция, тестирование, работа с репозиториями, настройка сервера. Это самые узкопрофильные специалисты, которые стоят много денег и всегда пользуются спросом.
В статье рассмотрена именно первая специализация, как первоначальная ступень начинающего сисадмина. Как известно, большинство важных компаний работают с системами Linux. На это есть свои причины, связанные ограничениями в скорости, нагрузке, прозрачности. Так что, всё, что написано ниже, про Linux.
Всего существует три вида Linux: Debian, RHEL, Slackware. Всё остальное произошло от них же. Есть мнение, что лучше всего начинать с Debian, мы так и сделаем. Ещё один важный момент: можете закрыть эту статью, пока не дотянете английский до минимального уровня, просто потому что вы будете никому не нужны.
Далее, в процессе чтения этой статьи вы будете получать задания, которые нужно последовательно выполнять. Ну и таким образом знакомиться с тем, как и что работает.
Начинаем
Оговорка: не пытайтесь нигде поставить русский, потом могут быть проблемы.
Задание №1
- Скачиваем или покупаем программу VMware Workstation
- Устанавливаем на Windows
- Пока идёт процесс, знакомимся с тем, что такое виртуальная и хост-машина
Задание №2
- Скачиваем дистрибутив Windows
- Создаём гостевую машину
- Запускаем виртуальную машину
- Устанавливаем на неё Windows
Задание №3
- Выключаем виртуальную машину
- Экспортируем её в .OVA образ
- На его основе создаём ещё одну виртуальную машину
- Запускаем обе
Задание №4
- Пингуем адрес 127.0.0.1
- Запускаем на двух виртуальных и хост-машине cmd
- Узнаём их адреса
- Настраиваем сетевые интерфейсы виртуальных машин и конфигуратора сетей VMware, чтобы хост-машина могла пинговать виртуальные машины, а каждая из них могла пинговать другую
- Проверяем, что всё работает
Задание №5
- Загружаем Debian
- Устанавливаем её на первой виртуальной машине
- На этапе разметки диска делаем автоматическую
- На этапе выбора сервисов выбираем только базовые утилиты и SSH-сервера, когда спросит, устанавливаем загрузчик Grub
Задание №6
- Когда появится чёрный экран, набираем логин root и пароль, указанный при установке (мы не увидим, как набираем символы)
- Переходим в директорию /var
- С помощью команды узнаём, в какой директории находимся
- Читаем мануал по команде ls (только основное положение и про флаги -l, -t, -r, -A)
- Отображаем список директорий и файлов
- Переходим в директорию /var/log (без упоминания “var” в команде
- Переходим в директорию /var (снова без упоминания “var”)
- Создаём директорию /tmp/lesson/
- Переходим туда, задав абсолютный путь
- Создаём здесь файл с названием hello.txt и ставим права на файл “0777”
- Пингуем внешний адрес 8.8.8.8
Если последнее действие не получается, значит где-то накосячили, ищем ошибку сами или гуглим.
Задание №7
- Загружаем, устанавливаем и запускаем программу Putty
- Смотрим адрес виртуальной машины
- В программе подключаемся по SSH на нужный IP и далее работаем с системой только через SSH
Задание №8
- Отображаем содержимое /etc/apt/sources.list, используя команду cat
- С её же помощью и символа “>” записываем в файл следующие данные:
## Debian Jessie base:
deb http://ftp.debian.org/debian/ jessie main contrib non-free
#deb-src http://ftp.debian.org/debian/ jessie main contrib non-free
## Debian Jessie security updates:
deb http://security.debian.org/ jessie/updates main contrib non-free
#deb-src http://security.debian.org/ jessie/updates main contrib non-free
# Debian Jessie updates:
deb http://ftp.debian.org/debian/ jessie-updates main contrib non-free
#deb-src http://ftp.debian.org/debian/ jessie-updates main contrib non-free
- Обновляем кэш менеджера пакетов apt-get
- С помощью этой команды устанавливаем пакет vim
Задание №9
- Читаем про vi или vim
- Открываем на редактирование /tmp/lesson/hello.txt с помощью vi
- Печатаем любой текст на 40-50 строк (нужно, чтобы в каждой строке были буквы “abc” в такой же последовательности)
- Сохраняем и выходим
- Отображаем содержимое с помощью cat, затем less
- Отображаем только последние 10 строк, затем первые 7 строк
- Считаем количество строк в файле
Задание №10
- Узнаём, что такое конвейер и “pipe”
- Отображаем содержимое /tmp/lesson/hello.txt и перенаправляем результат по конвейеру в подсчёт строк
- Отображаем содержимое /tmp/lesson/hello.txt и перенаправляем результат по конвейеру в grep
- Отправляем дальше по конвейеру в подсчёт строк
- Отображаем содержимое /tmp/lesson/hello.txt и вывод перенаправляем в grep
Задание №11
- Читаем мануал по shutdown
- С её помощью выключаем виртуальную машину
Задание №12
- Склонируем диск первой виртуальной машины на вторую
- Запускаем вторую
- Входим с логином root
- Меняем название, чтобы знать, что это вторая виртуальная машина
- С помощью shutdown перезагружаем сервер
Задание №13
- Запускаем первый сервер (второй уже запущен, должно быть)
- Смотрим через консоль IP (должны отличаться)
- Читаем про IPv4 и маску подсети
- Знакомимся с DHCP
- Вписываем IP в конфигурационный файл сети на обеих виртуальных машинах (IP+маска+шлюз)
- Перезагружаем обе машины
- Проверяем, что с хост-машины пингуются виртуальные
- Сохраняем настройки сессий в putty для обеих виртуальных машин
- Выключаем вторую виртуальную машину (второй сервер)
Фух, теперь про повседневные задачи сисадмина.
Задание №14
- Запускаем командную строку
- Создаём переменную и присваиваем любое значение
- Отображаем её
- Проверяем, что переменная сохраняет своё значение после рестарта с помощью echo $a
- Отображаем переменную $PATH
- Разбираемся с тем как она работает
- Делаем так, чтобы добавился ещё один путь — /tmp
Задание №15
- Разбираемся с BASH и sha-bang
- Пишем пустой скрипт с расширением .sh и запускаем его
- Делаем так, чтобы скрипт можно было запускать без указания пути
Задание №16
- Делаем так, чтобы скрипт инициализировал DATE и задавал значение времени, затем выводил на экран
- Делаем так, чтобы вместо вывода на экран создавался файл в директории подобный /tmp/2017-08-17.txt
- Делаем так, чтобы в файл записывалось время создания
Задание №17
- Используя CRON заставляем скрипт исполняться ежеминутно
- Через 10 минут проверяем, чтобы в директории было столько же файлов, сколько прошло минут
- Обнаруживаем ошибку
- Используя find делаем так, чтобы директория проверялась раз в 10 минут и удаляла файлы, созданные больше, чем 17 минут назад
Задание №18
- Создаём пустой файл и вписываем что-нибудь
- Копируем с сохранением всех прав в другой файл с любым названием и содержимым
- Сравниваем контрольные суммы
- Меняем содержимое любого из файлов и смотрим разницу в контрольных суммах
Задание №19
- Создаём пользователя и задаём ему пароль
- Разбираемся с /etc/passwd, /etc/shaddow, /etc/group
- Делаем так, чтобы, если нет файла /tmp/passwd.backup, /etc/passwd копировался в /tmp/passwd.backup, а если /tmp/passwd.backup есть, то сравнивался с /etc/passwd
- Если различаются, то пусть копируется, если нет, пусть завершает работу скрипта
Задание №20
- Используя apt-get устанавливаем Apache2 на виртуальную машину
- С браузера хост-машины по IP-адресу виртуальной машины видим приветствие
- Меняем порт на :8080
- Снова выполняем то, что делали два шага назад, но с указанием порта
- Меняем порт обратно и проверяем как работает заглушка
- В hosts хост-машины создаём три домена: a1.com, b2.com, c3.com и связываем с IP виртуальной машины с Apache
- Для каждого домена проверяем всё ли правильно, с помощью ping
- Заходим на все три домена, написав их вместо IP виртуальной машины
Задание №21
- Создаём директории /var/www/a1.com, /var/www/b2.com, /var/www/c3.com
- В каждой из них создаём пустой index.html
- В каждом что-нибудь пишем
- Делаем так, чтобы открывался личный сайт из директории, а не общая заглушка
Задание №22
- Меняем index.html на index.php и добавляем следующую запись:
- Видим ошибку
- Через apt-get активируем mod_php
- Создаём инструкцию для Apache, чтобы все php файлы обрабатывались этим модулем
- Настраиваем такие же модули с инструкциями для Perl и Python
- b2.com и c3.com переводим на index.pl и index.py
- Создаём приветствия
Задание №23
- Читаем про HTML Basic вот здесь
- Про PHP Basic здесь
Задание №24
- Устанавливаем mysql-server
- С помощью mysql подключаемся через командную строку к серверу
- Создаём базу данных mydatabase и пользователя myuser
- Читаем раздел SQL Basic здесь
- Устанавливаем Joomla на a1.com
- WordPress на b2.com
Задание №25
- Читаем про реверс-прокси
- Устанавливаем Nginx
- Делаем так, чтобы 8080 порт Apache получал запросы 80 порта Nginx
- Проверяем a1.com, Nginx access.log должен пополняться при обращении к сайту
- Делаем, чтобы Nginx всё, кроме jpg и png файлов передавал Apache
Задание №26
- Включаем второй сервер
- Собираем MySQL Cluster на двух серверах
- Создаём базу данных с простыми таблицами, заполненными рандомными данными для тестирования
- Вносим изменения на один из серверов и проверяем на другом
- Выключаем второй сервер
- Рушим файлы базы вручную (всё для проверки)
- Делаем так, чтобы база восстановилась и появилась в кластере (думайте, как)
Задание №27
- Выключаем оба сервера
- Добавляем каждому серверу по одному диску на 700 Мб
- Включаем обратно
- С помощью fdisk проверяем, как обозначены диски
- С помощью DRBD соединяем диски серверов, чтобы изменения отображались на обоих (оба должны быть смонтированы в /mnt/drbd-disk)
Задание №28
- Выключаем первый сервер
- Добавляем ещё диски по 200 Мб
- Включаем сервер
- С помощью fdisk отображаем структуру дисков, должно быть четыре диска, из которых два не размечены
- С помощью mraid соединяем в RAID диски, с которыми не работали
- Монтируем /dev/md0 в /mnt/raid-disk
Задание №29
- Выключаем второй сервер
- Добавляем диск на 2Гб
- Включаем, настраиваем LVM и монтируем в /mnt/lvm-disk1
- Уменьшаем размер диска LVM вдвое и создаём такой же
- Монтируем в /mnt/lvm-disk1 и /mnt/lvm-disk2
Задание №30
- Ликвидируем exim4-config (если был)
- Ставим postfix
- Настраиваем пересылку почты с сервера к себе в почтовый ящик с помощью swaks
Задание №31
- Настраиваем на первом сервере в Nagios мониторинг обоих серверов
- Подключаем уведомления на свою почту (на всякий случай)
- Имитируем поломку MySQL и ждём сообщения о неисправности на почту
Задание №32
- На втором сервере поднимаем SVN-репозиторий scripts
- Делаем его доступным на любом сервере через svnserve
- На первом сервере склонируем в директорию /opt/scripts/
- На хост-машине в D:\scripts
Задание №33
Так, сейчас работаем только в vi.
- На первом сервере пишем скрипт /opt/scripts/backup.sh, чтобы он: на наших сайтах запаковывал директории с файлами в tar и сжимал в gz, снимал MySQL-дамп базы сайта в формате .sql, складывал всё это в /var/backups/www/имя_сайта, проверял содержимое файлов и так со всеми, а в конце, нужно, чтобы он отправлял на почту отчёт
- Фиксируем скрипт в репозитории
Задание №34
- Обновляем SVN-репозиторий
- Копируем файл из репозитория второго сервера в D:\scripts
- Устанавливаем вот это
- Через GVim добавляем рандомную строку
- Коммитим скрипт в репозиторий
- В /opt/scripts обновляемся
- Хотим увидеть изменения в скрипте
Задание №35
- Переписываем бэкап скрипт так, чтобы не нужно было перечислять существующие сайты, он должен обнаруживать их в конфигурации Apache
- Коммитим
- Переписываем бэкап скрипт так, чтобы все сообщения он писал и в консоль, и в syslog
- Коммитим
- Вносим синтаксическую ошибку в скрипт
- Коммитим с ошибкой
- Откатываем до последней рабочей версии
Задание №36
- Переписываем бэкапный скрипт так, чтобы, он определял CMS сайта и собирал данные доступа к базе
- Коммитим
Задание №37
- Настраиваем rsyslog первого сервера, чтобы логи бэкапного скрипта писались в ar/log/backup.log
- Настраиваем сбор логов на первом сервере
- Активируем LogAnalyzer здесь же
Задание №38
- Переписываем бэкап скрипт так, чтобы по завершению запускалась синхронизация директорий /var/backups/www между серверами
- Коммитим
- Повторяем, используя lftp mirror
Задание №39
Задание №40
- Активируем puppet на втором сервере
- Отдаём ему под управление /etc/passwd
Задание №41
- Читаем про init
- Загружаемся в разные init-уровни
- Перезагружаем сервер с помощью init
- Выключаем сервер с помощью init
- Включаем обратно
Задание №42
- Пробуем восстановить пароль от root, загрузив ядро с параметром init=/bin/bash
Задание №43
- Читаем про различие аутентификации и авторизации
- Разбираемся с PAM здесь и здесь
- Разбираемся, зачем нужен файл /etc/nsswitch.conf
- Делаем авторизацию SSH в MySQL (files оставляем про запас)
Задание №44
- На bash пишем скрипт в /opt/scrpts/my_daemon.sh, чтобы он: отцеплялся от STDIN,STDOUT,STDERR, менял рабочую директорию на /, закрывал все дескрипторы, выводил количество минут до перезагрузки
Задание №45
- Создаём init-скрипт в /etc/init.d/my_daemon с LSB-тэгами
- Пробуем запустить и остановить скрипт /opt/scrpts/my_daemon.sh используя init-скрипт /etc/init.d/my_daemon
- Запускаем, останавливаем и смотрим статус скрипта, используя service
- Ставим daemon на автозагрузку
Задание №46
- Меняем скрипт с SysVinit на systemd
- Запускаем, останавливаем и смотрим статус скрипта, используя systemctl
Задание №47
- Проходим онлайн-курсы по сетям
- Знакомимся с OSI, TCP/IP, NAT и прочими штуками по теме
Задание №48
- Ставим на обычный ПК Cygwin (выбираем python, vim, git, openssh и все паке, которыми пользовались на Linux)
- Добавляем путь к бинарным файлам Cygwin в %PATH%
- Запускаем cmd, пробуем работать в нём на Windows
- Ставим что-нибудь более удобное
Задание №49
- Удаляем все виртуальные машины
- Удаляем на Windows VMware-продукты
- Ставим VirtualBox , Vagrant
- Создаём директорию C:\VM\server1 и переходим к ней
- Инициализируем Debian с помощью Vagrant, запускаем его
- Открываем VirtualBox и проверяем, что создалась новая виртуальная машина
- Останавливаем и удаляем виртуальную машину
- Регулируем имя, 3 CPU, RAM 1Gb, проброс порта 22
- Запускаем её и подсоединяемся по SSH через putty
Задание №50
- На Cygwin ставим Ansible
- Включаем Vagrantfile в самом конце провиженинг Ansible
- Дополняем Ansible: apt-get: git, curl, pyenv, python3.6 при помощи pyenv, делаем python3.6 дефолтным глобально
- Устанавливаем Logbook, paramiko, lxml
- Создаём с нуля виртуальную машину
Задание №51
Так, теперь переходим к очень важному моменту. Всегда очень круто, когда сисадмин дружит с Python. Так что если ещё не начали изучать, приступайте.
Источник