2021-10-01

Gitlab Runner на Raspberry Pi Zero W

Gitlab Runner - это программа, которая будет после каждого коммита в репозиторий производить определенные действия - запускать тесты, компилировать релиз, деплоить приложение и т.д. Gitlab Runner написан на Go, поэтому может запускаться на самом простом железе, например, на Raspberry Pi Zero W.

Бесплатный аккаунт Gitlab уже дает возможность запускать предустановленные раннеры беcплатно, но их использование ограниечено по времени и если вам нужно больше CI минут можно использовать свой собственный Gitlab Runner. В этом случае, вы получаете неограниченные возможности использования CI/CD.

В этой статье устновим Gitlab Runner на систему на Raspberry Pi Zero W, инсталлированную в предыдущем посте, настроим и зарегистрируем для использования с проектом на Gitlab.

Зарегистрируем gitlab репозиторий:


curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash

Устанавливаем сам runner:

sudo apt-get install gitlab-runner

Создаем тестовый проект на gitlab.com. Заходим в насторойки в секцию CI/CD и копируем токен:

Регистрируем runner для использования в проекте:

sudo gitlab-runner register --url https://gitlab.com/ --registration-token iztXysgDwDvH8z2AV4sZ

Самый простой тип раннера - shell - его и выберем на последнем шаге.

Убедимся, что раннер работает:

sudo gitlab-runner verify

GitLab Runner готов к использованию. Добавляем в проект файл .gitlab.yml со следующим содержимым:

build:
  script:
    - echo "Building"

Если все настроено правильно после коммита, наш pipeline будет исполнен и вы увидите следующее:

Таким нехитрым способом можно автоматизировать большинство рутинных операций переложив на компьютер операции по запуску тестов, деплою приложений и т.д. и т.п.

Конечно, вышеприведенный пример раннера пока не делает ничего полезного - только выводит слово "Building", но это легко исправить, добавив команды типа "npm test", "composer test".

Больше информации по установке и использованию руннеров можно узнать из официальной документации gitlab.

 

Оставить комментарий

 
  2021-10-02

Как установить Raspbian на Raspberry Pi Zero W

Время от времени бывает нужно по-быстрому залить Raspbian на Raspberry PI Zero W, так чтобы сразу можно было начать работать с системой.

Вот краткая инструкция как это сделать:

На локальном компьтере: (замените /dev/sdX, username, wlanname, wlanpassword, 192.168.0.155 на ваши)


# download image
wget https://downloads.raspberrypi.org/raspios_lite_armhf/images/raspios_lite_armhf-2021-05-28/2021-05-07-raspios-buster-armhf-lite.zip

# extract
unzup 2021-05-07-raspios-buster-armhf-lite.zip

# copy to device
sudo dd if=2021-05-07-raspios-buster-armhf-lite.img of=/dev/sdX bs=2M conv=fsync

# activate ssh
touch /media/username/boot/ssh

# update the wifi access credentials
cat > /media/username/rootfs/etc/wpa_supplicant/wpa_supplicant.conf << EOF
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE
network={
        ssid="wlanname"
        psk="wlanpassword"
        key_mgmt=WPA-PSK
}
EOF

# setup static IP address
cat >> /media/username/rootfs/etc/dhcpcd.conf << EOF
interface wlan0
static ip_address=192.168.0.155/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1 8.8.8.8
EOF

# prevent warning locale not found
cat >> /media/username/rootfs/etc/environment << EOF
LC_ALL=C
LANG=en
LANGUAGE=en
EOF

Вставляем карточку в устройство, и подаем питание.

Если все прошло успешно то в сети появится новое устройство.

Заходим на устройстов по ssh: pi@192.168.0.155, пароль по умолчанию: "raspberry".

    
# expand filesystem on SD card
sudo raspi-config --expand-rootfs

# reboot
sudo reboot now

# after reboot login again and
# upgrade the system
sudo apt-get update
sudo apt-get upgrade -y        
    

После вышеперечисленных шагов у вас будет рабочая система с Linux с которой можно работать.

Важно использовать правильный кардридер и правильную SD карту. Я потратил немало времени прежде чем обнаружил, что встроенный в ноутбук кардридер, почему то, хорошо читает карточки но совершенно не умеет записывать - то ли не хватает напряжения, то ли проблема в драйверах. После перехода на внешний кардридер, все встало на свои места. 

Другой проблемой было то, что все SD карты, купленные в России, мне пришлось выбросить - они работают крайне ненадежно. Вроде пишутся штатно, но система на них не хочет работать - либо вообще не грузится, либо происходит ошибка в процессе обновления системы, по какой-то загадочной причине, некоторые файлы записанные в процессе обновления впоследствие оказываются повреждены и обновление завершается с ошибкой. Карты SamDisk, купленные на немецом Amazon работают вполне стабильно.

 

Оставить комментарий

 
  2021-03-27

Мониторинг серверов c Grafana и Influxdb

Есть меня несколько серверов которые бы мне хотелось постоянно мониторить на предмет оперативной памяти, диского пространства и т.п. Хотя сами сервера расположены в разных местах все они объединены между собой по openvpn. Для того чтобы решить задачку мой выбор пал на связку influxdb+grafana.

Influxdb это так называемая timeseries база данных, в которой мы можем хранить данные которые изменяются во времени. Grafana - это универсальный UI который удобно использовать для визуального представления таких данных. InfuxDB и Grafana поднимаются на при помощи docker-compose. К при этом для того, чтобы послать данные состояния сервера используется баш скрипт который периодически запускается через cron и при помощи curl посылает данные на сервер

Таким образом я всегда могу видеть состояние того или иного сервера. Все системы будем подымать в докере для этого достаточно склонировать репозиторий с docker-compose который содержит в себе 3 образа - influxdb, grafana и chronograph.

git clone git@github.com:maxistar/docker-compose-influxdb-grafana.git
cd docker-compose-influxdb-grafana
git checkout influx1_8
docker-compose up -d

Influxdb версии 2.x требует авторизации и поэтому я использовал версию 1.8. Исправленный docker-compose.yaml живет в ветке influx1_8 где я использую именно эту версию, возможно в будущем разберусь как использовать и последнюю версию.

После того как InfluxDB и Grafana запущены, на сервере, который будем мониторить, создаем bash скрипт (script.sh).

#!/bin/bash

dbName="db0"

stat=`free | awk -v RS="" '{print "memory,host=acentauri used=" $9 "\nmemory,host=acentauri total=" $8 "\nmemory,host=acentauri swap=" $15 "\nmemory,host=acentauri swapused=" $16}'`

curl -s -i -XPOST "http://10.8.0.100:8086/write?db=db0" \
	--data-binary "$stat" 
 

делаем файл исполнимым и добавляем команду для запуска скрипта в cron:

chmod +x script.sh
contab -e

в открывшимся файле добавляем следующую строчку:

* * * * * /home/maxim/infrastructure/utils/memusage/script.sh

После того как данные начали посылаться на сервере настраиваем dashboard и наслаждаемся.

После того как начал мониторить состояние asterisk сервера он волшебным образом перестал зависать! Возможно его зависания были связаны с тем что зависает wifi модуль и я его перестаю видеть по сети.

 

Оставить комментарий

 
  2021-02-13

OpenVPN

Много лет использую OpenVPN. Прекрасная штука. Пока я жил в России при помощи нее можно было обходить блокировки Роскомпозора, она также позволяла мне подключаться к умному зеркалу в машине и видеть, что творится вокруг, сейчас же я использую OpenVPN чтобы подключаться к домашнему серверу в России на котором хранится фотоархив и крутится Gitlab с личными проектами.

Но вот вчера, привычно зайдя на сервер я не смог к нему присоединиться. Сначала подумал, что проблема с домашним сервером, однако потом обнаружил что я также не могу подсоединиться  к VPN ни с одного из устройств.

Оказалось, что по-умолчанию opnvpn создает сертификаты действительные десять лет. Через десять лет сертификат нужно продлевать. Это несложно сделать если у вас все еще есть доступ к серверу, можно просто создать новый сертификат и залить его на все ваши клиенты. Если же доступа у вас нет то, воспользоваться старыми ключами уже на получится.

Порекомендовали попробовать откатить время на сервере на несколько дней назад, но это не помогло. Дело в том, что ca.crt также копируется на клиент а он тоже истек.

Единственным рабочим способом подключиться к серверу с истекшими сертификатами оказалось подключение когда и на сервере и на клиенте время было переведено назад, но такой способ мне не годится - у меня нет физического доступа к серверу.

Проверить когда истечет ваш сертификат openvpn  можно слeдующей командой:

openssl x509 -in ca.crt -dates -noout

Так что будет мне хороший урок - нужно следить на валидностью сертификатов и вовремя их обновлять!

 

Оставить комментарий

 
  2020-07-18

Запуск Linux под Android без регистрации и SMS

Давно интересуюсь темой запуска Линукс программ на мобильных устройствах. Все дело в том, что мобильные прогаммы по функционалу сильно проигрывают своим компьютерным аналогам, в то же время современные мобильники имеют железо, которое, по вычислительной мощности лишь незначительно уступает железу персональных компьютеров, а иногда, даже, в чем то у него выигрывает. Почему же я не могу запустить дескопное приложение на мобильном устройстве?

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

Необходимое железо

Прежде всего понадобится подходящий телефон с Android. Не все устройства подойдут, так как различные телефоны работают с разными типами процессоров, данный метод сработает если у вас 64 битный ARM процессор. На 32 битных устройствах нужно использовать 32 битный образ Linux.

Желательно использовать физическую клавиатуру и мышь. Работать с програмной клавиатурой можно, но некоторые клавиши типа табуляции и стрелок отсутствуют на виртуальной клавиатуре, поэтому я предпочитаю физическую, благо большинство Bluetooth клавиатур прекрасно работают с Android.

Я использую раскладную клавиатуру с тачпадом - все же мобильное устройство должно оставаться мобильным и не занимать много места. Хотя на раскладной клавиатуре работать немного непривычно, возможно, у меня просто неправильная клавиатура.

Переключение языков по умолчанию происходит комбинацией Contol+Space как на Макинтош. Для этого в настройках Android нужно настроить дополнительные языки для физической клавиатуры.

Необходимые программы

Для полноценного запуска Линукс нам потребуются две программы:

  • Termux - эмулятор Linux под андроид.
  • XServer XSDL - реализация X Server для Андроид.
Установка Linux

В Termux выполняем следующие команды чтобы скачать образ Fedora:


pkg install wget

wget https://raw.githubusercontent.com/nmilosev/termux-fedora/master/termux-fedora.sh

sh ./termux-fedora.sh f32_arm64

startfedora

Если все скачалось успешно вы окажетесь в командрой строке Fedora и получите доступ ко всем программам экосистемы под платформу на процессорах ARM.

Обновим систему и поставим необходимые программы:


dnf update

#установим xfce:
dnf install @xfce 

#программы по вкусу, список можно расширить:
dnf instll mc gimp audacity

Следует отметить что приведенные выше команды скачивают порядка пятисот мегабайт данных и после установки займут раза в три больше места, поэтому перед их вызовом убедитесь, что обладаете достаточным объемом памяти на устройстве.

 

Запускаем XServer XSDL ждем когда появится синий экран с приглашением

	 
export DISPLAY=192.168.0.178:0 PULSE_SERVER=tcp:192.168.0.178:473 

startxfce4 &

Если все установилось нормально то в X Server вы увидите оконный менеджер и сможете запускать GUI программы.

Доступ к файлам устройства.

Файлы устройства видны по адресу /storage/emulated/0 - это не удобно так как родительские папки без доступа на чтение и из GUI программ туда не всегда получается пробраться - проблема решается созданием символической ссылки


ln -s /storage/emulated/0 /mnt/storage

Проблемы

Что пока не работает: звук пока мне не удалось заставить работать - хотя поддержка, вроде бы, заявлена.

Популярные браузеры не запустились. Ни Хромиум ни Firefox запускаться не захотели.

Поскольку пользователь в графическом окружении федоры пользователь оказывается под root, некоторые программы отказываются работать из под рута.

Так что, до полнеценной работы на мобильнике как на лаптопе еще далеко, но, прогресс определенно уже есть. Возможно, через некотрое время нам уже не нужно будет повсюду таскать лаптоп а можно будет обходиться одним мобильным телефоном.

 

Оставить комментарий

 
  2018-12-13

Создание точки доступа на Ubuntu

Оказывается, Ubuntu из коробки позволяет поднять точку доступа WiFi.

На новой квартире пока нет Интернета - подключение Интернета в Берлине это отдельная головная боль, заслуживающая отдельного описания.

3G в Берлине работает так себе, но рядом есть точка доступа Vodafon - меня она с моим логином - паролем не пускает, пока не понял почему, однако, позволяет купить доступ за денежку.

Однако, авторизация происходит только по MAC адресу телефона и пользоваться интернетом можно только с того устройства, с которого был оплачен доступ.

Меня такое положение вещей решительно не устраивает, я хочу, чтобы доступ был не только на телефоне а еще и на компьютере, и желательно не одном.

Разрешил задачку таким образом - подключил телефон к компьютеру USB кабелем, телефон подключил к Hotspot Vodafon, включил на телефоне режим USB модема, а на компьютере поднял точку доступа Wifi. Получается, что телефон работает на приём WiFi в режиме клиента, передает трафик на компьютер, а компьютер, в свою очередь раздает интернет по клиентам.

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

 

Оставить комментарий

 
  2015-07-17

Запись видео с экрана при помощи VLC

Столкнулся с досадной проблемой - recordmydesktop на моем компьютере отвратительно записывает видео происходящего на дисплее. А очень нужно было записать несколько роликов. На помощь пришел VLC - оказывается он умеет создавать прекрасные ролики с экрана при минимуме настроек.

Вот подробное описание как это делается.

Но ручной способ мне показался черезчур сложным и я автоматизировал процесс - вот как это работает - создаем два шелл скрипта - первый запускает процесс захвата экрана, второй останавливает запись и кладет получившееся видео в DropBox а ссылку на видео кладет в буфер обмена. Получилось очень удобно. Ссылки на cкрипты я поместил на кнопочки в панель инструментов юбунту - вот так:

 

Оставить комментарий

 
  2014-10-16

Устанавливаем ffmpeg на Ubuntu 14.04

Оказывается, в Ubuntu 14.04 больше нет знаменитого "швейцарского ножа для конвертации видеоформатов" ffmpeg. Но хорошие люди собрали свой репозиторий.

Чтобы поставить ffmpeg делаем следующее:

sudo apt-add-repository ppa:jon-severinsson/ffmpeg 
sudo apt-get update
sudo apt-get install ffmpeg
 

P.S. Послушайте великолепный перевод песен Битлз от Юлия Буркина

PPS. Они из audiocity выкосили, непорядок:

sudo add-apt-repository ppa:audacity-team/daily

sudo apt-get update

sudo apt-get install audacity
 

Оставить комментарий

 
  2014-06-26

HP ProBook 450 G1 и Linux

Решил приобрести на смену моему старому верному Acer 4810T новый ноутбук. Выбор пал на HP ProBook 450 G1. Моделька занимательна тем, что она существует с Linux и с Windows 8. Причем, я приобрел модель с Windows 8 наивно полагая, что если есть версия с Linux то Linux на нее встанет без проблем.

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

Попытка поставить Ubuntu увенчалась почти успехом. Почти, потому что wifi карта отказалась работать под линукс напрочь. Полазив по форумам выяснилось, что в моделях с Linux компьютер комплектуется Wifi карточкой от Intel, в то время как моя модель оказалась с карточкой от Mediatek - дравер к ней под Linux если и существует в природе то собирается только для очень древних версий ядра. Это меня решительно не устроило и я решил проверить насколько легко будет поставить другую карточку.

Карточку оказалось поставить не просто а... очень просто. Для того чтобы получить доступ к WiFi адаптеру достаточно перевернуть копьютер, вынуть аккумулятор и снять нижнюю крышку. Для этого не нужно даже ничего откручивать.

Карта по формату подошла от моего старого компьютера MSI. Вот только разработчики положили в компьютер огромную свинью снабдив WiFi карту только одной антенной. Обычно, на карточку в ноутбуке заводится две антены. Но, похоже конкретно в моей модели одной антены оказалось достаточно и вторую решили не ставить из соображений экономии.

Стоит ли говорить, что карта от другого ноутбука работать с одной антенной не то чтобы отказалась, но прием держала только в метре от WiFi роутера. Мой же стол расположен несколько дальше, поэтому есть компьютер видел, но подсоединиться к ней не мог.

Тогда я решил купить wifi адаптер Intel 7260, тот что обычно ставят в ноутбуки с Linux.

Адапрер можно заказать на Ebay но его нужно ждать месяц. Также нужный адаптер нашелся у citilink. Сделав заказ, дождавшись когда его привезут из москвы я пошел забирать покупку. Оплатив товар, на выдаче, молодой человек долго, что-то выяснял, потом долго извинялся, сказав, что мол, из москвы прислали что-то не то, и выдать заказ он не может, так как присланная модель не соответствует заказанной. Деньги мне вернули.

После неудачной покупки в Ситилинк. Выяснил что похожая карточка есть в Юлмарт. Причем сразу в Саратове.

Сделав заказ я поспешил в Юлмарт. Ситуация повторилась в точности. Оплатив заказ, долго прождал его у выдачи после чего молодой человек извившись сказал, что карточку найти они не могут - мол, маленькая, куда-то задевалась...

Полазив по сайту Юлмарта нашел еще одну модель. Заказал. Эту модель нашли! Ура! Карточка вставлена в компьютер. Драйвера её увидели, распознали. Интернет в ноутбуке заработал.

Вроде бы всё хорошо, но не дает покоя наличие только одной антены. Прием сигнала хоть и стабильный, но в трех метрах от роутера показывает 75%. Не айс, лучшее враг хорошего. Решил поставить вторую антенну.

Чтобы не разбирать компьютер самому решил довериться профессионалам. Профессионалы в городе Саратове по ноутбукам HP - они же авторизованный сервисный центр -- фирма Атто.

Посетив фирменный центр, описав свои пожелания по установке второй WiFi антены - ребята сказали ОК - без проблем и взяли компьютер в работу.

Через пару дней компьютер вернули с двумя антенами. Особо на качество приема сигнала вторая антена не повлияла. По крайней мере улучшения я не заметил, впрочем ухудшения тоже.

Проблемы началсь когда я попробовал подключить наушники с микрофонам. Наушники отказались определяться напрочь, микрофон тоже. Релив что проблема с драйверам аудиокарты, потратил весь вечер и облазив пол-интернета обнаружил что ни у кого из пользователей данной модели похожей проблемы не встречается. Решил попробовать USB гарнитуру. Впрочем, когда я попробовал подключить USB микрофон от веобкамеры - он тоже не завелся. Флешка вставленная в USB разъем тоже отказалась работать! Но опытным путем выявнил что не работаею USB разъемы только рядом с миниджеками аудио выходов. Доверился профессионалам. Похоже дело оказалось в том что мастера из Атто что-то не так собрали когда вставляли антену - миниджеки и USB разъемы на правой стороне компа оказались неработчими. Слева USB работают нормально.

Принес компьютер в Атто опять, ребята взяли компьютер в ремонт снова. И вот сегодня приходит SMS - компьютер починен! 

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

В общем, компьютер я не забрал... И теперь уже не знаю починят ли его когда-нибудь... Какой то несчастливый компьютер получился...

Upd. Забрал ноутбук из сервиса. Микрофон, наушники и USB заработали, правда загадочным образом исчезли резиновые заглушки, которые стояли над болтами с обратной стороны компьютера, надеюсь, ничего более серьезного не исчезло. Всего четыре похода в сервис и у меня отлично работающий компьютер!

 

Оставить комментарий

 
  2014-05-13

Как запустить несколько экземпляров Redmine на одном сервере

Было тяжело, пули свистели над головой, но я все-таки сделал это. Чтобы не забыть вот ссылка которая мне помогла - https://bugs.launchpad.net/ubuntu/+source/redmine/+bug/624598

Дожили, how-to стал брать из how to reproduce the bug story...

 

Оставить комментарий