Показаны сообщения с ярлыком говнософт. Показать все сообщения
Показаны сообщения с ярлыком говнософт. Показать все сообщения

суббота, 30 марта 2024 г.

aws ec2: проблема входа по ключам

 Казалось бы, уже давно отработанный механизм с .ssh/authorized_keys в случае амазона ВДРУГ дал сбой. Вдруг - потому что ещё несколько лет назад этой ПРОБЛЕМЫ не было.

Смотрим /var/log/auth.log и видим там крайне сомнительные строки

AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys username SHA256:ecphulTPPp7xHnSCVkuQH2fcXemYKjT8xFftheRDz+s failed, status 22

Но секрет прост: кто-то "переиграл в безопасность" и

# apt show ec2-instance-connect

...

Description: Configures ssh daemon to accept EC2 Instance Connect ssh keys

 EC2 Instance Connect is a service that publishes ssh keys for use by EC2

 instances based on AWS Credentials. These keys are consumed by on-instance

 configuration provided by this package. The ssh daemon will query EC2

 Instance Metadata service for user-keys at ssh calltime, validate any if

 present as well as validating their signature, and if all checks pass return

 will include them in the authorized keys list.

Фикс версия 1:

apt remove ec2-instance-connect

systemctl restart sshd

Фикс версия 2:

rm /usr/lib/systemd/system/ssh.service.d/ec2-instance-connect.conf

systemctl daemon-reload

И ещё немного почитать

https://github.com/widdix/aws-ec2-ssh/issues/157


И причина: 

ExecStart=/usr/sbin/sshd -D -o "AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys %%u %%f" -o "AuthorizedKeysCommandUser ec2-instance-connect" $SSHD_OPTS

среда, 17 января 2024 г.

Configuration error - kwargs_from_env() got an unexpected keyword argument 'ssl_version'

 При деплое (у меня ansible + docker compose) можно поймать ошибку из заголовка, причина проста: пип версия 7.0.0 пакета docker - битая, но всем класть.

Фикс - явно пишем версию docker==6.1.3

https://github.com/geerlingguy/internet-pi/issues/567

https://github.com/docker/docker-py/issues/3194

пятница, 11 августа 2023 г.

где взять terraform

https://mcs.mail.ru/docs/manage/tools-for-using-services/terraform/quick-start

https://hashicorp-releases.mcs.mail.ru/terraform

https://cloud.yandex.ru/docs/tutorials/infrastructure-management/terraform-quickstart#install-terraform

https://hashicorp-releases.yandexcloud.net/terraform/1.4.6/

Так же, после установки можно сделать

terraform -install-autocomplete

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

vi ~/.terraformrc

provider_installation { network_mirror { url = "https://terraform-mirror.yandexcloud.net/" include = ["registry.terraform.io/*/*"] } direct { exclude = ["registry.terraform.io/*/*"] } }

понедельник, 24 июля 2023 г.

upgrade ubuntu non-lts

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

E: The repository 'http://nova.clouds.archive.ubuntu.com/ubuntu impish Release' no longer has a Release file.

 do-release-upgrade -d
Checking for a new Ubuntu release
Upgrades to the development release are only 
available from the latest supported release.
root@fitfest:/home/fitfest# do-release-upgrade
Checking for a new Ubuntu release
Your Ubuntu release is not supported anymore.
For upgrade information, please visit:
http://www.ubuntu.com/releaseendoflife

вторник, 18 июля 2023 г.

composer: убрать мусор из баннера

 При установке пакетов через композер есть баг:

Info from https://repo.packagist.org: #StandWithUrkaine

Как убрать этот мусор? И главное, этот мусор содержит задержку секунд в 10, что вообще свинство

https://stackoverflow.com/questions/76130997/composer-how-to-remove-standwithukraine-cli-message

composer config -g repos.packagist composer https://mirrors.tencent.com/composer/

убирает и мусор, и задержку.
Надо понимать, что простое "скрыть сообщение" не уберёт задержку, а основная проблема именно в ней, скриптам сообщение по барабану. Так что или левая репа, или пересборка (в ссылках выше и ниже есть как).

ЗЫ модераторы в гитхабе тоже "вообще не политизированы" и просто удалили ветку с решением этой проблемы, вот соседняя
хотя.. всё нужное есть и в этом треде. Непонятно.

четверг, 25 мая 2023 г.

gitlab cicd + telegram

Можно взять готовое, вроде интересное

https://hub.docker.com/r/upagge/gitlab-telegram-notify

Можно взять яндекс хостинг и поднять на serverless технологиях

https://cloud.yandex.ru/docs/tutorials/serverless/telegram-bot-serverless

Как получить chat_id и опционально thread_id, чтобы послать туда сообщение?

1) https://api.telegram.org/bot<YourBOTToken>/getUpdates

Не сработает, если уже где-то развернули бота с вебхуком, будет 

{"ok":false,"error_code":409,"description":"Conflict: can't use getUpdates method while webhook is active; use deleteWebhook to delete the webhook first"}


2) в нужном чате копируем ссылку на сообщение, будет типа https://t.me/c/1234567890/4/5 - большое число (добавить минус в начало) это ид чата, второе - тред, третье - номер сообщения и нам не важно. Если тредов нет то среднего числа не будет.

3) всякие боты типа https://t.me/getmyid_bot - но там нужна всякая магия, треды оно не умеет итд.


Делаем тестовую отправку

curl -X POST -H "Content-Type: application/json" -d "{\"chat_id\": \"<YourGroupID>\", \"text\": \"===ТЕСТ===\"}" https://api.telegram.org/bot<YourBOTToken>/sendMessage

Если нужно в тред (топик) то после значения чата в chat_id добавляем

\"message_thread_id\": \"<THREAD>\",

И тут прикол: офдока содержит кривое поле top_msg_id, а message_thread_id там вообще нет:

https://core.telegram.org/method/messages.sendMessage

Вот с таким Г нам приходится работать, что гугл точнее чем офдока. Печалька.

ЗЫ оба поля проверены, первое не работает, второе работает...

вторник, 8 февраля 2022 г.

Замена для elasticsearch

 Как мне стало известно, эластик для включения SSO хочет денег (доступно только на ОЧЕНЬ платных тарифах), плюс всё больше добавляет телеметрии. И как мне сказали, с версии 7.12 убран функционал плагинов так, что сломалось многое, включая сторонние реализации SSO. 

И тут вспомнился скандал что амазон делал свои патчи, что очень не нравилось эластику. Очень быстро нашлось

https://www.infoq.com/news/2021/04/amazon-opensearch/

https://venturebeat.com/2021/07/13/amazons-elasticsearch-fork-opensearch-hits-prime-time/

Бонусом оказывается эластик стал менять лицензии на закрытые. "Жадность фраера сгубила". И теперь есть настоящий, вменяемый форк, с правильной версии, с правильными лицензиями, без лишней телеметрии и прочего жадного мусора.

Впрочем, не ёлкой единой. И если у logstash существует тьма замен (filebeat, journalbeat, fluentbit/fluentd, итд), то с эластиком сложнее. Хотя "слабое звено" в данном случае не эластик а кибана и нужно искать замену ей.

Использование Clickhouse в качестве замены ELK, Big Query и TimescaleDB

Чем заменить ELK для просмотра логов?


https://aws.amazon.com/ru/blogs/opensource/introducing-opensearch/

суббота, 4 сентября 2021 г.

Сломанная ubuntu 20.04 (LTS)

https://serverfault.com/questions/1041031/nginx-sometimes-gets-killed-after-reloading-it-using-systemd

https://bugs.launchpad.net/ubuntu/+source/perl/+bug/1897561/

Короче, если ставим nginx-extras то ставится бажный перл

Быстрофикс: удаляем /etc/nginx/modules-enabled/50-mod-http-perl.conf

Проблема в том, что баге уже год, но "дебиан стабилен" (ubuntu - debian based), так что и в багах он тоже стабилен...

суббота, 19 июня 2021 г.

versions in docker-compose

В начале docker-compose.yml всегда пишется версия компоуза, что когда появилось - нужно читать тут (матрица версий, полная дока). При этом может быть так, что пишем версию 3.9 - а докер что у нас установлен такой версии не знает, нужно снижать. Но снизив версию и больше не получая ошибок про указанную версию, можно получать ошибки про использование новых атрибутов. Например, убунта 18.04, докер и docker.io, вписываем версию 3.5-3.7 (выше ругается), но при этом ошибка (ниже в ошибки впишу)


Про ошибки

ERROR: Version in "./Docker/docker-compose.yml" is unsupported. You might be seeing this error because you're using the wrong Compose file version. Either specify a supported version (e.g "2.2" or "3.3") and place your service definitions under the `services` key, or omit the `version` key and place your service definitions at the root of the file to use version 1.

Снижаем версию или ищем как обновить инсталляцию

ERROR: The Compose file './Docker/docker-compose.yml' is invalid because:
networks.form_constructor value Additional properties are not allowed ('name' was unexpected)
То, что описано выше. При этом данный тэг заявлен в 3.5 и на неё валидатор не ругался.

пятница, 4 июня 2021 г.

phpipam - знакомство и api

Если уж довелось работать с phpipam, начать лучше с чтения оф доки и его установки в докере. Например, отсюда

https://github.com/pierrecdn/phpipam

если взять блок из docker-compose, не надо ставить ни баз, ничего.

!! Это хорошо для ознакомления, но база в докере в проде - не лучшее решение !!

Есть другой вариант

https://hub.docker.com/r/phpipam/phpipam-www (github)


 Тепреь посмотрим  на его апи

https://phpipam.net/api/api_documentation/

Клиенты:

https://phpipam.net/api/phpipam-api-clients/

https://github.com/phpipam/phpipam-api-clients


После установки в докере (да и скорее всего в любой) если включить PowerDNS то он не заработает. Во-первых, надо прописать правильный хост. Во-вторых, подключиться к БД и завести юзера и базу ИЛИ указать текущего рута.. и создать базу. Так что лучше создать всё самому. В-третьих, база сама не заполнится (что я вполне могу назвать рукожопством, могли бы чуть доделать и по предоставленному рутовому доступу всё заполнить + иметь кнопку в вебе для деплоя нужного дампа бд), нужно найти порядок действий (линк ниже) и пролить базу руками.

https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-powerdns-with-a-mariadb-backend-on-ubuntu-14-04 step 4

!!! Схема бд - "не та". Нет disabled полей как минимум. Второе рукожопство - открываем оф доку, берём оттуда дамп

https://doc.powerdns.com/authoritative/backends/generic-mysql.html#default-schema

Вроде всё ок, но после создания домена опять получаем Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'change_date' in 'field list'. Находим issue и видим ещё линк

https://doc.powerdns.com/md/authoritative/howtos/#basic-setup-configuring-database-connectivity

Что на выходе? На сайте phpipam нет нужной схемы. И в репе нет. И линков нет, только по issue собирать. И даже офсайт схемы pdns противоречат друг другу.

Вишенка на торте. Днс не заработает после активации, так как нужно сам pdns поставить ОТДЕЛЬНО. В общем, очередная формальная вещь, которую никто нигде не смог нормально описать.

Берите netbox...


О репликации есть такое
https://www.digitalocean.com/community/tutorials/how-to-configure-dns-replication-on-a-slave-powerdns-server-on-ubuntu-14-04

но надо ещё изучить вопрос. Дело в том, что можно поднять несколько powerdns в режиме подключения к БД (одной или нескольких с репликацией), а также про режим без общей БД с NOTIFY. И powerdns native vs master

вторник, 7 апреля 2020 г.

Mac: Нормальный вывод du

Не знаю какие дендропришельцы делали вывод для du, штатно это что-то совершенно нечитаемое и бесполезное, и даже -h не улучшает ситуацию.
Правильная команда:
df -lHPh
И в конфиг ~/.bash_profile
alias du='df -lHPh'

вторник, 31 марта 2020 г.

Jenkins и upload to S3

Жил-был дженкинс, работал себе, задачи на нём вида Freestyle крутились себе. И сразу оговорка, нода, на которой запускалась задача выкатки, не в амазоне, дальше это будет важно.

Есть для выкатки через freestyle плагин s3 publish, он же /s3/ в плагинах. Но есть у него огромный, гигантский косяк: он не умеет в ACL. Вообще не умеет. Ни в каком виде. А на офсайте жалкая отмазка "выставите нужные права на весь бакет через IAM", что разумеется далеко не всегда приемлемо.
Да, у него есть metadata, но толку от неё ровно 0. Потому что оно мало того что не умеет Canned ACL, так даже x-amz- не выставить, там захардкожен префикс, что-то вроде x-amz-meta-, и ничего с этим не сделать. Ладно, не было печали, посмотрим другие варианты.
aws s3 cp|sync
s3cmd put|sync
итд - поскольку нода не в амазоне, мы не можем настроить IAM на выкатку без токена, а по некоторым причинам его могут не давать сделать.
Хорошо, есть вроде неплохой плагин aws pipeline plugin, он умеет сильно больше чем s3 plugin, поставим. И первый косяк, оно не умеет в freestyle. Надо переписывать задачу в pipeline. Что ж, давно было желание, переписали. Второй косяк. s3Upload не работает, потому что конфликт имён с s3 plugin. И как только мы удаляем s3 plugin, у нас ломаются все связанные задачи. А их может быть больше десятка. Но и это не всё. Косяк 3. Похоже, что s3 plugin выкатывал файлы через Jenkins, потому что оно просто работало. А aws pipeline делает это с самой ноды, и ничего не работает. Никто же не добавил AWS_ переменные. Но даже если добавить withAWS - может не заработать, если у нас не 2 переменные а 3: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN. И передать их как-то - не выйдет. И выставить через def в начале пайплайна - тоже не работает. Так что 2 плагина, функционал которых фактически не пересекается, вместе стоять не могут.

Тут на помощь приходят copyArtifact и более удобный в данном случае stash, при условии что у нас есть нода в амазоне, на которой можно будет сделать unstash + s3Upload.

На то, чтобы выяснить и отладить это всё, может уйти не 1 день.
Если бы удалось пропихнуть фикс в s3 plugin с переименованием s3Upload во что-то ещё (в этом модуле всего 2 функции, в отличие от заточенный под пайплайны aws pipeline), то они могли бы существовать мирно вместе. А так - им надо обоим ставить тэг Conflicts и блокировать совместную установку.

пятница, 20 марта 2020 г.

CloudFormation для VPC Peering

Продолжение https://dragonflybsd.blogspot.com/2020/01/amazon-vpc.html, при настройке через CloudFormation

Казалось бы, настройка элементарна
  VPCPeeringWithMain:
    Type: AWS::EC2::VPCPeeringConnection
    Properties:
      VpcId:
        Fn::ImportValue: !Sub "${AWS::StackName}-VPC"
      PeerVpcId: !Ref VPCMainID

Но нет. Элементарно ловится ошибка
VpcPeeringConnection failed to stabilize. State: [failed]
Открываем доку
https://aws.amazon.com/ru/premiumsupport/knowledge-center/cloudformation-vpc-peering-error/
и начинаем читать. Оказывается, там много подводных камней. Если пирятся разные аккаунты - нужно озаботиться ролями, если разные регионы - читаем
The Region code for the accepter VPC, if the accepter VPC is located in a Region other than the Region in which you make the request.
и так далее, и разумеется, в основной доке про это явно - нет.

И это всё в дополнение к

воскресенье, 27 октября 2019 г.

Unity3d: Failed to activate/update license. Timeout occured while trying to update license. Please try again later or contact

Есть такой кривой движок (точнее его лицензирование), со сборкой из консоли там беда. И как пример ошибка
Failed to activate/update license. Timeout occured while trying to update license. Please try again later or contact

Вариант первый - заходим на сервер сборки где-то раз в месяц, в Unity Hub, там активируем лицензию (вероятно, надо ещё сделать login в хабе)
Вариант второй: читаем, думаем.
https://unitycoder.com/blog/2017/05/19/install-run-unity-in-linux-terminal/
https://forum.unity.com/threads/5-4-0p1-fails-to-launch-due-to-license.425277/#post-2941499
https://forum.unity.com/threads/unity-5-3-seems-to-break-batchmode-nographics-on-headless-linux.376074/
https://stackoverflow.com/questions/47399488/building-running-headless-unity3d-game-in-ubuntu-docker-container

И вообще типа для консольной сборки нужна про версия (у нас есть, от гемора и танцев не спасает, при этом в 1 поток похоже можно таки собирать и на бесплатной лицензии)