Код в мешке
249 subscribers
9.08K photos
1.6K videos
2.11K files
42.7K links
Код в мешке - про кодинг, и не только...
Это личная записная книжка

https://t.me/joinchat/AAAAAEIy6oGlr8oxqTMS5w
Download Telegram
ContentCombine: как я сделал мультинишевый контент-комбайн и запустил ежедневный SEO-дайджест #habr
https://habr.com/ru/articles/1052928/
Tags: ContentCombine, контент-комбайн, агрегатор новостей, Data Engineering, NLP, искусственный интеллект, LLM, Python, SEO, автоматизация контента
Author: Staurus
Forwarded from Библиотека программиста
This media is not supported in your browser
VIEW IN TELEGRAM
🍎 Apple выпустила собственную альтернативу Docker Desktop

Новый инструмент container запускает Linux-контейнеры на Mac без стороннего рантайма.

Каждый контейнер работает в собственной microVM, а не внутри общей Linux-виртуалки. Такой подход даёт лучшую изоляцию и безопасность.


Пока это не полноценная замена Docker Desktop (например, Compose ещё не хватает), но для владельцев Mac на M-чипах проект выглядит очень перспективно.

💬 Чем пользуетесь на macOS:

❤️ — Docker Desktop
— OrbStack
🌚 — Apple container
👍 — Podman / другое

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from ServerAdmin.ru
Я привык для установки python приложений использовать либо пакетный менеджер системы apt, либо пакетный менеджер самого python – pip. Это устаревший подход, который имеет много недостатков. Через пакетный менеджер обычно доступны только наиболее популярные приложения. Их список ограничен. А через pip напрямую ставить неудобно, так как это ломает совместимость с приложениями, установленными через apt. Если уж хочется использовать pip, то надо запускать его в изолированном окружении, что тоже создаёт некоторые неудобства в дальнейшем использовании приложений.

Решил разобраться с этой темой. В настоящий момент в deb системах, в частности, Debian и Ubuntu, для установки python приложений лучше использовать pipx. Он позволяет автоматически устанавливать приложения в изолированном окружении, которые вызываются нативно из командной строки, но при этом не конфликтуют с системными пакетами. Сам pipx живёт в базовом репозитории:

# apt install pipx
# pipx ensurepath
# source ~/.profile

Далее его можно использовать для установки приложений. Покажу на недавнем примере с ansible-cmdb. Он получится показательным для раскрытия темы. Его можно поставить через pipx:

# pipx install ansible-cmdb

Но работать установленный таким образом ansible-cmdb не будет. Это связано с тем, что собранный пакет очень старый и не умеет работать в виртуальном окружении, которое создаёт pipx. Последний создаёт символьные ссылки с именем приложения, а сами приложения размещает отдельно в виртуальном окружении. А ansible-cmdb ищет свои ресурсы по жёстко привязанным путям к тому месту, откуда его запустили. С современным приложениями такой проблемы не будет.

В связи с этим нам понадобится ещё одно приложение для работы с пакетами и виртуальными окружениями python – uv. Он, как и pipx, работает в изолированном окружении и не пересекается с системными пакетами. Если pipx используют для установки готовых приложений, то uv для установки зависимостей и создания виртуальных окружений.

Сам uv ставим через pipx:

# pipx install uv

Пример установки зависимостей через uv:

# uv pip install -r requirements.txt

А теперь возвращаемся к ansible-cmdb и запускаем его в виртуальном окружении через uv:

# uv venv .venv
# source .venv/bin/activate
# uv pip install ansible-cmdb

Проверяем:

# ansible-cmdb --help

Теперь ansible-cmdb будет нормально работать напрямую из консоли. Принципиальной разницы в эксплуатации не будет с тем, что я предложил в своей заметке через:

# pip install ansible-cmdb --break-system-packages

Если это всё используется в отдельной виртуалке или контейнере. Но в целом правильно запускать именно так, как я описал в текущей заметке. Это не будет ломать совместимость с системными пакетами и другими python приложениями.

📌 Резюмирую:
◽️pipx используем для установки современных python приложений;
◽️uv для установки зависимостей, библиотек и создания виртуальных окружений в том числе для запуска старых приложений.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#debian #python
Forwarded from ServerAdmin.ru
На прошлой неделе читал статью про ansible-cmdb. Понравился инструмент. Раньше про него не слышал. Он довольно просто устроен, особенно для тех, кто знает и регулярно использует Ansible в инфраструктуре. Собственно, ansible-cmdb работает на базе Ansible.

Поясню, для тех, кто не в курсе и не работает с Ansible. У неё есть список хостов, куда она имеет доступ по SSH. Соответственно, с помощью Ansible можно ходить по хостам, что-то там делать, собирать информацию. Ansible-cmdb использует вывод модуля setup, который заходит на хосты и собирает о них информацию в так называемые ansible_facts. A ansible-cmdb берёт эту информацию и оформляет в наглядную html страницу.

Как я уже сказал, если вы уже используете Ansible, вам ничего пояснять и настраивать не надо. Просто берёте файл с инвентарём, проходите по нему модулем setup и строите отчёт примерно так:

# mkdir out
# ansible -m setup --tree out/ all
# ansible-cmdb out/ > overview.html

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

Настраивать всё буду в Debian 12. Рекомендую использовать для этого отдельную виртуалку или контейнер. Ставим необходимые пакеты:

# apt install python3-pip ansible

У ansible-cmdb есть собранный deb пакет. Я изначально использовал его. Но так и не смог заставить работать. Я не знаю, что там за версия python нужна, но у меня постоянно были какие-то ошибки в коде. Залез в репозиторий, в Issues, увидел там похожие ошибки и решение в виде установки через pip, а не из пакета.

Поставил в итоге следующим образом. Это не рекомендованный способ, но для демонстрации работы и простоты делаю так. Когда разберётесь и решите, что вам этот инструмент нужен, устанавливайте и запускайте его через venv. А пока ставим:

# pip install ansible-cmdb --break-system-packages
# ln -s /usr/bin/python3 /usr/bin/python

Теперь нам нужно подготовить конфигурацию ansible. Добавляю минимальную конфигурацию в файл ~/.ansible/ansible.cfg

[defaults]
home = ~/.ansible/
inventory = ~/.ansible/inventory.yaml
remote_user = root
gather_facts = True
private_key_file = ~/.ssh/id_ed25519
host_key_checking = False

И создаю так называемый инвентарь ~/.ansible/inventory.yaml в терминологии Ansible со списком серверов, для которых будем делать отчёт.

all:
 hosts:
  Debian12-VPS:
   ansible_host: 127.0.0.1
   ansible_port: 22
  Debian12-CT:
   ansible_host: 10.20.1.24
   ansible_port: 22
  Ubuntu24-CT:
   ansible_host: 10.20.1.21
   ansible_port: 22

Передаю в переменную конфигурацию Ansible:

# export ANSIBLE_CONFIG="$HOME/.ansible/ansible.cfg"

Создаю сертификат, по которому буду подключаться к хостам:

# ssh-keygen -t ed25519 -f ~/.ssh/id_ed25519 -C "$(whoami)@$(hostname)_$(date -I)"

Копирую его на хосты в authorized_keys:

# ssh-copy-id root@127.0.0.1
# ssh-copy-id root@10.20.1.24
# ssh-copy-id root@10.20.1.21

Проверяю, видит ли ansible хосты в инвентаре, всё ли верно настроено:

# ansible -i inventory.yaml all --list-hosts
  Debian12-VPS
  Debian12-CT
  Ubuntu24-CT

Всё в порядке, собираем факты:

# mkdir ~/.ansible/out
# ansible -m setup --tree ~/.ansible/out all

Если всё в порядке, и в директории появились текстовые файлы с информацией о хостах, то строим по ним html страничку:

# ansible-cmdb ~/.ansible/out > overview.html

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

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #ansible
Как безопасно настроить VPS-сервер и защитить сайт, бот и веб-приложение #habr
https://habr.com/ru/companies/amvera/articles/1052852/
Tags: безопасность веб-приложений, защита сайта, защита от ботов, защита от брутфорса, проверка безопасности сайта, проверка безопасности сервера, защита бота, проверка сайта на безопасность, проверка сайта на уязвимости, программная защита сервера
Author: VadimMichaylov (Amvera)
Незаменимый офис #habr
https://habr.com/ru/articles/1053102/
Tags: AI-агенты, корпоративный ИИ, LLM, информационная безопасность, проектное финансирование, ЦОД
Author: Akudlay_ru