вступление в 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.

создание collectd python freeradius плагина

Все мы любим мониторинг, особенно, когда он предоставляет полную информацию о сервисах. Так получилось, что на работе мы используем Graphite, а метрики в него засылаем с помощью collectd. Иногда предоставленной функциональности collectd не хватает, и тогда на выручку приходят готовые плагины с гитхаба или самописные костыли. Сейчас я на примере простого плагина для сбора метрик freeradius расскажу как написать python плагин для collectd. Для начала, определим конфиг плагина, например, в конфиге мы укажем, какой тип статистики мы будем собирать (не забудьте настроить радиус отображать статус), порт freeradius и пароль для подключения.

тестирование python приложения в docker

В этой статье речь пойдет о том, как я тестирую свой python код внутри docker контейнера с Alpine Linux. Для тех, кто не знает, что такое docker, поясню, что это инструмент для управления контейнерами, который использует «слоёные» файловые системы и написан на Go. Для меня основное преимущество docker перед привычной виртуализацией, например Qemu/KVM, в его легковесности. За счет AuFS/OverlayFS базовый образ системы и контейнер занимают до нескольких сотен мегабайт, а новые контейнеры используют тот же образ, что и старые, что позволяет экономить еще больше места.

смотрим фильмы с компьютера на TV

Новогодние праздники, полторы недели выходных, новый телевизор с wifi, ethernet и выходом в интернет. Естественно, мне стало интересно, как подружить мой домашний сервер на линуксе (старый писюк) с телевизором, чтоб невозбранно смотреть фильмы в высоком качестве на большом экране. Если вам это тоже интересно, тогда читайте дальше.

как собрать deb пакет

Постараюсь как можно доступнее изложить процесс создания deb пакетов на примере ruby-zookeper. Предупреждаю сразу, что описанный мной метод пакетирования ruby gems неправильный, лучше использовать gem2deb для этого, но т.к. из исходников с помощью gem2deb собрать ruby-zookeper последней версии у меня не получилось, то вот самый простой метод сборки.

mercurial server hooks

Понадобилось сделать mercurial hook для проверки json файлов на валидность. К сожалению, документация mercurial оставляет желать лучшего, поэтому напишу, как я реализовал эту задачу.

Так, у нас есть сервер с репозиторием, мы хотим сделать так, чтобы при изменении, добавлении невалидного json в репозиторий, push отваливался с ошибкой.

Для начала, напишем сам hook. Было решено написать его на python.

повседневное использование mercurial

Я являюсь сторонником системы контроля версий Git, но на работе приходится использовать Mercurial он же hg. При переключении с git на hg некоторые вещи кажутся неочевидными. Хочу изложить свои ежедневные незамысловатые действия при работе c mercurial. После того, как вы изменили файлы, я настоятельно рекомендую сделать перед коммитом hg pull -u Mercurial (далее hg) почему-то не умеет fast-forward, как git, и если кто-то менял какие-то файлы до вас, которые вы даже не трогали, то если вы закоммитите, а потом попробуете запушить изменения при устаревшей копии репозитория, то hg откажется пушить, ссылаясь на то, что вы создаете новый head.