sis

Схемы взаимодействия подсистем Linux и профилирования ПО и просто полезное

Tags:
sis

Резолвинг DNS внутри сплит-туннеля в OS X (Mojave, Catalina)

Попалась на глаза проблема в сабже. В гуях вкладка "DNS" в свойствах VPN-подключение игнорируется, описание домена, который нужно резолвить, и его DNS-сервера в /etc/resolvers/ тоже игнорируется. Проверено на High Sierra, Mojave, Catalina.

По Интернету гуляет инструкция вроде этой, но как выяснилось — неверная. Решение нашёл уважаемый коллега Антон Марков из одного околоадминского чата. Так что передаю слово ему.

Итак, решение:

- создаём директорию /etc/resolver (не /etc/resolvers, как пишет индус!)
- создаём там файлы с именами доменов, которые нужно ресолвить, к примеру, contoso.com
- в файлы пишем как минимум строки вида
nameserver 10.0.0.253
nameserver 10.0.0.252

Индус утверждает, что имена файлов не имеют значения, а внутри принимаются также параметры вида:
domain contoso.com
search_order 1
timeout 5

Я не проверял эти параметры, но как минимум в принятии параметра domain я что-то уже сомневаюсь.

Работа описанного метода проверена на Mojave и Catalina. В недрах инета я встречалось упоминание, что это игнорируется как минимум Mountain Lion.

This is crosspost from https://techquisitor.dreamwidth.org/325432.html
Tags: , ,
sis

Вытаскиваем докерфайл из образа

В своё время неприятно удивился, когда обнаружил, что на Docker Hub перестали выкладывать докерфайлы от образов. Порой было полезно, чтобы понять почему образ докера так или иначе ведёт или собрать свой с небольшими модификациями не занимаясь всем с нуля.

Решается просто вот этой копипастой:

docker history --no-trunc <IMAGE_ID> | tac | tr -s ' ' | cut -d " " -f 5- | sed 's,^/bin/sh -c #(nop) ,,g' | sed 's,^/bin/sh -c,RUN,g' | sed 's, && ,\n & ,g' | sed 's,\s*[0-9]*[\.]*[0-9]*[kMG]*B\s*$,,g' | head -n -1

Не секретно, просто чтобы легче найти было.

This is crosspost from https://techquisitor.dreamwidth.org/325340.html
Tags: ,
umnokot

Не онлайном единым я жив!

Долго не решался написать что-то, но думаю теперь самое время. Тем более, что обещал.

Суть простая. Помимо занятий онлайновых, про которые здесь уже писал, стал посещать себе оффлайновые занятия по математике от проекта popmath.ru. Про них узнал, кажется, из Телеграма года три-три с половиной назад и как-то отложил в закладочки. Чтобы потом заняться, как придёт время. И оно пришло. Несколько месяцев назад таки переборол себя и записался. Аккурат одновременно с курсеровским курсом по Python.

Зачем? Скажу честно – взаимоотношения с данной дисциплиной у меня не просто плохие, а кошмарные. В школе математика мне давалась отвратительно с самых первых классов. Хуже того, все окружающие меня люди делали абсолютно всё, чтобы я её возненавидел звериной, лютой ненавистью на очень долгие годы. Одна из таких вещей – меня ей наказывали, например. За провинности в учёбе, дисциплинарные нарушения и так далее. То есть вы понимаете, что когда все остальные после уроков гуляли там или шли в кино, я сидел и корпел над примерами. Итог такого подхода был печален. Я сбегал с занятий, игнорировал домашки (до кучи, врал родителям), а если всё же попадал на урок, то на плевал в потолок до десятого класса примерно. А на летних каникулах я без конца занимался решением бессмысленных для себя задачек, которые воспринимал исключительно как извращённое унижение. Естественно, забывал про них незамедлительно как урок заканчивался.
В общем, понимания предмета все эти меры мне не добавляли, зато ненависти к – через край. Её было столько, что при одном взгляде на формулы или уравнения и вообще хоть что-то связанное с математикой, у меня просто отключался мозг. К старшим классам школы я реально был в буквальном смысле чистый лист в плане математических знаний. Пока в десятом классе со мной не стала заниматься знакомая наших родителей, преподававшая для классов с усиленной математической подготовкой. За пару лет она вытянула меня на неплохой уровень (для гуманитарного класса), хотя и всё равно тяжко было. Но если б не занятия с ней – так бы и сам себя считал непригодным к оному предмету всю оставшуюся жизнь. Она и же и показала мне, что это не я тупой, а объясняли очень плохо мне, порождая вместо понимания злость.
Теперь всё иначе. В проекте popmath двое преподавателей. Один читает лекции, а второй ведёт семинары. Оба хорошо и понятно объясняют, наглядно визуализируют логику и механику вещей, которые обычно так плохо рассказывают в школе. После них понимаешь, что на самом деле, на школьных занятиях порой страшно переусложняют объяснение местами крайне простых вещей! Да, есть реально мудрёные доказательства, но это уже другой коленкор.

Сейчас, когда я упёрся в непонимание кучи вещей по работе, наконец-то дошло – мой тупик связан именно с отсутствием в моей голове многих математических концепций, матлогики и умения решать задачи в целом. Те, кто говорят, что айтишникам не нужна математика (мол, есть стандартные библиотеки где всё готовое или зачем админам оно, им же не надо ничего такого) – очень-очень заблуждаются!
Начнём с банального – то, как надо размышлять над задачей. Умение отсекать лишнее оно как раз примерно на уроках по математике и закладывается. Приёмы сокращения выражений – очень помогают в программировании. Логика примерно та же. Когда сдавал "Learn to Program: The Fundamentals" невероятно остро ощутил, насколько другое мышление требуется, чтобы решить задачу. У меня порой в буквальном смысле взрывался мозг! Просто те, кто нормально в школе и университете дружили с математикой и физикой немного не догоняют что люди могут думать сильно иначе. И реально не понимают, почему у других с этим возникают сложности. Вот же, всё просто. Да. Просто. Для вас. Потому как вас учили как надо думать. К слову, не так давно на Хабре статья была опубликована, которая как раз этому посвящена. Скомканная на мой взгляд, но лучше чем ничего.

Покамест пробежался по базовым вещам и общей механике процесса. Если говорить о программе, то затронута большая часть школьной программы и где-то до первых курсов непрофильного ВУЗа или же профильного колледжа. Последняя лекция, что у меня была – введение в начала матлогики.
С октября уже планирую заниматься усиленно. То есть, сначала вернусь назад, к самым основам и основательно прорешаю их, а уже потом вернусь снова к уже пройденному, но уже с другим уровнем понимания как, что и зачем. В итоге мне б хотелось куда-нибудь поступить и продолжить своё обучение на ином уровне.
Да, тяжёлый путь выбрал, да ещё и в 36 лет. Но и перспектива не улыбается быть выброшенным на обочину профессиональной карьеры. ИТ-инфраструктуры всё больше усложняются, увы. Требуется понимание много более сложных концептов и подходов. Времена, когда от админов требовалось в основном накатить то, да чуть настроить это – практически прошли и не вернутся. Точно так же, как сначала вымерли сисопы, превратившись в админов. И теперь постепенно вымирают админы, постепенно замещаясь DevOps/SRE.

Смогу ли? Получится ли? Не знаю. Даже страшно, если уж говорить по правде. Но взяться стоит. Иначе куда мне потом идти? Да и в целом мне очень надоело ощущение калеки на костылях. Последнее меня раздражает больше всего. Не знаю с чем сравнить. Примерно как нищий смотрит через окно на праздник жизни внутри богатого дома. Это злит и расстраивает. Но и хочется это, наконец, изменить. Хотя бы честно попытаться во всяком случае. А результат… Да хрен его знает. Посмотрим.

This is crosspost from https://techquisitor.dreamwidth.org/324956.html
angry cat

Я очень редко жалуюсь публично

…но в этот раз моё терпение лопнуло. Скопипащу сюда.

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

Почти полгода назад я решил попробовать заказать что-нибудь для своей PS3, у лавочки под названием Ретробот (я не знаю, как в ВК на них ссылаться, так что дам линком: https://vk.com/retrobot_games). Которые, типа, доставляют картриджи, диски и прочий стафф. Так вот. Очень вас прошу: НИКОГДА, НИ ЗА ЧТО, НИЧЕГО у них не берите!
Я специально заказал не очень дорогую игру, чтобы проверить как они справятся с заказом. Первый же момент, который меня моментально напряг — деньги надо переводить на карточку непонятно кому. То есть, платёжного шлюза у этого "магазина" нет.
Далее, по ходу пьесы они даже не собираются вам что-либо сообщать о статусе заказа.
Они будут вас кормить завтраками, будут молчать до тех пор, пока вы сами уже разве что не с матом и угрозами не начнёте им писать. Только тогда они, наконец, соизволят вам ответить.
Но главная их фишка: они будут вам врать "что по нашей информации такого-то числа вот точно приедет заказ". Наступает этот день и в ответ "ой, у нас задержка" или "ой, Почта России потеряла ваш заказ, мы заказываем заново". И так многократно.

В общем, это мелкие мошенники и разводилы. Распространите эту информацию, пожалуйста.
За полгода уже можно было расшибиться в лепёшку, но привезти заказ. Деньги не очень большие, просто спишу убытки. Скорее всего мне ничего не вернут. Ни заказа, ни денег. Но хочу, чтобы вы знали.»

Линк на оригинальный пост в группе «8bit old» во Вконтакте. Да, эта лавочка присутствует много где. В том числе на «Авито». Имейте в виду. Шарить обязательно.

This is crosspost from https://techquisitor.dreamwidth.org/324773.html
  • Current Mood: angry angry
iam

Sosnooley — это же иммерсив икспирэнс говорили они…

…но лаг, онли фан, ага.

Посмотрев, как умудрялось тормозить с диска интерактивное кинцо от Telltale на моей PlayStation 3, не выдержал и решил в честь первой законченной специализации на Курсере прихватить давно желаемый SSD. С выбором мучиться не стал, для плойки взял Samsung 860 EVO той же ёмкости, что и старый диск. То есть, 500Гб. А большего и не надо, в общем-то.

Плюсы видны невооружённым глазом. Перестал тормозить PS Store, игры устанавливаются заметно быстрее. Ну и сама консоль от состояния нажатия кнопки питания до полной загрузки XMB Menu теперь меньшее время тратит.

А раньше там стоял Seagate Momentus 5400.6. Тормоза не очень удивительны, в общем-то.

This is crosspost from https://techquisitor.dreamwidth.org/324555.html
sis

Architecting with Google Kubernetes Engine

Фу-у-ух! Пока Рунет бушует я, наконец-то, вылез из пары учебных штук. Пока расскажу про первую, она же "Architecting with Google Kubernetes Engine".

В этот раз изучал уже не просто курс, а влез в полноценную специализацию, состоящую из четырёх довольно приличного размера частей, посвящённых работе с Google Kubernetes Engine и общим основам работы с Google Cloud Platform (далее — GCP), а также интеграции GKE с платформой Google Cloud.

Начинается специализация с общего описания сервисов GCP. Чему посвящена вся первая неделя. В меру немногословно, по верхам я бы даже сказал, зато много практических лабораторных работ.
Кому интересно, здесь могут найти полный список CGPшных сервисов. Насколько вижу, большую часть затронул при изучении.
Заодно небольшой спойлер. Очень советую смотреть лекции довольно внимательно. Поскольку на протяжении всей специализации у вас в квизах будут попадаться вопросы по слайдам. И в заметных количествах.

Пожалуй, немного о самой GCP, раз уж начал. По первому впечатлению должен сказать... возможности этой штуковины реально впечатляют! Мне не так уж много есть с чем сравнить, но если говорить чисто за IaaS часть, то она там бесподобна по моему мнению. Ибо после Google Compute, Google Storage, IAM, VPC, Stackdriver, Containers и Storage ты понимаешь, как на самом деле должен был выглядеть тот же OpenStack, например. Который уже много лет пилит немало контор с весьма мизерным выхлопом и огромными финансовыми и инженерными вливаниями. Подозреваю, в создание GCP Google вбухала сравнимо с OpenStack, но результат в отличие от первых просто поразительный. Поспешу заметить, что сравнение с OpenStack не совсем корректное, поскольку сервисы эти у себя вы не развернёте. Я всего лишь рассматриваю именно в разрезе управления, удобства и возможностей платформ.
Впрочем, из on-premise решений для IaaS, которые вы можете развернуть у себя — это Nutanix, наверное. Да, за весьма немалые деньги, но зато с действительно хорошим саппортом и качественной работой. И OpenStack тоже даже рядом не валялся с ним ни по возможностям, ни по стабильности. Извините, что-то за больное задело, да.

kotiki.png
Действительно, ну как можно не любить платформу, где даже в лабах есть котики?

Так, о чём это я? А, да. Так или иначе, первая часть вводная и довольно несложная. Хотя про некоторые вещи пришлось всё же почитать отдельно, предварительно выписав. Самое интересное начинается дальше, со второй части специализации, под названием "Architecting with Google Kubernetes Engine: Foundations".

Отсюда и уже до самого конца идёт непосредственно знакомство и работа с GKE. Будет рассмотрено большое количество самых разнообразных вещей. От общих концептов, устройства и некоторых best practices, до применения данного инструмента применительно к практикам DevOps/SRE и релиз-инжинирингу. Последнее особенно порадовало. Учитывая, что я сейчас попутно читаю книгу Джина Кима «DevOps Handbook» (в русском переводе: «Руководство по DevOps»), где об этих вещах подробно излагается. При прохождении данной специализации отсылок к DevOps будет хватать. Например, в разделе про мониторинг.

В целом, на протяжении всей специализации практических лабораторных работ придётся сдавать много и они довольно длинные. Одна лаба рассчитана на час. В модуле может быть до трёх лабораторных работ. Суммарно по курсу может порой больше десятка. Прибавьте к этому большое количество промежуточных тестов и вы поймёте, что скучать вам точно не придётся.

И развернётесь вы там на полную, надо заметить. Тут вам и основы мониторинга кластеров и приложений в Stackdriver, балансировка нагрузки, объектные хранилища, менеджмент кластера (да, в одной из лабораторных работ вполне себе админскую задачу по обновлению кластера провести потребуется), масштабирования… Ой, чего там только нет! Сервисы придётся поднимать вполне рабочие и доступные для внешнего мира. От простых гостевых книг, до блогов на Wordpress с бэкэндом в виде базы данных. Шаловливыми ручками по БД полазить тоже разрешат. Даже краешком зацепите деплой кластера с помощью Terraform. Практики — вагон, одним словом.
Естественно, хотя бы начальное знание Bash, sed и Linux — обязательный пререквизит специализации. Поскольку из Google Cloud Console почти не будете вылезать, хотя визарды там очень годные и даже из браузера позволяющие задать большое количество настроек.

terraform.png
Пока все мои коллеги бухали на День Сисадмина, я познакомился с Terraform.

Но при всём этом, данный курс не избавит вас от чтения соответствующей дополнительной литературы, вроде "Kubernetes Up & Running" или общей теории по распределённым инфраструктурам. Но при этом, специализация эта хорошая точка отсчёта для понимания того, как должен выглядеть правильный результат и что должно работать. Само собой, данная специализация не заменит практику в реальном мире. GKE != кластеру Kubernetes развёрнутому на вашей площадке с вашими прикрученными туда модулями (расширяемость этой штуковины просто огромнейшая). Собственно, в более-менее ближайшее время я планирую купить себе небольшой NUC для подобных игрищ, чтобы можно было поставить его себе на стол и продолжить изучение предмета. Ну и как и у всякого инструмента, у него есть и свои недостатки. Так что без фанатизма.

Не обошлось и без некоторой ложки дёгтя. Во-первых, лабораторные работы изобилуют некоторым количеством мелких ошибок или там есть попросту совершенно бессмысленные этапы. Например, в одной из практических работ нужно будет поднять веб-сервер Apache, но там есть совершенно ненужные шаги по его перезапуску после того, как вы в каталог тестовый html положите. Зачем? Сервер и так обновит содержимое. Эти шаги можно было бы и пропустить, но без них вам не засчитают оценку.
Ещё один момент — как минимум два раза ответы в финальных квизах курсов были не совсем верные. Перепутали разные сервисы в GCP. Но хоть правильный ответ, который бы засчитал автогрейдер, нашёл разумеется. Само собой, дал фидбек по ошибке сразу после сдачи.

Помимо этого приготовьтесь к тому, что сгенерированные лабораторные работы могут глючить. В предпоследнюю неделю, судя по всему, там был какой-то достаточно масштабный сбой, который устраняли почти сутки и из-за него не работал механизм автогенерации лаб.
А ещё у меня была проблема, когда не засчитывались оценки за задание, несмотря на полное и аккуратное их выполнение. По итогам общения с техподдержкой это исправили, направив скриншоты stdout в Курсеру и оценку повысили.
И последнее. Не смертельное, но порой ощутимо раздражающее. Каждая лаба рассчитана на час, после чего созданное вами автоматически уничтожается. Но этого времени вам порой хватает очень впритык. Потому как создание кластера с большим количеством нод, workloads или обновление некоторых политик безопасности может занимать весьма долгое время. Из-за этого порой выполнять задания приходилось в режиме «быстро-быстро», что не давало мне возможности чуть побольше пощупать предлагаемое. Давайте хотя бы часа полтора! Впрочем, если опустить все эти проблемы, сами такие лаборатории — очень прикольная вещь.

Что в остатке? По итогам прохождения я очень доволен. Было действительно интересно и познакомился наконец с тем, до чего у меня давно не доходили руки. Ну и в целом стало понятно, чем так хорош Kubernetes при всей его сложности и какие задачи он реально решает.
Заодно стало намного понятнее о чём пишут в блогах того же Google Cloud на Medium. Теперь все эти термины и названия превратились для меня в нечто осмысленное и знакомое.
Помимо этого, пометил себе, что имеет смысл посмотреть уже в самое ближайшее время. И не забыть бы полистать дополнительные материалы, которые приложены к каждому курсу. Там немало достаточно. До кучи в этот раз мной получена первая серьёзная ачивка, которую не стыдно засунуть в свой профиль на LinkedIn.

Что дальше? Немного отдыха, закрытие дел и снова учёба. Не переключайте канал, оставайтесь с нами. :)

Ах, да. Пруфы в студию, как у нас водится:
gke.png

This is crosspost from https://techquisitor.dreamwidth.org/324248.html
  • Current Mood: nerdy nerdy
Tags:
sis

Зачем учить фундаменталку в ИТ

Крайне часто в разговорах с людьми и коллегами (как бывшими, так и нынешними) всплывает вопрос «Зачем учить всякую фундаментальную матчасть?». Мол, это муторно и вообще, кому кроме странных яйцеголовых в Computer Science это надо? Мол, все и так делают и типа много денег гораздо проще проще заработать. Очень часто ссылаются на людей, которые работают в Google/Yandex/Amazon, etc и типа нет у них никакого высшего в ИТ. Как человек, который с такими людми знаком в количестве намного больше одной штуки, могу сказать, что даже если у этих людей нет официального диплома, фундаментальные знания в области CS они чаще всего добирают иными путями. И у них вполне себе университетские познания по различным разделам математики, схемотехнике и так далее.

Каждый раз приходится доказывать, что нет. Требуется это всё изучать, иначе на реально сложных системах будете ловить проблемы. Вот вам хороший пример:

"The solution to this problem has been known since 1968 when Ken Thompson wrote a paper titled “Programming Techniques: Regular expression search algorithm”. The paper describes a mechanism for converting a regular expression into an NFA (non-deterministic finite automata) and then following the state transitions in the NFA using an algorithm that executes in time linear in the size of the string being matched against."

Думаете, очередная абстрактная работа в какой-нибудь лабке? Нет, именно в это влетели Cloudflare, когда случился масштабный сбой 2 июля. Да-да, теория конечных автоматов. Она самая. Кому интересно, можете почитать очень подробный и занимательный постмортем. Для не дружащих с английским есть перевод. Продакшен им сломала всего-то обычная регулярка, но очень хитрая при этом, которая требует понимания вот таких вещей.

Учите фундаменталку, а не очередной хипстерский фреймворк.

This is crosspost from https://techquisitor.dreamwidth.org/324032.html
  • Current Mood: geeky geeky
sis

Version Control with Git

Наверное, первый же вопрос который мне зададут глянув на сертификат: «Ты что, Git не знаешь?». Нет, знаю. Просто решил понемногу таки начать прокачивать профиль в LinkedIn и в качестве первой ачивки для публикации взялся как раз за то, с чем работаю постоянно и почти ежедневно. Ну и знание Git, как ни крути, на сегодняшний день уже базовое требование для любого сисадмина и тем более девопса. Особенно с широким внедрением концепции Infrastracture as Code. Так что смысл по моему мнению пройти данный курс был.

Если говорить о курсе, то я б его назвал скорее "Introduction to Git". Это хороший базовый курс для начинающих, где доходчиво и просто объяснят основные термины, основы слияния, создания веток, пулл-реквестов и ребейзов, а так же под конец расскажут о различных стратегиях работы с репозиториями, в том числе о Gitflow.

Почему я б назвал его именно вводным курсом? Там не охватываются такие темы как merge strategies (лишь упоминается вскользь), создание патчей, работа с диффами коммитов, хуки, reflogs и так далее. Но для большинства народу этого базового курса в самом деле за глаза, чтобы полноценно начать работать с git.

Особенно понравилось на этом курсе то, что он рассчитан на работу не только с CLI, но и графическим приложением Sourcetree от Atlassian. Так что можно выбирать, как вы хотите выполнять задания. Упражнения покрывают оба варианта. Я по привычке работал в эмуляторе терминала, хотя Sourcetree поставил и посмотрел тоже. И надо признать, в некоторых вещах он удобнее консольного варианта. Особенно когда в репозитории много веток. А финальное задание было именно таким.

Кстати, финальное задание. Оно мне понравилось. Так как было максимально приближено к реальной жизни и получившийся commit graph там достаточно внушительный. Публиковать скриншот оного не буду, иначе будет спойлером и читерством для выполняющих задание. :)

Впрочем, без курьёза у меня не обошлось. Когда делал финальное задание, у меня почему-то не выполнялся rebase с вызовом merge conflict. Причину нашёл, конечно. И она весьма простая. Думаю, кто работал – знает. Остальные пусть сделают открытие для себя.

В заключение хочется сказать, что несмотря на то, что курс рассчитан на 4 недели, в реальности его можно спокойно за недели полторы сделать если вы с git уже работали. Сам же не торопился. К тому же, после первой недели весьма жёстко заболел (и до сих пор долечиваюсь!), поэтому впереди графика идти не стал. Хотя первую неделю уже сделал дня за два приходя домой после работы чисто по фану.

Ничего особо нового для себя на данном курсе не открыл, хотя память освежил. И то неплохо! Для остальных, кто ещё умудрился с git не столкнуться – советую.

Ну и пруфы, как водится:


2019-06-29 19_36_15-Evgeniy Alexandrovich Budanov's Course Record of Version Control with Git from A.png


This is crosspost from https://techquisitor.dreamwidth.org/323585.html
Tags:
sis

MacBook Pro 15" (Early 2019)

Как-то так:
boyarin.jpg

Проапгрейдил рабочую машину с Late 2016 до Early 2019. Из отличий: Core i9, немного другой тачпад, динамики встроенные звучат заметно получше и клавиатура. Особенно последнее. После почти двух лет мучений. Ибо маки шестнадцатого года крыли даже фанбои Apple.
Ну и перекатился с HFS+ на APFS, раз такая пьянка. Вся миграция заняла ≈35 минут с помощью нужного софта, причём на «на ходу», не прерывая работы на старом ноутбуке. Просто напрямую цепляешь по Thunderbolt два лаптя (в этом месте я даже поностальгировал о нуль-модемных кабелях), грузишь новую железку в target disk mode и всё. Никаких танцев с бубном, никаких хитроумных ключей запуска и переактивации ОС. Лепота!

Совсем боярином стал.

This is crosspost from https://techquisitor.dreamwidth.org/323428.html
Tags: