Пример программы обучения

Kirill Shirinkin
Kirill Shirinkin
Last updated 
Программирование


Это я считаю самым важным, потому что не бывает DevOps без навыков программирования. Во-первых, нельзя использовать, например, Puppet или Chef не умея программировать - я видел результат работы сис. админов с этими инструментами и это всегда ужас, похожий на огромный волосатый shell script. Во-вторых, DevOps это про коммуникацию - ты должен понимать разработчиков.

Я не люблю выдуманные примеры кода, поэтому советую тебе разбираться на реальных проектах. 

Первую задачу ты уже знаешь - реализовать вот это https://github.com/test-kitchen/kitchen-ec2/issues/286.

После этого вариантов миллион. Например, ты можешь расширить foreman monitoring поддержкой CloudWatch- https://github.com/theforeman/foreman_monitoring.

Но я бы советовал написать небольшое веб-приложение, что-нибудь для себя, чем ты бы сам пользовался (я так в своё время написал менеджер финансов). 

Само собой я советую Ruby/Rails - они простые, популярные и в веб-разработке и в DevOps сфере и востребованные. Как вариант - Python по тем же причинам. Как ещё один вариант - Go, всё таки тот же Docker написан на Go. Хороший DevOps должен уметь допилить любой инструмент, добавить нужную фичу и исправить баг. А для этого нужно уметь программировать.

Тут возможно имеет смысл записаться, например, к Витору Шепелеву на mkdev, чтобы он тебя прокачал по программированию - он фокусируется на обучении новичков в программировании и у него крутая программа, которую он подстроит под тебя. Но в любом случае сначала доделай test kitchen ec2 ephemeral key pair. Сделай это до конца лета максимум.

Сис. админство

Тут у тебя, мне кажется, есть некоторые пробелы - например, cgroups не помешает знать https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Resource_Management_Guide/index.html. Доки RedHat - золотой набор знаний, изучай: https://access.redhat.com/documentation/en/red-hat-enterprise-linux/?version=7/

AWS

Так как ты работаешь с AWS каждый день и так как AWS дико востребован в целом, то углуби и укрепи знания в нём. В идеале сдай какую-нибудь сертификацию, например https://aws.amazon.com/certification/certified-solutions-architect-associate/. Они не hands on, но пока будешь готовиться (через тот же Linux Academy) то как минимум узнаешь о том, что есть в AWS и как этим пользоваться (вещи типа CloudTrail, IAM, AWS Config и прочие сервисы - важно просто знать, какие сервисы есть и быть готовым их использовать, а то есть шанс что ты переизобретёшь эти  сервисы, как уже сделал с aws cli + cron). На сертификацию лучше записаться уже завтра и сдать до конца года максимум.

Общие инструменты

Два инструмента, которые сделают жизнь легче и которые приблизят тебя к infrastrucutre as code - Terraform и Packer. Оба максимально актуальны для AWS.

Puppet

Тут у тебя уже есть задача. Плюс сдай Puppet Certified Professional, она лёгкая, в резюме добавишь и теорию подучишь - на неё тоже запишись уже заранее.

Docker, Openshift

Docker - не теряйте головы в компании, подумайте какие проблемы он вам решит и обязательно все основные компоненты продумайте и настройте - private registry, сборка в CI, скан контейнеров, свои base images. Сначала разберитесь с контейнерами и докером (и кстати трогать докер без понимания cgroups, linux capabilities, selinux бесполезно, это к пункту про сис. админство), а потом уже к Openshift.

k8s и openshift это уже частный PaaS. Нельзя его просто установить и использовать - это смена всех процессов разработки и деплоя. Мне кажется неплохим способом попробовать будет выкатить openshift и на каждый pull requests ваших приложений создавать review apps (см. например https://about.gitlab.com/2016/11/22/introducing-review-apps/). Гоняйте тесты в k8s через jenkins и т.п. Ну и да, в идеале это должен быть openshift origin.

Итого

Больше подкидывать не буду. Этого должно хватить месяца на два. Напиши что думаешь и обязательно отпишись мне о прогрессе через 4 недели (если не отпишешься, то я сам достану :-) ).