Терминал Администратора 10 лет спустя

Давным-давно, а точнее 10 лет назад я писал статью про свое рабочее окружение. С тех пор много воды утекло, я стал менеджером, стал меньше работать с терминалом, пересел с линукса на макось. Итак, представляю обновление своего инструментария. Из того, что не изменилось, по прежнему bash, да, даже под макось не захотел переходить на zsh. Терминал Пользуюсь wezterm, но посматриваю в сторону iterm2. Вот как выглядит мой wezterm config ~/.wezterm.lua с комментариями:

Настраиваем Wireguard VPN с Dynamic DNS на Raspberry Pi

vpn on a raspberry pi

Купил я значит себе домой Raspberri Pi 4B и думаю, что бы с ней такого сделать.

Первым делом настроил блокировщик рекламы по DNS для домашней сети, но это совсем просто, даже описывать не буду, просто оставлю ссылку на проект: https://github.com/0xERR0R/blocky, рекомендую, гораздо лучше, чем Pi-Hole в плане производительности.

Но этого мне показалось мало для девайса стоимостью $100. Да-да, со всеми комплектующими: корпусом, зарядкой, переходником micro HDMI -> HDMI, SD картой и радиаторами это не так дешево, как казалось мне изначально.

как настроить ssh-agent

Есть множество способов настроить ssh-agent в Linux. Приведу самый удобный для себя, который нашел относительно недавно. Для начала, напишу зачем нужен ssh-agent. Представим, что у вас есть несколько ssh ключей, каждый ключ защищен паролем (да, лучше запароливать ключи). Вы решаете соединиться с каким-то сервером и при каждом соединении ssh клиент просит ввести пароль. Неудобно, не так ли? А что, если вы хотите соединиться с несколькими серверами по цепочке или же скачать какой-то приватный git репозиторий на удаленном сервере?

как вернуть контроль над resolv.conf

Наверняка вы сталкивались с тем, что после открытия /etc/resolv.conf для редактирования вы обнаруживали там такую надпись # Generated by NetworkManager NetworkManager по-умолчанию управляет DNS резолвингом. Я лично предпочитаю иметь контроль над этой важной частью сетевого стека системы, так как провайдеры зачастую подменяют DNS, ставят тормозные резолверы и вообще делают всякие непотребства. Долой анархию! Вернем контроль над /etc/resolv.conf! Чтоб заставить NetworkManager перестать управлять резолвингом, создадим файл /etc/NetworkManager/conf.d/dns.conf со следующим содержанием:

как загрузить python проект на pypi

Иногда вы сделали какой-то публичный проект на python и хотите его максимально и удобно распространять. Самый простой способ для этого, как ни странно, pip install. Подробнее про pip можно почитать тут: https://pypi.org/project/pip/ Рекомендованый способ загрузить свой проект — это использовать twine. Далее я приведу сокращенный вариант с использованием github на основе моего проекта. Для начала зарегистрируйте аккаунт по ссылке: https://test.pypi.org/account/register/ Это тестовый стенд, он нам нужен для экспериментов и проверки, чтоб не мусорить в основном репозитарии python пакетов.

установка socks прокси сервера

Судя во всему, скоро заблокируют месседжер Telegram на территории РФ, и поэтому друзья попросили поднять им socks прокси. Telegram как раз недавно запилил поддержку socks протокола. Я решил, что подниму socks5 сервер с авторизацией. Выбор пал на dante как простой в настройке и с поддержкой авторизации. Первая проблема была с установкой актуальной версии dante на мой дистрибутив. На сервере на момент написания статьи стоял Debian 7 (wheezy) i386. Дело в том, что версия dante-server, доступная для него, сильно устарела и не поддерживала авторизацию.

вступление в Declarative Jenkins Pipelines

Если вы работаете с Jenkins и не слышали про Declarative Pipelines, то я как раз попытаюсь объяснить что к чему. Declarative Pipeline — это развитие старых Pipelines. Declarative Pipelines должны заменить старые Pipelines, они предоставляют более простой синтаксис и инструменты для более удобной работы, такие как автоматическая проверка синтаксиса при вводе, форматирование через API или CLI, интеграцию с Docker, визуальный редактор BlueOcean. Обычно, declarative pipelines представляют в виде Jenkinsfile в корне репозитория, но их можно создавать из любых файлов, а также напрямую, через Job DSL.

обзор AWS ECS на примере

Это вторая статья из цикла «инфраструктура Jenkins в ECS». В предыдущей статье акцент был уделен сбору логов из ECS контейнеров. Давайте поподробнее разберёмся, как устроен ECS и как его правильно готовить. Если кто-то уже знаком с kubernetes, то ECS немного похож на него. Атомарной единицей в ECS является task, это, по сути, один или группа контейнеров. Таск описывается с помощью task definition, там можно задать лимиты ресурсов (памяти, процессора), дисковые тома, переменные окружения, порты и многое другое, смотри документацию по ссылке выше.

логирование docker в ECS

Это первая статья из цикла «инфраструктура Jenkins в ECS». Для тех, кто не знаком с ECS, предлагаю начать с прочтения этого ресурса. В двух словах, ECS — это Docker as a Service от Amazon. Все дальнейшие действия будут происходить на Debian 8, но и для Ubuntu описанные инструкции тоже должны сработать. Docker используется версии 1.12.5. После того, как вы установили Docker, вы захотите читать логи своих контейнеров в удобном формате. Для этого нужно настроить опции логирования при запуске контейнеров, а также настроить rsyslog на запись логов в отдельное место, ну и еще сказать ECS агенту, чтоб он поддержал нужный драйвер логирования, иначе таски не запустятся в кластере.

простой способ получить SSL сертификат

Еще недавно, чтоб получить SSL сертификат нужно было заморачиваться с StartSSL или платить деньги регистраторам. Но LetsEncrypt уже вышел из беты и хорошо себя зарекомендовал. Я не захотел использовать официальный монструозный инструментарий, а вместо этого решил разобраться, как работает протокол и заодно написать свой велосипед, который едет веселее и не имеет фатальных недостатков. Скажу сразу, что скрипт работает только с nginx, так что, если просто хотите сгенерировать сертификат или у вас другой веб сервер, то можете изучить скрипт только на предмет его работы с ACME.