gitlab-runner lookup docker no such host

Жила-была репа в gitlab. Был в ней CI, был в ней и CD. Пользовалась репа шаренными раннерами от gitlab и успешно тратила кучу минут на сборку. Все было хорошо, пока число этих минут не стало расти угрожающими темпами. В общем, надо поднимать свой раннер и не один

Поначалу ничего этакого, все идет по инструкции

docker run --rm -it -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register

docker run -d --name gitlab-runner --restart always -v /srv/gitlab-runner/config:/etc/gitlab-runner      -v /var/run/docker.sock:/var/run/docker.sock      gitlab/gitlab-runner:latest

Все пошло хорошо, пока не возникла ошибка

error during connect: Post http://docker:2375/v1.40/auth: dial tcp: lookup docker on x.x.x.x:53: no such host

Первым, что выдают рецепты из интернета, так это запустить докер в привелигированном режиме. Другие советы типа “пробрось docker.sock” уже учтены в инструкции гитлаба. Но даже будучи включенными – не помогают. Все равно докер ломится по tcp, полностью игнорируя сокет.

Погуглив еще немного, обнаружил, что если стоит переменная DOCKER_HOST, то все остальное игнорируется. Ок, значит надо сказать unset DOCKER_HOST перед выполнением. И вуаля! Вот пример рабочего config.toml. Значимые изменения от дефолтного я выделил

concurrent = 2
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = "gitlab-runner-docker"
  url = "https://gitlab.com/"
  token = "TOKEN"
  executor = "docker"
  pre_build_script = "unset DOCKER_HOST"
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "docker:latest"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
    shm_size = 0

Как убрать лишние раскладки в Windows

Для установки Windows я использую International версию isoшки. С одной стороны привык, что все на английском, а с другой стороны если взять русскую, то потом замумукаешься русский выковыривать отовсюду. И с какой-то версии эта “интернациональная” версия по умолчанию ставит все от United Kingdom. В результате получается так

Лечится это двумя способами: либо в региональных настройках добавляем language pack от United Kingdom, в нем добавляем клавиатуры и потом их удаляем. Либо запуском regedt32 и открытием следующей ветки реестра

Computer\HKEY_CURRENT_USER\Keyboard Layout\Preload

Там видно такое

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

Windows 10 ssh key

Как-то задалбывает под WSL2 постоянно вводить пароль к ssh ключам. Рецепт для ubuntu простой:

sudo apt-get install keychain
cat >> .bash_profile
/usr/bin/keychain -q --nogui $HOME/.ssh/id_rsa
source $HOME/.keychain/$HOSTNAME-sh

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

Get-Service -Name ssh-agent | Set-Service -StartupType Automatic
Start-Service ssh-agent
ssh-add ~\.ssh\id_ed25519
ssh-add ~\.ssh\id_rsa

Windows 10 ssh key auth

Потребовалось тут сходить на windows 10 по ssh. Казалось бы, идешь в настройки, приложения, добавляешь “фичу” в виде OpenSSH server и вуаля! А в реальности оказалось фиг там.

Во-первых, почему-то по умолчанию ssh сервер не запущен и не запускается автоматически. Но это лечится запуском консоли powershell и скармливанием туда следующих команд

Start-Service sshd
Set-Service -Name sshd -StartupType 'Automatic'

После этого надо узнать свой логин для ssh. Это чуть проще – просто открываем окно терминала и смотрим.

C:\Users\multi>

Почему-то логин у меня multi, хотя везде я multik. Куда делась последняя буква – я не знаю.

Следующим шагом я довольно долго пытался сделать авторизацию по ключу. Фигу. Сервер упорно сопротивлялся. Оказалось, что микрософт зачем-то только для администраторов вынес ключи не туда, где им положено быть, а в C:\ProgramData\ssh\administrators_authorized_keys . Повторюсь, только для админов.

Вылечить это можно поправив sshd_config в каталоге выше и закомментировав две последние строки. Ну либо забить и в этот файлик любым способом сложить ключи. После этого надо вернуть эту файлу права (куда они делись – хз). Для этого надо скормить в консоль повершелла следующее

$acl = Get-Acl C:\ProgramData\ssh\administrators_authorized_keys     
$acl.SetAccessRuleProtection($true, $false)     
$administratorsRule = New-Object system.security.accesscontrol.filesystemaccessrule("Administrators","FullControl","Allow")     
$systemRule = New-Object system.security.accesscontrol.filesystemaccessrule("SYSTEM","FullControl","Allow")     
$acl.SetAccessRule($administratorsRule)     
$acl.SetAccessRule($systemRule)     
$acl | Set-Acl

Все. После этого у меня заработал вход на винду по ключам.

Копируем firewall из редхатов

Если взять и поставить любую Ubuntu, то по умолчанию в ней отсутствуют какие-либо правила фаирволла. Ну или мне так везет. Между тем, в centos и прочих fedora’х по умолчанию стоит правило “всех выпускаем, никого не впускаем, только ssh”

В принципе, все оказалось довольно просто. Надо вот эти вот строчки скормить из-под root’a.

ufw disable
echo y | ufw reset
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
echo y | ufw enable

Загоняем маки спать

Попал в стандартную ситуацию: закрываешь вечером ноутбук, а утром он отказывается включаться и требует зарядку. Маки нынче пошли не те … На самом деле в самоизоляции у меня куча терминалов, всяких ремотных десктопов и прочих штук, про которые мак знает и помогает им оставаться на связи.

Решение очень простое:

  1. Спрашиваем у мака, сколько раз и когда он просыпается: pmset -g log|grep due
  2. Увидев, что он просыпается практически каждую минуту, запрещаем ему поддерживать соединения: sudo pmset -b tcpkeepalive 0

Плюс: мак теперь переживает ночь, теряя 1-2% заряда батареи

Минус: теперь после открытия все соединения разорваны и надо с минуту, пока все вернется в привычное русло.

Возвращаем четкость маку

Начал на хабре читать перевод статьи про шрифты, антиалиасинг и прочие графические штучки. Ну вот как-то интересна мне эта магия превращения кучки пикселей в красоту на экране.

Если кратко, то в Apple победили менеджеры, которым надо “красиво”, а не “правильно”. В этом оплоте графики и накосячили! Хорошо, что вернуть назад все легко.

Settings-General-Снять галочку с Use font smoothing when available

и в Displays перещелкнуть радиокнопку Resolution на Scaled и выбрать пункт левее от Default. В общем, как на скриншотах выше.

Всё. Эффект офигительный: как будто у тебя снова тот самый первый мак с ретиновским дисплеем, где об засечку у букв можно порезаться!

CentOS 7 и MariaDB 10

Внезапно потребовалось обновить на старой центоси mariadb до свежих версий. Оказалось довольно просто:

Удаляем старое, добавляет новое, обновляем.

# cat > /etc/yum.repos.d/MariaDB10.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
# systemctl stop mariadb
# yum remove mariadb-server mariadb mariadb-libs
# yum clean all
# yum -y install MariaDB-server MariaDB-client
# systemctl enable mysql
# systemctl start mysql
# mysql_upgrade -p
......
cj64070_base.b_xml_tree                            OK
information_schema
performance_schema
Phase 7/7: Running 'FLUSH PRIVILEGES'
OK

И всё.

PS 10.4 почему-то встает криво, лень разбираться

Свой gitlab на centos 7

Получив очередной счет от gitlab и github одновременно, я как-то задумался: а нафига я им плачу, когда я все это могу поднять на своем сервере? “Все это” – это кучку приватных git и простую ci/cd систему. Поставил и решил написать напоминалку, что бы в следующий раз не гуглить.

Процесс установки не вильно отличается от описанного на сайте, но есть несколько НО:

Во-первых, в centos7 nginx идет без поддержки passenger. Поэтому обновляем на версию из “пассажирской” репы.

curl --fail -sSLo /etc/yum.repos.d/passenger.repo https://oss-binaries.phusionpassenger.com/yum/definitions/el-passenger.repo
yum-config-manager --enable cr
yum install -y passenger
rpm -e nginx-mod-http-perl --nodeps
yum update nginx

Во-вторых, нигде в мануале не указано, что gitlab требует nodejs для работы

yum install nodejs

И наконец, нигде не указано, что gitlab не работает без unicorn. Во всех мануалах написано, что если у вас внешний nginx, отрубите встроенный и unicorn. Так вот, этого делать нельзя, иначе получите неработающий gitlab-workhouse

Из других неочевидных тюнингов стал вынос порта unicorn с 8080 и изменение размера буферов у постгреса. Иначе на моем загруженном сервере он отказывался запускаться.

unicorn['port'] = 8088
postgresql['shared_buffers'] = "100MB"

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

Больше никаких отступлений от официального руководства.

gpg sign пароль не в консоли

Достаточно долгое время все мои коммиты во все репозитории подписываются моим PGP ключем. Но все время доставало то, что при коммите из всяких “гламурных” программ типа PyCharm gpg отказывался подписывать коммит, заставляя открывать консоль и вводить gpg commit там. Сегодня мне это надоело и я нашел вот такое вот простое решение:

brew install pinentry-mac
echo "pinentry-program /usr/local/bin/pinentry-mac" >> ~/.gnupg/gpg-agent.conf
killall gpg-agent

Если вы под линуксом, то замените brew на yum/apt/чтоеще

Что делать, если …

… что-то упало (как телеграм) или недоступно?

Во-первых, надо заранее подготовиться и заиметь сервера где-то там далеко.
Во-вторых, надо сказать секретную команду

ssh -D 8123 -f -C -q -N user@server

Она поднимет socks5 прокси на localhost:8123

И наконец, указать в вашем любимом браузере, телеграмчике и остальном sock5 прокси.

Проверить работоспособность прокси можно командой

httping -x localhost:8123 -5 -g http://google.com
PING google.com:80 (/):
connected to google.com:80 (325 bytes), seq=0 time=636.58 ms 
connected to google.com:80 (325 bytes), seq=1 time=506.72 ms 
connected to google.com:80 (325 bytes), seq=2 time=657.07 ms 

Дуэт шариками …

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

Screenshot_2016-01-31-11-17-55

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

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

Берите для iOS и Android, но не говорите потом, что я не предупреждал! 🙂

Свинья – лучший друг человека!

Все играли или пробовали играть в Angry Birds. Злобные птицы мешают милым зеленым поросятам спокойно жить в своих домиках. При этом нет ничего, что говорило бы про желание свиней питаться яйцами (кроме нагло смонтированных роликов). А ведь на самом деле свиньи умны, веселы и изобретательны!

Screenshot_2016-01-08-13-16-43

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

Если в птичках думать не надо (бери да швыряйся), то тут халява не проходит: надо “кумекать”, особенно на последних уровнях. Число собранных звездочек варьируется от времени работы двигателя, места посадки свиньи или варианта конструкции. Более того, собранное обожает разваливаться, рассыпаться, взрываться и улетать в самых разных направлениях.

Берем для iOS, Android и OS X

Надави побольше!

Больше таких игр не делают. Слишком не толерантно, слишком кроваво, слишком весело.

Screenshot_2016-01-07-11-26-30

Кармагеддон или “Кровь, кишки и машины”. Берем машину и давим всех, кто подвернется. Чем больше надавили, тем больше очков заработали. Выиграл тот, кто либо проехал быстрее, либо передавил всех пешеходов, либо поломал всех соперников.

Игра была запрещена во многих странах, но ФИДО и потом интернетики не дали завять такой штуке. Как ни странно, но игра официально 16+.

Взять для iOS, Android или Steam

PS Главное, не садитесь сразу после игры за руль!

Шарики черные, зеленые и белые …

… и все лезут не тогда, когда надо и не туда, куда надо. А потом из-за них всё ломается!

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

IMG_0012

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

Играть просто: черные шарики создают постоянные связи, а зеленые – временные, которые можно разрушить в любой момент. Красные шарики при выносе надуваются и тянут вверх, а белые умеют образовывать цепочки. Надо создать такую икебану, что бы достать одним из шариков до выхода, но не зацепить ничего лишнего. Уровень считается пройденным если шариков засосало достаточно. Просто, понятно и на последних уровнях неимоверно сложно.

Игра есть под все платформы, поэтому найти ее не составит труда. Поверьте, 250 рублей за такое не дорого.

World of Goo для iOS и Android и даже Steam

А потом мультик покажут!

Карманный размер, два батарейки, часы с будильником и игра в комплекте. Первая игровая консоль у многих детей моего времени. “Ну, погоди”, “Веселый Повар”, “Тайны Океана” … если эти названия для вас не просто набор слов, то у меня хорошие новости. Наконец-то появились нормальные ремейки этих игрушек.

nupogodi

Нормальные – это значит яйца падают так, как тогда и управление не заставляет мучаться. Да что я тут рассказываю, проще посмотреть …

В те годы ходила байка, что стоит набрать 1000 очков, как игра покажет мультик про волка и зайца. Я набирал. Мультика не было, игра просто начиналась сначала … Обидно было до жути.

iOS и Google

Да, версия для iOS платная, но она того стоит, ибо наиболее полная реализация игры из встречавшихся мне. Там даже волк “подмаргивает” во время звука, прямо как в оригинале. Сразу видно – люди играли.

PS. Есть куча версий для андроида, но эта вроде наиболее играбельная на мой вкус.

Дави зомбей!

Иногда напрягать мозги совершенно нет никого желания. А поиграть охота. Во что-нибудь в меру простое и не требующее напряжения извилин: в метро или электричке или просто под настроение. Пару-тройку раундов по несколько минут и хорошо. Одной такой игрой для меня стал Earn to Die 2

unnamed

Сюжет игры простой: вам надо добраться из точки А в точку Б. В вашем арсенале есть машина, управляемая педалью газа и двумя кнопками балансировки (потом добавится ускоритель). Попыткам добраться в нужную точку мешают зомби и беспорядочно сваленные препятствия. Давим зомбей, разрушаем препятствия и доезжаем.

Просто? На первый взгляд да, на второй тоже … да третий сильно не поменяет точку зрения. Одно из главных отличий этой игры от подобных – возможность каждый раз ехать по-другому: где-то можно газануть и проскочить поверху, а где-то наоборот, притормозить и проехать ниже. В некоторых картах своевременное включение ускорителя способно помочь преодолеть на одном дыхании половину уровня. За каждую попытку “доезда” вам дают немного денег, которые можно потратить на обновление или усиление машины.

IMG_0003

Обновления довольно условные, но тем не менее разделены на четкие категории: двигатель, трансмиссия, колеса, оружие, ускоритель, баланс, защита и бензобак. Чем больше денег вливаете в соответствующую категорию, тем лучше машина себя ведет. Скажем, если больше денег в колеса, то машина будет легче преодолевать препятствия, а если в “баланс” – то можно будет проехать всю трассу, просто зажав педаль газа. А проехав – получить новую машину, еще круче и новую трассу.

Несмотря на всю кажущуюся простоту, в игрушку можно залипнуть надолго, благо авторы организовали все так, что игру можно пройти без каких-либо вливаний денег от слова совсем. Но для наиболее нетерпеливых есть возможность добавить денег и практически сразу перескочить на пару-тройку уровней вперед. Если надумали потратиться, то я рекомендую воспользоваться “money doubler”, который удваивает число получаемых денег. Стоит недорого и не “сгорает”.

Приятной игры!

Boulder Dash 30th Anniversary

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

Если владелец зала был в хорошем настроении, то его можно было попросить сменить игру – почему-то в моё время это считалось особым шиком. А если время близилось к вечеру, то можно было попросить поставить игру и посложнее, ибо к тому времени вся малышня уже расставалась с добытыми у родителей деньгами и больше не претендовала на место в очереди к джойстику.

Одной из этих игр “посложнее” был Boulder Dash.

Screenshot 2015-12-06 14.54.44

Суть игры простая: управляя прогрызающим ходы муравьем (сусликом? кротом?) необходимо было за определенное время собрать все алмазы и добраться до выхода. Главное – не дать камням попасть по башке и не столкнуться с жуками. Плевое дело!

Быстренько скачал эмулятор ZX Spectrum и нашел “тапочек” с игрой.

Да, она самая! Правда, на Atari за счет более продвинутого видеоконтроллера скроллинг был плавнее, но уровни те же самые, как и проблемы при их прохождении. И как “тогда”, я заклинился на третьем уровне. Банально не хватало алмазов для открытия дверей. Помучавшись некоторое время, я нашел подсказку и застрял теперь уже на четвертом уровне .. или пятом? Не важно: я застрял. Раз за разом я пытался пройти уровень, не желая сдаваться: ведь сохранений нет, да и денег за прохождение никто не просит.

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

Ну … не сказать, что скопировали, но переписали под современные рамки – это точно.

Псевдо-3D, обучалки, миссии, “открывашки за деньги” – все это присутствует в полной мере. Даже за старые уровни требуют доплатить 100 с лишним рублей. Буржуи и капиталисты!

Зато музыка ну очень похожа на ту самую, и уровни из Classic Pack вообще один-в-один. Доказательство на видео выше. И даже застреваешь на тех же местах и совершаешь те же самые ошибки, что и тогда.

Из замеченных минусов:
– К управлению приходится привыкать, особенно таким старперам как мне (ребенок освоился сразу). Но привыкнув, играешь спокойно.
– Мне кажется, что в оригинале размер экрана был “больше”. Больше элементов помещалось на экране и не надо было так судорожно мотаться по карте.

И только наигравшись до одури замечаешь, что эту игру выпустили в честь 30-ти летия. Но я взрослый и состоявшийся мужчина и могу позволить себе поиграть в такие игры (и не обращать внимания на возраст). Осталось теперь джойстик найти …

Стоит ли играть: да. Даже если и не играли в оригинал
Где взять: в магазинах приложений. Есть и платная и бесплатная версия.

Обновление: Оказывается, есть версия для браузеров, переделанная из версии для ZX Spectrum