Архив рубрики: HOWTO’s

Вопросы, касаюшиеся установки и настройки различных приложений.

Ansible: шифрование и копирование PEM-ключа

5 февраля 2019
 

 Задача — во время выполнения роли скопировать на удалённый хост PEM-ключ. Для этого используем ansible-vault. Идея состоит в том, что мы зашифруем содержимое ключа в переменную, а затем используем модуль copy — и создадим на удалённой системе новый файл. Создание сертификата Сначала создадим сам сертификат и приватный ключ с помощью openssl: [simterm] $ openssl req… Читать далее »

Telegram: канал и группа @rtfm, бот, API и кросспост из WordPress

30 января 2019
 

 Давно хотел и просили добавить канал в Телеграме, и сделать кросспост постов из блога туда. Всё не доходили руки сесть, и закончить — но теперь всё работает. Сам канал в телеге — тут>>> (плюс открытая группа  тут>>>), а в этом посте — описание настройки. Используется телеграм-бот, и плагин WP Telegram. Telegram Создание бота и получение API-токена Начинаем с… Читать далее »

C: отладка с gdb — примеры

30 января 2019
 

 gdb (GNU Project Debugger) используется при отладке/дебаге кода. Ниже приводятся примеры работы с кодом на С. Используем такой код: #include <stdio.h> #include <string.h> #include <stdlib.h> char * buf; int sum_to_n(int num) { int i,sum=0; for(i=1;i<=num;i++) sum+=i; return sum; } void printSum() { char line[10]; printf(«Enter a number: «); fgets(line, 10, stdin); if(line != NULL) strtok(line, «\n»);… Читать далее »

Jenkins: JNLP-slave из Docker-образа

21 января 2019
 

 Имеется у нас зоопарк билд-агентов (macOS, Ubuntu), работающих в офисе. Сам Jenkins при этом запущен в AWS, на ЕС2, и обращается к агентам через проброс SSH-портов на офисном роутере. Задача — перенастроить схему, что бы агенты сами обращались к Jenkins, и, таким образом, отказаться от пробоса портов. Сесурити и вот это вот всё. Простой пример… Читать далее »

Linux: ncdu и pydf — отображение информации о занятом/свободном месте на дисках

16 января 2019
 

 NCDU NCDU — утилита для отображения занятого и свободного места на дисках, аналог du и df. Аббревиатура NCDU расшифровывается как NCurse Disk Usage, и, очевидно, использует библиотеку ncurses для отображения данных. Установка на Arch — с помощью pacman: [simterm] $ sudo pacman -S ncdu [/simterm] Debian/Ubuntu: [simterm] $ sudo apt install ncdu [/simterm] Запускаем: После проверки… Читать далее »

Linux: проверка диска на bad blocks

14 января 2019
 

 Имеется у нас билд-агент для Jenkins, запущен на Ubuntu 16. Периодически при загрузке машина подвисает сразу после запуска GRUB. Один из вариантов поиска проблемы — проверить диск на предмет наличия битых секторов. Для этого можно использовать утилиты badblocks из набора e2fsprogs, и smartctl из набора smartmontools. badblocks Проверяем диски на этой машине: [simterm] root@username-ci:~# fdisk… Читать далее »

Linux: сделать скриншот на удалённой машине по SSH

9 января 2019
 

 Есть Jenkins билд-агент на Ubuntu, запущенный на машинке, которая стоит в офисе, мониторы от неё висят на стенке и отображают результаты билдов (см. Build Monitor Plugin). Задача — сделать скриншот экрана, не бегая в другой конец комнаты к клавиатуре. Устанавливаем imagemagick: [simterm] root@projectname-ci:~# apt install imagemagick [/simterm] Создаём скриншот, используя import: [simterm] root@projectname-ci:~# import -window root… Читать далее »

AWS RDS: PDOException: SQLSTATE[08004] [1040] Too many connections

26 декабря 2018
 

 В Sentry начали сыпаться ошибки вида: PDOException: SQLSTATE[08004] [1040] Too many connections in /data/projects/project/vendor/yiisoft/yii2/db/Connection.php:687 Stack trace: #0 /data/projects/project/vendor/yiisoft/yii2/db/Connection.php(687): PDO->__construct(‘mysql:host=stag…’, ‘user’, ‘pass’, NULL) Для всех инстансов RDS MariaDB максимальное кол-во подключений считается по формуле {DBInstanceClassMemory/12582880}. Т.е. в нашем случае это тип db.m4.xlarge с 16ГБ памяти, следовательно: [simterm] $ echo «(16*1024*1024*1024)/12582880» | bc 1365 [/simterm] Для указания значения лимита… Читать далее »

Linux: добавить swap-file

25 декабря 2018
 

 На AWS EC2 AMI-образ Debian 9 идёт без активного swap. При желании и необходимости — его можно легко добавить самому. Создаём файл: [simterm] root@bttrm-stage-app-1:/home/admin# fallocate -l 1G /data/swapfile [/simterm] Задаём права доступа: [simterm] root@bttrm-stage-app-1:/home/admin# chmod 600 /data/swapfile [/simterm] Выполняем mkswap: [simterm] root@bttrm-stage-app-1:/home/admin# mkswap /data/swapfile Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)… Читать далее »

Appium: Android Virtual Device, Original error: Condition unmet after 60159 ms и костыль

6 декабря 2018
 

 Проблема: UI-тесты, запускаемые с помощью Appium, падают. Задача: найти причину, и пофиксить. Что бы воспроизвести проблему —  установили Android Studio на рабочую машинку и создали устройство. Теперь — можно настроить «тестовый тест», а потом попробовать запустить наши реальные тесты. Забегая наперёд — проблема была найдена, но решения не нашёл, потому пришлось костылить в Jenkins-джобе. Сама проблема на… Читать далее »