четверг, 30 мая 2024 г.

Docker hub всё?

 Что имеем: Docker hub перестал работать в России

Кому интересно - в комменты, там много всего.

И небольшой итог:

1) поднимаем кэш

https://docs.docker.com/docker-hub/mirror/ (2)

2) настраиваем короткие пути

https://www.redhat.com/en/blog/be-careful-when-pulling-images-short-name

3) хельмчарт как пример

https://artifacthub.io/packages/helm/docker-registry-mirror/docker-registry-mirror

4) зеркала, но без пуша, писать в /etc/docker/daemon.json, ключ "registry-mirrors": [] (подобрать сами прокси) (https://mirror.gcr.io работает у большинства)


https://gallery.ecr.aws/

https://mirror.gcr.io

https://cloud.google.com/artifact-registry/docs/pull-cached-dockerhub-images

https://daocloud.io

https://c.163.com

https://registry.docker-cn.com

5) не забываем про /etc/containerd/config.toml

      [plugins."io.containerd.grpc.v1.cri".registry.mirrors]

        [plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]

          endpoint = ["https://registry-1.docker.io", "https://mirror.gcr.io"]

Так штатно работает например docker pull nginx

(не забываем сказать systemctl reload docker.service, если не помогло то повторяем с restart)

понедельник, 20 мая 2024 г.

defunct процессы

 # ps -ef | grep defunct

sshd     2094514 2094513  0 Feb15 ?        00:00:00 [sshd] <defunct>

# ps auxww | grep ssh

root     2094513  0.0  0.1  16760  8652 ?        Ss   Feb15   0:00 sshd: unknown [priv]

sshd     2094514  0.0  0.0      0     0 ?        Z    Feb15   0:00 [sshd] <defunct>

Итак, что видим: defunct процесс (2094514) в Z state == zombie. Нужно прибить его родителя (2094513) и его отпустит, напрямую его прибить невозможно, даже с kill -9 2094514 ему ничего не будет.

вторник, 30 апреля 2024 г.

подбираем замену hashicorp vault

 В связи с неадекватностью фирмы hashicorp, творящей всякую дичь типа закрытия доступа с опенсорс (!) продуктам из рф, а также переходом на закрытые лицензии, для teraform уже есть замена opentofu, а теперь смотрим замену для vault

https://thenewstack.io/meet-openbao-an-open-source-fork-of-hashicorp-vault/

И это openbao

Впрочем, с запуском в докере/кубере там не так хорошо, если волт можно было запустить как

docker run --rm --cap-add=IPC_LOCK -e VAULT_ADDR=http://localhost:8200 -p 8200:8200 -d --name=dev-vault vault:1.2.2

то образа openbao/openbao на данный момент не существует, а их дока на попытку получить хельм даёт 404, что странно и печально, форк прошлого года.

суббота, 27 апреля 2024 г.

переход с supervisor на systemd

 Автоматический перезапуск решается штатно, через Restart=always или более правильное Restart=on-failure. Помним про дополнительные StartLimit* итд для постоянного рестарта при нескольких неудачах.

Вопрос сложнее - чем заменить numprocs из supervisor. Мне удалось найти только 1 вариант, через имя с @

https://unix.stackexchange.com/questions/288236/have-systemd-spawn-n-processes

Ну и логи иногда нужны в файлах, тогда есть

StandardOutput=/path_to_log/service.log

StandardError=/path_to_log/service_error.log

Может быть =syslog, тогда будет пойдёт через подсистему рсислога (+ SyslogIdentifier=)

Ну и помним про "костыль" вида ExecStart=aaa >/var/log/1 2>&1

четверг, 18 апреля 2024 г.

ansible: generate password

 ansible -m debug --args 'msg={{ lookup("password","/tmp/123") }}' localhost

Но перезапуск даст тот же пароль, это и хорошо и плохо, потому что в этот файл тоже запишет пароль. Сгенерить без следов:

ansible -m debug --args 'msg={{ lookup("password","/dev/null") }}' localhost


вторник, 16 апреля 2024 г.

переход с crontab на systemd timer

 Если вкратце:

1) делаем сервис с Type=OneShot

2) делаем таймер, который запускает этот сервис

Более подробно и примеры

https://opensource.com/article/20/7/systemd-timers

Строка запуска раз в минуту будет такой:

OnCalendar=*-*-* *:*:00

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

systemctl edit --full --force cron.service

systemctl edit --full --force cron.timer

водяное охлаждение для rpi5

 Вопрос, есть ли в этом смысл... А за такие деньги точно не имеет смыла. Хотя взять только водоблоков несколько, и комплект помпа-колба-радиатор_120 от того же barret - будет недорого.

https://www.seeedstudio.com/ICE-Pump-Cooling-Block-for-Raspberry-Pi-5-p-5865.html

https://aliexpress.ru/item/1005006517592568.html

https://52pi.com/products/ice-pump-cooling-system-for-raspberry-pi-5

https://www.jeffgeerling.com/blog/2024/water-cooling-overkill-pi-5



понедельник, 8 апреля 2024 г.

openmediavault

 openmediavault is the next generation network attached storage (NAS) solution based on Debian Linux. It contains services like SSH, (S)FTP, SMB/CIFS, RSync and many more ready to use.

https://www.openmediavault.org/

Можно поднять на rpi 5

https://www.youtube.com/watch?v=l30sADfDiM8

нужен Radxa Penta SATA HAT (прямой линк)

Можно ещё с Radxa ROCK * завести, но там другой комплект нужен скорее всего.. как минимум другой кабель к плате будет.

суббота, 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

четверг, 14 марта 2024 г.

userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

 Убунта (а может и не только она) начала что-то мутить и творить мурню:

userauth_pubkey: key type ssh-rsa not in PubkeyAcceptedAlgorithms [preauth]

Фикс несложный, но при нормально отключенной авторизации по паролям надо будет ещё найти как попасть на сервер... Итак: 

echo 'PubkeyAcceptedAlgorithms +ssh-rsa' > /etc/ssh/sshd_config.d/ssh-rsa.conf
systemctl restart sshd

PS

It is now possible[1] to perform chosen-prefix attacks against the
SHA-1 hash algorithm for less than USD$50K. For this reason, we will
be disabling the "ssh-rsa" public key signature algorithm that depends
on SHA-1 by default in a near-future release.

AttributeError: module 'lib' has no attribute 'X509_V_FLAG_CB_ISSUER_CHECK'

 

python3 -m pip install pip --upgrade

pip install pyopenssl --upgrade

четверг, 7 марта 2024 г.

параметры docker

Иногда надо поменять какие-то параметры докеру, и во многих доках указан /etc/defaults/docker
Но если его открыть, обнаруживаем такое
# THIS FILE DOES NOT APPLY TO SYSTEMD
Так что "для посмотреть" можно сделать systemctl edit --full docker

И с остановкой докера есть прикол, просто systemctl stop docker.service смотрим lsof | grep dockerd и видим что оно работает дальше.
Можно делать так:
systemctl disable docker.service
systemctl stop docker.service
mount | grep overlay
umount ...
(делаем нужное)
systemctl enable docker.service
systemctl start docker.service

суббота, 3 февраля 2024 г.

установка prometheus-ansible роли

 Есть готовый набор ролей

https://github.com/prometheus-community/ansible.git

Можно запустить через git clone, можно поставить коллекцию:

ansible-galaxy collection install prometheus.prometheus

или

ansible-galaxy collection install git+https://github.com/prometheus-community/ansible.git
(внимание на git+, без него скажет "нет тар файла")
Можно сделать requirements.yaml
collections:
  - name: git@github.com:my_org/private_collections.git#/path/to/collection,devel
  - name: https://github.com/ansible-collections/amazon.aws.git
    type: git
    version: 8102847014fd6e7a3233df9ea998ef4677b99248
Тут есть ещё документация
https://docs.ansible.com/ansible/latest/collections_guide/collections_installing.html

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

Добавление внешних айпи к интерфейсам

 Например, можно у ovh докупить адресов, но подключать их надо правильно, а для дебиана и убунты методы отличаются кардинально.

https://help.ovhcloud.com/csm/en-dedicated-servers-network-ipaliasing?id=kb_article_view&sysparm_article=KB0043756#instructions

В частности, у дебиана правится

/etc/network/interfaces.d/50-cloud-init

а у убунты

/etc/netplan/50-cloud-init.yaml

вторник, 30 января 2024 г.

haproxy monitoring

 У haproxy есть как уже написанные экспортеры (archived!), так и штатный экспорт в прометей, штатным и воспользуемся:

frontend prometheus

        bind *:8405

    mode http

    http-request use-service prometheus-exporter if { path /metrics }

А вот с графаной печальнее, есть больше десятка dashboars, но из проверенных (не всех) рабочим оказался только HAProxy 2 Full (id: 12693)

Ну и всё, теперь добавляем в прометей

  - job_name: haproxy

    metrics_path: /metrics

    scrape_interval: 20s

    static_configs:

    - targets:

      - '1.1.1.1:8405'

      - '2.2.2.2:8405'

и радуемся...