Страшилки
Итак, пройдясь по заголовкам тем обозначенным в предыдущей статье про установку линукса мы пришли таки к вопросу — во что вляпались?
Первое это то, что всё работает, в основном, на всяких разных линуксах и облаках. Хотя, никто не запрещает извратится (и так бывает) и запустить необходимое ПО и под Windows.
Из того, что основа Linux мы возвращаем к истокам — работе в командной строке, по умному это называется в терминале или консоли. Обозначается это как CLI — интерфейс командной строки. Это совершенно не значит что вас обязывают абсолютно всё делать ручками через команды в терминале. Люди по своей сути ленивы и потому придумали максимум программ для облегчения (чтобы не помнить и не набирать куча команд руками) своей ежедневной работы, а попросту уменьшить рутину. Но вот от того, что автоматизация работает через команды и файлы конфигураций никуда не деться. Поэтому хочешь или нет, но базовый набор команд нужно будет выучить.
Как выглядит процесс разработки? Если коротко то, примерно так:
Менеджер получает/находит задачу -> программист её реализует ->менеджер передаёт её клиенту -> клиент возвращает менеджеру отзыв и пожелания к доработке -> идём к первому пункту
Само собой в ИНДИ среде всем этим занимается один человек, а в корпорациях на каждом этапе присутствуют целые отделы, да и самих этапов гораздо больше:
Но даже это ещё не всё. Хотя в целом, конечно, отображает картину работы DevOps-ом. Но мы можем посмотреть на подборку знаний о нужном ПО:
Не подумайте, это совершенно не всё! Как вам такой бутерброд?
Нашёл ещё вот такую страшилку (дорожная карта DevOps):
Как видим, если следовать канонам обучения, то DveOps-ом нам не стать в обозримом будущем. Т.е. если вы ноль и следуете указанной дорожной карте, т.е. обучаетесь как в универе или даже в средней школе — то всё это будет долго и нужно.
Второй вариант, это обучение по типу старшей группы в детском садике или начальной школе — изучать только то, что необходимо на данном этапе.
У обоих вариантов есть и плюсы и минусы. Как видим во втором варианте старт быстрей, но кругозор гораздо меньше. Как следствие задачи с новыми темами будут выполняться несколько медленней. Особенно, если вы не дружите с поисковыми системами и не умеете читать документацию по диагонали.
Хотя у меня и есть некоторые навыки изначально, я всё таки попробую идти по второму пути. Ведь просто для того, чтобы начать нам не нужно:
- знать 100500 команд администрирования серверов на Linux
- знать все нюансы администрировать сложных сетей
- знать программирование на столько, чтобы сходу написать экспертную систему
- и т.д. и т.п.
Разным тонкостям и нюансам мы можем научиться в процессе. По крайней мере я именно так изучаю языки программирования. Достаточно изучить базовый синтаксис, пройтись по оглавлению представленных команд, изучить описание основных возможностей и.. можно ваять простые программки. Как только возникнет необходимость/затык всегда можно спросить у поисковика как решить эту задачку, или перечитать документацию, или сходить на специализированный форум, да и просто поинтересоваться у коллег.
Лирика
Если немножко подумать и приглядеться диаграммам, то поймём свою первичную роль — управляющий транспортом. Ведь по факту (минимальный путь) мы должны реализовать доставку готовой программы от программиста до пользователя и обратную связь от пользователя к программисту. То есть в идеале должны автоматизировать перемещение объектов (код, программа, данные, логи и т.д.) между различными подразделениями компании. Итак первичная наша задача определиться (и выучить) программы заведующие перемещениями объектов.
На начальном этапе нас мало волнует как работает автомобиль, мы должны уметь им управлять! И только со временем мы наберёмся опыта, чтобы уметь чинить в нём небольшие дефекты (подкачать шины, помыть фары, долить масла и т.д.).
Мы не пишем и не тестируем программы, мы не анализируем логи и продажи, мы не обрабатываем заявки от пользователей. Наша задача обеспечить автоматическую и своевременную доставку объекта от одного отдела к другому.
Из всех умозаключений выходит, что основа у нас будет Ansible — именно он занимается доставкой конечного продукта и предварительными настройками. Далее идут Jenkins и Git. Это так называемый костяк. Естественно это не 100%. Но я буду считать это истиной, потому как я ещё учусь водить водить наш поезд, а не являюсь водитель болида Формулы 1. (Конечно мы ещё игнорируем программы хранения и управления конфигами других программ, а также и различные обслуживающие программы.)
Так что в следующем опусе мы установим Ansible и посмотрим, что он за собой потянет…