Сообщество - Лига Сисадминов

Лига Сисадминов

2 416 постов 18 934 подписчика

Популярные теги в сообществе:

13

Ansible для детского сада в скольки то частях. Часть 2. Костылируем жалкое подобие WSUS

Почему я вообще пишу эту статью? Почему нет готового решения «делайте хорошо, плохо не делайте»?
Как жесток и несправедлив этот мир!

Ansible для детского сада в скольки то частях. Часть 1.Про все сразу
Ansible для детского сада в скольки то частях. Часть 2. Костылируем жалкое подобие WSUS - Linux Server Update Services (LSUS)
Ansible для детского сада в скольки то частях. Часть 3. Настраиваем подобие безопасности и все остальное
Ansible для детского сада в скольки то частях. Часть 4. Приделываем костыли

Рассуждения про LSUS - Linux Server Update Services

Я вообще очень удивлен не тому, что в опенсорс инсталляциях творится бардак похуже, чем в  Windows среде. Больше меня удивляет то, что комьюнити с момента появления Linux, а это 17 сентября 1991 года, не сделало какого-то документа «делать так точно хорошо».
У Microsoft был Baseline Security Analyzer
У Microsoft есть Security Compliance Toolkit (SCT)
У Microsoft есть Azure Update Manager operation(AUM).

В опенсорсе был Spacewalk. Последний релиз - 2.10 / March 18, 2020
У RH был Satellite. Это Foreman + katello+ support. Foreman 3.16 and Katello 4.18
Ivanti Patch for Endpoint Manager ? Ага, цитата

Release DateSeptember 18, 2025  The U.S. Cybersecurity and Infrastructure Security Agency (CISA) has published an analysis of the malware deployed in attacks exploiting vulnerabilities affecting Ivanti Endpoint Manager Mobile (EPMM). The Cybersecurity and Infrastructure Security Agency (CISA) obtained two sets of malware from an organization compromised by cyber threat actors exploiting CVE-2025-4427 and CVE-2025-4428 in Ivanti Endpoint Manager Mobile (Ivanti EPMM). Each set contains loaders for malicious listeners that enable cyber threat actors to run arbitrary code on the compromised server. Malicious Listener for Ivanti Endpoint Mobile Management Systems

Rudder ? Ничего про него не знаю.

По беглому обзору, Katello и его функции Lifecycle Ennvironments Content View, выглядят достаточно интересно.

Но единственная «быстро» найденная статья на русском по недоразумению лежит на портале Минцифры, и не содержит описания работы Katello-agent. Который должен был быть, цитата:

Katello-agent is deprecated and will be removed in the next release. Transition your workloads to use the remote execution feature. Red Hat Satellite 6.9

Есть статья на английском. Katello and Foreman in the process of patch management. Картинок достаточно, перевод сейчас в браузере есть.

Проект (Foreman 3.16 and Katello 4.18) выглядит интересным, поскольку содержит интеграцию с Ansible, Configuring hosts by using Ansible, и это позволяет не тащить туда-сюда агенты. Но его установка и интеграция с Ansible и отзывы на него, в целом, неоднозначные.
На официальном сайте есть новость:
betadots GmbH joins the group of companies that provide professional services for Foreman!

Так что вопрос в сложности развертывания, это совсем не WSUS с его далее – далее - готово – пропишите WSUS в GPO.

Рассуждения про структуру LSUS - Linux Server Update Services

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

LSUS Фаза 1. Тащим данные
LSUS Фаза 2. ?
LSUS Фаза 3. Profit

Забрать данные из Ansible facts проще всего в текстовый файл любой структуры. Хотите xml \ yaml, хотите что угодно.
Получить эталонные данные проще всего из эталонного образца нужного дистрибутива. У меня везде Debian разных версий, вот на них и буду опираться. Потому что в закрытом или частично (с прокси репозиториями) контуре внешние данные с какого-то сайта \ репозитория не получить.
Хотя и можно на проверяемом сервере делать apt get update и смотреть на счетчик пакетов для обновления.

Но на первой стадии, получения «хоть какого-то то прототипа» гораздо, гораздо проще взять данные из текстового файла \ xml \ любой другой структуры, даже бинарного формата, чем из внешнего источника. Есть же Python pickle, который и положит данные в любой удобный мне формат, и заберет их оттуда. Но, это все после, а пока

Добавление еще одного хоста Debian к Ansible

Вроде изян.
Редактируем 1st_hosts.ini, добавляем туда еще один IP, делаем как в первой части:
ansible-playbook uptime_report.yml --ask-pass --user root --inventory  /home/user/1st_hosts.ini

И, конечно, получаем на воротник, потому что в Debian по умолчанию в /etc/ssh/sshd_config запрещено root ssh – параметром PermitRootLogin. Что правильно.

Но в таком случае придется держать под руками скрипт -
sudo adduser ansible
sudo usermod -aG sudo ansible # If you want the ansible user to have sudo privileges
ssh-copy-id ansible@<debian_12_ip_address>

Или, скорее, положить этот скрипт в гит, и брать его из гит. Если вы разворачиваете VM с ноля, а не из шаблона.

Изян: stackoverflow
curl -s http://server/path/script.sh | bash -s arg1 arg2

LSUS Linux Server Update Services и структура данных

Если нужно что-то строить, то потребуется:
A Single Source of Truth (SSOT). То есть источник данных по требуемой версии. Можно сделать такой «автоматизированный для сразу всего». Это долго: планировать, напланировать, сделать. Это водопад. Можно сделать криво, руками, и так и оставить. Это Agile. Вот так и сделаю.
Похоже, это будет таблица, в виде:
Debain 10-11-12-13 и последних версий ядер к ним, а, значит, и Debian в контейнере или в VM, для того чтобы брать данные из него. Можно сделать и Debian VM, на тонком диске, без ПО. Такая VM займет 2-3 гигабайта.
Придется держать Ubuntu 18-20-22-24 и даже 25. С той же целью. Наверное, если чуть-чуть подумать, то можно «потом» сделать и автоматизацию, когда VM или контейнер запускаются, обновляются, и данные с них забирает система учета. Или в саму систему учета встроить десяток репозиториев и смотреть последние версии хотя бы ядер в репозиториях. С одной стороны это проще, с другой в тестовые виртуальные машины можно положить еще массу всякого софта, то есть соорудить еще одно dev окружение. Но это, скорее, даже не фаза 2 (?), и не фаза 3, а фаза 4 – развиваем то, что есть.
На фазе 1 хватит и простой таблицы.

С целевой структурой данных ситуация сложнее. Для своего предпоследнего пет проекта под похожие задачи я просто развернул базу данных (Postgre), и туда клал разное. Нужно ли на первом шаге такое решение? Не знаю, мне не нужно, мне и бинарной таблицы хватит. Но что туда класть? Очевидно, туда должны попасть: FQDN, IP, дистрибутив, версия дистрибутива, ядро сейчас, последние дата и время доступности, аптайм. Должно ли туда попадать предыдущее состояние объекта, и какие-то еще настройки? Не очень важно, всегда можно расширить схему данных, добавить к объекту еще пару свойств. Как, впрочем, можно и пересоздать и перезалить базу.

Заключение

Для построения LSUS Linux Server Update Services на фазе 1 вам понадобятся:
Git \ Gitlab. Можно в контейнере.
Ansible с настроенным доступом
Python. Почему не Rust и не Go? Потому что компилировать не хочется, а Python работает и так. И объемы небольшие.

Литература

SpaceWalk:Satellite
MS Azure Automatic Guest Patching for Azure Virtual Machines and Scale Sets
MS Azure Update Manager
MS Azure How Update Manager works
MS techcommunity Step-by-Step: How to update an Azure Linux VM using Update management
Ivanti Patch for Endpoint Manager
Katello и Foreman в процессе patch management
Katello and Foreman in the process of patch management
Katello (old)
Foreman 3.16 and Katello 4.18
Foreman Quickstart Guide for Foreman with Katello on RHEL/CentOS
RH Chapter 11. Host Management Without Goferd and Katello Agent
Github Katello
RedOS Настройка GLPI-сервера (для инвентаризации оборудования)

@editors, можно мне все же выдать тег Ansible ?

Показать полностью

Продолжение беседы за роутеры

@IFSP2293534

Я тебя умоляю ! 2011 это для ты , да я, да тётя-Маша-бухша. Аналог ( по производительности ) - какой-нибудь LinkSys

Не ну не боги горшки обжигают, у меня тогда было штук 30 офисов, по 10-50 юзеров каждый, по РФ, которые надо было связать центром, цена вопроса на роутер +- 1к убитых енотов. Так что не разбегаешься. DMVPN вполне себе пришелся в тему.


Продакшн начинается с 1100 ( именно они у меня трудились в БОЛЬШОЙ компании, держали BGP две автономки fullview, и принимали VPN со всей России от филиалов. )
А на одном MUM выступали люди из провайдера , они купили тик, не как железку, а как ось и накатили его на какой то Prolliant.
Раздавали интернет по PPPoE подмосковному городу ( то ли Подольску, то ли Ногинску, не помню ).
Хватало и ещё оставалось.

Я тогда столкнулся с тем, что кошки пакетную скорость занижали от указанного, длинки (чисто для смеха включил в обзор) нагло врали в большую сторону, а микроты писали честно но для 1-го потока. И да, дело было давно, лет 10 уж как. Вполне возможно у них проснулась совесть ))

ЧУР МЕНЯ !!! свят-свят-свят ! ты мне еще ЭЛТЭКС предложи !

Пока не буду, у нас скоро на тесты приедет свич L3, погоняем.

Показать полностью
13

Ansible для детского сада в скольки то частях. Часть 1.Про все сразу

Для лиги лени: какое-то пособие для совсем отсталых
Ansible для детского сада в скольки то частях. Часть 1.Про все сразу.
Ansible для детского сада в скольки то частях. Часть 2. Костылируем жалкое подобие WSUS
Ansible для детского сада в скольки то частях. Часть 3 Безопасность

Для кого этот текст, и про что тут. Избыточно длинное введение

Ситуация «Я и Ansible» кому-то может показаться странной, кому-то обычной. Я его использую, много кто использует, и много кто использует гораздо лучше меня. И, при этом, много кто не использует, или не использует для каких-то очевидных для меня задач. Какие-то базовые вопросы ставят меня в тупик.
По абсолютно не понятным для меня причинам, Ansible, Terraform, прочие инструменты, время от времени записывают в «инструменты девопс». Это странно, потому что Ansible самый обычный инструмент, применяйте куда хотите. Хотя в русскоязычном сообществе почему то сменилась терминология, devops +-= linux system administrator, даже если у вас нет ни CI, ни CD, ни SDLC и тем более SSDLC, хотя бы на базовом уровне Microsoft SDL.
Поэтому я подумал, подумал, и решил написать одну, может две, статьи по теме, заодно в своей голове уложу какие-то вещи.

В ходе написания статьи выяснилось интересное, про Opensource в целом, как движение и .. образ мысли? Возможно, это абсолютно неправильная точка зрения, но .. GNU/Linux, точнее GNU как движение, точнее The Open Source Initiative / The Open Software Foundation, Inc. (OSF) , The Apache Software Foundation не умирают, но изменяются и трансформируются, и делают это каким-то путем.. Повелителя перемен. Ну хорошо хоть не Слаанеш, хотя местами чемпионы сразу двух.

Ansible для детского сада в скольки то частях. Часть 1.Про все сразу

Изначальное движение «кто-то пишет код, кто-то проверяет код» постепенно закончилось лет 10-15 назад. Критическими точками стали:
18 апреля 2016, с выходом статьи The Linux scheduler: a decade of wasted cores. Полный текст тут
9 декабря 2021, когда в Log4j выявили CVE-2021-44228. Не замеченную ни корпоративным миром, ни Apache Software Foundation с 2013 года. И это еще ничего, сейчас пошла волна вайб кодинга, там просто караул.

Причины "исхода" понятны – повсеместное внедрение тайм трекеров, систем управления, рост сложности кода, etc, не дают возможности массово заниматься «чем-то еще», и вклад в сообщество не монетизируется. Разработчики и команды забрасывают проекты, достаточно вспомнить RatticDB и Ralph, и последние движения везде.
В том числе поэтому страдает не только сам код, но и документация и сценарии к нему. Особенно статьи, написанные исключительно в стиле «как надо» и «как у меня получилось». Сценарии «как у меня не получилось и почему» оседают в глубинах форумов или (запрещенная в РФ социальная сеть) групп. Поэтому, иногда проще сделать самому «как не надо», сломать раз 10, написать «так точно не работает», и написать «как работает у меня и почему».
Мне почему-то проще так, через «сломай сам и напиши что сломал».

Теперь к теме

Важно: Вышло обновление 2.19, и вышло давно! :

Ansible Core 2.19 was officially released on July 21, 2025.

Important: The ansible-core 2.19/Ansible 12 release has made significant templating changes that might require you to update playbooks and roles. The templating changes enable reporting of numerous problematic behaviors that went undetected in previous releases, with wide-ranging positive effects on security, performance, and user experience. You should validate your content to ensure compatibility with these templating changes before upgrading to ansible-core 2.19 or Ansible 12. See the porting guide to understand where you may need to update your playbooks and roles. ROADMAP.

Теоретическая часть

В чем плюс Microsoft Active Directory Domain Services (MS AD DS) ? Он просто работает. Я про это уже писал вот тут (SSSD или приключения Linux в домене Windows (MS AD)) и повторяться не нужно. И он документирован сотнями примеров и миллионами пользователей.

В чем минусы Ansible? Точнее, в чем минусы, если его не настраивать.

Первый минус.
Можно сказать, что очевидный минус в том, что это не pull система.
Хотя в документации и есть раздел Ansible-Pull, цитата:

You can invert the Ansible architecture so that nodes check in to a central location instead of you pushing configuration out to them. Ansible-Pull

То есть, каждый включенный в MS AD сервер «сам» ходит за новыми настройками, и «сам» их обновляет.
Для Ansible можно при первом проходе добавить в CRON
git pull && ansible-playbook
Но это не наш метод. И все равно, нужна система типа Netbox или хотя бы php ipam или хотя бы, если вы совсем немощный, GLPI - Gestionnaire libre de parc informatique.
GLPI, как оказалось, неплохой проект. Для целей именно ИТ в серверному сегменте, и управлению конфигурациями пригоден меньше, чем Netbox, но коллеги из РФ прикручивали к GLPI костыли, и кое как это ездило. Даже какое-то русское сообщество есть. Ralph, говорят, тоже неплох. Был.
Ralph 3 - Asset Management / CMDB
Github allegro /ralph

Цитата

Discontinued

"Effective January 1, 2024, all development and maintenance activities associated with the Ralph project on Allegro's GitHub will be discontinued. This means that no further updates or modifications will be applied to the codebase. However, the current version of the code available in the repository will remain the property of the community, allowing individuals to continue contributing to and developing Ralph as they deem appropriate."

As Allegro, we continue to publish Ralph's source code and will maintain its development under a "Sources only" model, without guarantees. We believe this approach will be beneficial, allowing everyone to use and build upon the software. Our current goal is to modernize the software and ensure its long-term maintainability, and we're investing into it in 2025.

However, we are not operating under a contribution-based model. While we welcome discussions, we do not guarantee responses to issues or support for pull requests. If you require commercial support, please visit http://ralph.discourse.group.

We sincerely appreciate all past contributions that have shaped Ralph into the powerful tool it is today, and encourage the community to continue using it.
README.md


IT Asset Management нужен, но это система управления, а не система настройки. Хотя, может и к ней есть какой-то готовый модуль выгрузок, или его можно написать, именно как модуль.

Вторая минус, с которым я, может быть, попробую разобраться, хотя меня до вчера она не волновала, это AAA, точнее какую учетную запись использует Ansible, и как он это делает. От рута все запускать, конечно, легко. Один рут везде, один пароль. Удобно.

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

Вопрос использования Ansible, скорее, относится к координации отделов. Если отдел ИТ един, и при создании очередной виртуальной машины, в облаке или на земле, VM или сервис добавляется в Ansible, или изначально VM и физика добавлены, или есть автоматическое обновление, то проблемы нет.
Но ситуация «забыли добавить» и бесконтрольных Windows машин касается. Если Windows машину в домен не добавить, то волшебным образом она там не появится, и на локальном WSUS отмечаться не будет.

Отсутствие контроля плохо что так, что эдак.

Что дает еще одно направление для инвентаризации, про которое я как-то раньше не думал, но про это напишу статью - Инвентаризация инфраструктуры и сети. Пометки для начинающих. Черновик заведен, дальше как время будет получится.

Развертывание Ansible

Про это я уже писал в статьях:
Переход на Proxmox Часть 3. Ansible и
Переход на Proxmox Часть 6. Возвращаемся к запуску Ansible.

После всех тестов у меня остался:
Кое-как настроенный Ansible
Никак толком не настроенный Linux с SSSD
Git, просто Git. Причем в контейнере

Ansible AWX у меня не заработал. Не очень и хотелось. Можно было поиграть в семафор.

В репозитории  AWX Project написано, цитата:

The last release of this repository was released on Jul 2, 2024. Releases of this project are now paused during a large scale refactoring.

Event-Driven Ansible has been a huge success, but we’ve noticed the same limitations with our existing architecture when trying to combine it with this new system. We need Jobs to be able to report their status in different ways and in different places. We need credentials and projects to be usable in a secure way by this system. Inventory management for Ansible today isn’t just about Servers or Containers, they are about Cloud and Service APIs as well as Embedded and Edge capabilities.
Upcoming Changes to the AWX Project

Размер VM для тестов

Судя по тестовой VM, для связки Nexus + Gitlab + Ansible – 4 Гб на одной VM не достаточно.
30% памяти забирает Java, 20% - Ruby, остальное расходится туда-сюда.
5 Гб минимум для тестов в моей конфигурации. Это не самая большая сложность, когда на нормальном ноутбуке уже 64 Гб памяти (на топовых уже по 96 Гб оперативной памяти).

Проверяем легаси конфиг Ansible
Делаем: ansible --version
Получаем:
ansible --version == ansible [core 2.18.7]; config file = /etc/ansible/ansible.cfg

Делаем: ansible-inventory --list -y
Получаем, цитата:

all:
children:
proxmox:
hosts:
192.168.1111.1111:
ansible_python_interpreter: /usr/bin/python3

servers:
hosts:
server1:
ansible_host: 192.168.1111.2222
ansible_port: 2424
ansible_python_interpreter: /usr/bin/python3

(я в курсе, что IP 192.168.1111.1111 принципиально неправильный, но мне лень как-то иначе переписывать данные реального стенда)

Посмотрим что там:
nano /srv/ansible/hosts.ini
Как оказалось, /srv/ansible/hosts.ini – это какой-то недоделанный файл из какой-то старой инструкции. Не нужен
nano /etc/ansible/hosts

Получаем тот же конфиг, что выше, но в формате конфига:

[servers]
server1 ansible_host=192.168.1111.1111

[servers:vars]
ansible_port=2424

[proxmox]
192.168.1111.2222

[all:vars]
ansible_python_interpreter=/usr/bin/python3

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

2424 – это у меня SSH переставлен, в /etc/ssh/sshd_config. Потому что на 22 порту этой VM живет gitlab в docker. Можно было наоборот.

В интернетах пишут то, что мне нравится, то есть: используйте FQDN. цитата:

I tend to disregard the commonly accepted best practice of using short names for hosts, and use FQDNs instead. In my opinion, it has many advantages.
It makes it impossible for host names and group names to collide.
Creating an additional variable to carry the host's expected FQDN becomes unnecessary.
It is immediately obvious which (actual) host caused some failure.
Ansible naming conventions

В Ansible docs пишут то же самое: Inventory basics: formats, hosts, and groups

Но можно использовать и алиасы: раздел Inventory aliases в документации.

Что имеем перед началом движения:
не обновленный Ansible с простейшей конфигурацией.
Еще раз напоминаю, что в 2.19 (у меня ansible [core 2.18.7] поведение поменялось.

Обновиться в лабе просто так можно, но нельзя, через:
pip install --upgrade ansible-core
Можно выстрелить себе в ногу, потому что:
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.

ansible 11.8.0 requires ansible-core~=2.18.7, but you have ansible-core 2.19.2 which is incompatible.
Successfully installed ansible-core-2.19.2


Придется обновлять целиком:
python3 -m pip install --upgrade --user ansible

Found existing installation: ansible 11.8.0 ; Successfully installed ansible-12.0.0

Такое, конечно, только в лабе и можно делать, без бекапа, без плана отката, вообще без ничего.

Переходим к фактам, просто потому что они мне были нужны
Самая простая команда для сбора фактов -
ansible all -m setup
Читается просто.
Ansible – понятно.
All – группа по умолчанию

Дальше интересно, потому что «-m» описан в Ansible ad hoc commands, как
$ ansible [pattern] -m [module] -a "[module options]"

Там же описана параллельное исполнение команд, цитата:

By default, Ansible uses only five simultaneous processes. If you have more hosts than the value set for the fork count, it can increase the time it takes for Ansible to communicate with the hosts. To reboot the [atlanta] servers with 10 parallel forks

Кто подскажет, почему я тупой, и нашел перечень в выводе man ansible
и не нашел какой-то подробной статьи в интернетах?

-m == module; в том числе -m ansible.builtin.setup , что равно -m setup
-a == command
-u username == user
--ask-become-pass ; -K; --ask-pass – запрос пароля;
--check == Running playbooks in check mode
-i; --inventory == файл с перечнем хостов
-e; ‐‐extra-vars
-l; ‐‐limit


man ansible

usage: ansible [-h] [--version] [-v] [-b] [--become-method BECOME_METHOD] [--become-user BECOME_USER] [-K | --become-password-file BECOME_PASSWORD_FILE]
[-i INVENTORY] [--list-hosts] [-l SUBSET] [--flush-cache] [-P POLL_INTERVAL] [-B SECONDS] [-o] [-t TREE] [--private-key PRIVATE_KEY_FILE]
[-u REMOTE_USER] [-c CONNECTION] [-T TIMEOUT] [--ssh-common-args SSH_COMMON_ARGS] [--sftp-extra-args SFTP_EXTRA_ARGS]
[--scp-extra-args SCP_EXTRA_ARGS] [--ssh-extra-args SSH_EXTRA_ARGS] [-k | --connection-password-file CONNECTION_PASSWORD_FILE] [-C] [-D]
[-e EXTRA_VARS] [--vault-id VAULT_IDS] [-J | --vault-password-file VAULT_PASSWORD_FILES] [-f FORKS] [-M MODULE_PATH]
[--playbook-dir BASEDIR] [--task-timeout TASK_TIMEOUT] [-a MODULE_ARGS] [-m MODULE_NAME]

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

server1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh

И еще, для моего сценария «ничего не настроено», нужно делать не
ansible all -m setup
а
ansible all -m setup --ask-pass

Или индивидуально для группы серверов:
ansible proxmox -m setup --ask-pass
не говоря про остальное написанное в прошлых текстах:
ansible proxmox -m command -a "uptime" --ask-pass
ansible proxmox -m command -a "pveversion" --ask-pass
ansible proxmox -m command -a "echo ' Hello World '" --ask-pass

И тогда, в ответ на
ansible all -m setup --ask-pass
вы получите не только
(IP) | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [

Но и огромную xml выгрузку по массе параметров.

Дальше нужно переходить к использованию фильтров
вместо ansible all -m setup --ask-pass
запросить ansible all -m setup -a "filter=ansible_cmdline" --ask-pass

и, кроме использования фильтров, переходить на использование групп, где proxmox – это группа, описанная в /etc/ansible/hosts, и строка будет выглядеть как:

ansible proxmox -m setup --ask-pass -a "filter=ansible_cmdline" --ask-pass

Или придется вспоминать базовейший баш, и выгрузить все полученное в файл,
ansible proxmox -m setup --ask-pass > ansible_out_01.txt

Внутри выгруженного файла посмотреть список того, что можно получать в фильтрах, например:
ansible_all_ipv4_addresses
ansible_default_ipv4
ansible_uptime_seconds
ansible_kernel

И получать именно их:
ansible proxmox -m setup -a "filter=ansible_uptime_seconds" --ask-pass

С выводом:
"ansible_facts": {
"ansible_uptime_seconds": 3416

Переходим к первому плейбуку
nano /home/user/uptime_report.yml

Плейбук целиком утащен из интернета или даже написан AI: цитата:

---

- name: Get and display system uptimes
hosts: all
gather_facts: true # Ensure facts are gathered to get ansible_uptime_seconds
tasks:
- name: Display uptime for each host
ansible.builtin.debug:
msg:
Hostname: {{ inventory_hostname }}
Uptime: {{ (ansible_uptime_seconds / 86400) | int }} days,
{{ ((ansible_uptime_seconds % 86400) / 3600) | int }} hours,
{{ (((ansible_uptime_seconds % 86400) % 3600) / 60) | int }} minutes,
{{ (((ansible_uptime_seconds % 86400) % 3600) % 60) | int }} seconds
when: ansible_uptime_seconds is defined

Выполним что получилось. Без всякой фильтрации хостов и без ничего.

ansible-playbook uptime_report.yml --ask-pass --user root

Получим 1 [ERROR]: Task failed: Failed to connect to the host via ssh:, и  получим 1 ОК.

Ansible playbook для первой группы хостов
На следующем этапе первым делом надо разобраться вот с чем.
Команда:
ansible-playbook -i /path/to/your/hosts_file.ini your_playbook.yml
позволяет работать со списком хостов и групп хостов в hosts_file.ini
по умолчанию это /etc/ansible/hosts

Очень хочется сделать по образцу:
Вместо: ansible proxmox -m setup -a "filter=ansible_uptime_seconds" --ask-pass
сделать:
ansible-playbook proxmox uptime_report.yml --ask-pass --user root

Так работать не будет!

man ansible-playbook

NAME
ansible-playbook - Runs Ansible playbooks, executing the defined tasks on the targeted hosts.
SYNOPSIS
usage: ansible-playbook [-h] [--version] [-v] [--private-key PRIVATE_KEY_FILE]
[-u  REMOTE_USER]  [-c  CONNECTION]  [-T TIMEOUT] [--ssh-common-args SSH_COMMON_ARGS] [--sftp-extra-args SFTP_EXTRA_ARGS] [--scp-extra-args
SCP_EXTRA_ARGS]  [--ssh-extra-args  SSH_EXTRA_ARGS]  [-k  |  --connection-password-file  CONNECTION_PASSWORD_FILE]  [--force-handlers]
[--flush-cache]  [-b]  [--become-method  BECOME_METHOD]  [--become-user BECOME_USER] [-K | --become-password-file BECOME_PASSWORD_FILE] [-t TAGS] [--skip-tags SKIP_TAGS] [-C] [-D] [-i INVENTORY] [--list-hosts] [-l SUBSET] [-e EXTRA_VARS] [--vault-id VAULT_IDS] [--ask-vault-pass‐

word  |  --vault-password-file  VAULT_PASSWORD_FILES]  [-f  FORKS]  [-M MODULE_PATH] [--syntax-check] [--list-tasks] [--list-tags] [--step]

[--start-at-task START_AT_TASK] playbook [playbook ...]

Значит, что остаётся делать?
Остается читать: Ioannis Moustakis Ansible Inventory (есть русский перевод от slurm: Изучаем Ansible Inventory: основы и примеры использования)

Делаем: ansible-playbook uptime_report.yml --ask-pass --user root --inventory proxmox
И ничего подобного, ТАК НЕ РАБОТАЕТ

казалось бы, очевидный лично для меня вариант, когда команда исполняется для какой-то выборки из группы хостов в файле «по умолчанию».
Ничего подобного. Будьте добры делать, как положено:
ansible-playbook uptime_report.yml --ask-pass --user root --inventory  /etc/ansible/hosts  --limit “proxmox”

То есть, конечно, можно и покороче:
ansible-playbook uptime_report.yml --ask-pass --user root --limit “proxmox”


но через limit, если вы хотите «чтобы бралось по умолчанию, но не все».
Лично мне вот это было совершенно не очевидным моментом, что это делается именно так.
Проблема роста – когда ты имеешь развитую инфраструктуру, где все это давно используется, и закопано в наслоениях легаси, можно сделать по образцу и, скорее всего, будет работать. Когда ты пытаешься разобраться, как и почему сделано вот так, это уже совсем другое.

Ну да ладно.
Скопирую конфиг себе и буду пробовать
cp /etc/ansible/hosts /home/user/1st_hosts.ini

Удалю лишнее, оставлю только

[proxmox]
192.168.1111.2222

[all:vars]
ansible_python_interpreter=/usr/bin/python3

И сделаю
ansible-playbook uptime_report.yml --ask-pass --user root --inventory  /home/user/1st_hosts.ini

И все отлично, и все работает.

Заключение.

Система как система, ничем не хуже другой. Первый час сложно, ничего не понятно. Потом попроще.

Литература
Переход от SDLC к SSDLC
GLPi
Ansible AWX
Upcoming Changes to the AWX Project
Classic SysAdmin: Configuring the Linux Sudoers File

Ansible docs Discovering variables: facts and magic variables
Ansible docs Run Your First Command and Playbook
Redhat An introduction to Ansible facts
Specify hosts in ansible-playbook command line
stackoverflow  How to list all currently targeted hosts in an Ansible play

Ioannis Moustakis Ansible Inventory (есть русский перевод от slurm: Изучаем Ansible Inventory: основы и примеры использования)

@editors, мне бы теги Ansible и CMDB, пожалуйста! Не работает их добавление у меня, ничего не могу с этим сделать!

Показать полностью 1
4

Продолжение поста «Две новые уязвимости в Linux в сентябре 2025»1

И еще одна новая :
0-Click Linux Kernel KSMBD RCE Exploit From N-Day Vulnerabilities

A 0-Click Linux Kernel KSMBD RCE Exploit From N-Day Vulnerabilities, achieving remote code execution on a two-year-out-of-date Linux 6.1.45 instance running the kernelspace SMB3 daemon, ksmbd.

By chaining two authenticated N-day flaws, CVE-2023-52440 and CVE-2023-4130, the exploit attains an unauthenticated SLUB overflow and an out-of-bounds heap read primitive, culminating in a user-mode helper invocation and reverse shell without any manual interaction.

И опять потери:
Unhappy Ending! Kubuntu Creator Jonathan Riddell Departs After 25 Years with KDE
A few corrections about the transition from Blue Systems to Techpaladin

Jonathan Riddell, founder of the beloved Kubuntu, has announced that he is leaving KDE after 25 years. If you didn't know him, his work helped bring the Plasma desktop to millions and shaped the KDE ecosystem through both Kubuntu and KDE Neon.

Причины?
Adios Chicos, 25 Years of KDE

A couple weeks later we had anther video call but Nate called me first and told me I’d be excluded from it. No explanation was given beyond I had “made some comments and would not be happy”. If someone is telling you what your emotions that is when controlling behaviour starts to become abusive. And thus ended my 25 years with KDE.

And what of my colleagues? Surely they wouldn’t want a setup where they have no control over their professional life and all their profit goes to one person? Well dunno, they’ve stopped speaking to me. Nothing. Silence. Nil. Not so much as a “cheereo”, nor “sorry we chose the option were you got excluded” and certainly no explanation.

Дружба это магия, а магия это ересь. Коммерческий мир победил.

Показать полностью
5
Вопрос из ленты «Эксперты»

Прошу помощи с клонированием диска, NTLDR is missing

После клонирования системного диска целевой диск не грузится с сообщением NTLDR is missing. Исходник загружается, правда почему-то стал выдавать альтернативу "Вин7 или предыдущая версия" - появилось после манипуляций с клонированием.

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

Акронис в конце выдаёт "не могу скопировать какие-то сектора", я пропускала, в конце писал типа всё ок.. Рефлект ничего подозрительного, кроме Обновление BCD - данные не обновлены не написал и тоже "клонирование прошло успешно".

Приоритет загрузки в биосе выставлен, батарейку на матплате поменяла.

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

Я уже всю голову сломала и идеи закончились.

Помогите, пожалуйста, во имя Ктулху! (уже не знаю, каким богам стучать в бубен).

P.S. Задача собсна апгрейдить винду с сохраненим всего непосильно настроенного за многие годы, но на системном диске нет места. Поэтому путь видится такой - клонирование на больший диск и далее апгрейд. Если есть другие варианты, то посоветуйте, пожалуйста.

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


upd всем большое спасибо! Я пошла по пути расширения исходного диска, операция прошла успешно. Далее буду накатывать обновление вин10.

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

UPD2 Вин10 встала без проблем, всё работает, стало быстрее. Но проблема с загрузкой осталась. Через штатное восстановление системы исправить не получилось. По загрузчику много дали советов, ими и воспользуюсь

Показать полностью
19

Главный эффект Манделы в мире программистов — сколько байт в мегабайте

Во всём виноваты маркетологи, естественно (нет).

Раз в несколько месяцев очередной разработчик задаётся вопросом: как же так, всю жизнь считал, что данные в компьютере основаны на двоичной системе, и в байте число бит — это степени двойки, поэтому и килобайт должен быть 2^10 это 1024, поэтому и мегабайт это 2^20 то есть 1048576, и так далее… А те, кто думает, что в мегабайте МИЛЛИОН байт потому что он так называется, просто тупые филологи и не знают, как устроены компьютеры. И вообще вроде бы есть специальные названия для обозначения этих «ровных», но «неправильных» мегабайт, но я их не помню, потому что нахрена мне это сдалось.

Но нет. Это эффект Манделы.

На самом деле в мегабайте миллион байт. А вот 1048576 байт — это мебибайт, или 2^10 байт, обозначается МиБ или MiB.

В компьютерах действительно хранение данных основано на двоичном коде: биты и байты не «лежат» ровными стопочками по десять штук. Но дело в том, что в системе СИ приставки «кило», «мега», «гига» работают именно в десятичной системе и обозначают, соответственно, тысячи, миллионы и миллиарды. И согласно стандартам системы СИ, мегабайт = 10^6 байт, а не 2^10.

Ранние ОС действительно использовали систему подсчёта данных, основанную на степенях двойки, и этот подход до сих пор используется для подсчёта, например, количества доступной оперативной памяти. Но для разрешения конфликта между традиционным и «компьютерным» использованием этих древнегреческих приставок швейцарская Международная электротехническая комиссия (IEC) в 1998-1999 годах ввела терминологию — киби-, меби-, гиби-, теби- и так далее — для того, чтобы отличать одно от другого и устранить растущую путаницу среди пользователей.

Конечно, никакой путаницы устранить не удалось. Покупаешь жёсткий диск — на коробке написано 500 ГБ, а на самом деле там 465 ГиБ. В гигабайтах тут считать выгоднее, вот маркетологи и насаждают это потребителям. Но на плашках RAM — «честные» гибибайты: сколько указано, столько и получаешь, только пишут всё равно 16 GB, а не 16 GiB. Доходит до того, что на одном экране в системе может находиться несколько параметров в разных исчислениях. Эту шизу хорошо отразили в комиксе xkcd ещё в 2008 году.

А ещё есть провайдеры, которое скорости измеряют в мегабитах в секунду, а не мегабайтах (так скорость выглядит в 8 раз больше), и там тоже срачи между сетевыми инженерами, которые считают 1 Гбит/с = 1 048 576 бит/с, в то время как у телекомщиков принято 1 000 000 бит/с…

Можно, конечно, поискать конспирологию в том, что это производители накопителей пролоббировали IEC именно так, выгодно для производителей, стандартизировать мегабайты и их подсчёт. Или всё-таки на заре компьютеров бумеры-основатели зря решили пойти против существующих стандартов и называть количество данных «округлённо», потому что так было проще.

Потому что иди попробуй подвинуть систему СИ.

Такие посты чаще выходят у меня в Telegram-канале, где в основном пишу про AI и его применение. Что? Сам раскрыл этот спойлер.

Показать полностью 2
48

Две новые уязвимости в Linux в сентябре 20251

Первая:
VMSCAPE (CVE-2025-40300): VMSCAPE targets the Kernel Virtual Machine (KVM) and QEMU (Quick Emulator)

Процессоры и ядра ОС уже содержат защиту от атак Spectre-BTI, которая блокирует утечки между гипервизором и гостевой системой, а также между разными процессами. Но подобная защита не учитывала то, что компоненты гипервизоров, работающие в пространстве пользователя (например, процесс QEMU), и процессы в гостевой системе, выполняются на одном уровне защиты. Из-за этого записи в буфере адреса ветвления (BTB) при предсказании переходов смешивались для процессов гостевых систем и компонентов гипервизора, работающих в пространстве пользователя.
VMScape - атака на CPU AMD и Intel, обходящая изоляцию между гипервизором и гостевой системой

Патчи уже вышли.

Вторая:
CVE-2024-50264

Независимый исследователь по имени Александр Попов представил новую методику эксплуатации критической уязвимости в ядре Linux, получившей идентификатор CVE-2024-50264 . Эта ошибка класса use-after-free в подсистеме AF_VSOCK присутствует начиная с версии ядра 4.8 и позволяет локальному пользователю без привилегий инициировать опасное состояние при работе с объектом virtio_vsock_sock во время установления соединения. Русский хакер представил новую методику эксплуатации сложнейшей уязвимости в ядре Linux

Патчей пока нет

10 лет назад, и даже 5 лет назад, люди, путающие IDE VScode и SATA, мне рассказывали, что ядро линукса и все базовые сервисы проверены и исправлены, и обновлять Linux не надо.

Оказывается, надо.

@editors, можно ли добавить тег "CVE" ?

Показать полностью
23

Российские ЦОД - отставание на поколение или куда ставить NVIDIA Grace Blackwell NVLink72

Для лиги лени: Презентованные еще в 2024 году системы для ИИ NVIDIA Grace Blackwell NVLink72 физически некуда ставить, да и не нужно, это не техника для среднего бизнеса.

Перед тем как перейти к NVIDIA Grace Blackwell NVLink72, начну, как всегда, слишком издалека.

Две недели назад вышло минимум две статьи:
РБК, за пейволлом: iKS-Consulting: в первом полугодии строительство дата-центров в России упало в три раза
Infox: Причины падения числа новых проектов ЦОД в России при росте спроса
И до того:
27.06.2025 Ведомости Данные отдаляются от центра
30.06.2025 Servernews: В деревню, в глушь, на север: московский регион страдает от дефицита мощностей ЦОД, но скоро операторы могут уйти в провинцию

Словарь
ЦОД: центр обработки данных. Специализированное здание, куда поставили действительно много компьютеров
Стойка, она же рек. Она же Rack Enclosure. Шкаф стандартной ширины в 19 дюймов для телекоммуникационного оборудования. Бывает разной высоты, в ЦОД ставят высотой 42 или 48 юнитов, и разной глубины – от 800 до 1400-1600 мм.
Есть еще стандарт Open Rack V3 — модульная система серверных стоек, разработанная в рамках Open Compute Project (OCP)
Юнит, он же монтажная единица -  типовой размер высоты для единицы оборудования  44,45 мм(1,75 дюйма). Оборудование бывает высотой 1,2, 3 .. и так далее юнитов. Для удобства монтажа высота унифицирована. Считайте как крепеж под полки в шкафу высверлен заранее.

История российских ЦОД, центров обработки данных

Исторически российские ЦОД начинались как три независимых направления.
Центры суперкомпьютеров. Это вычислительные центры немирного атома, ракетной техники, и вот этого всего. Потом к ним, ВНЕЗАПНО, подключилась и нефтяная отрасль, а потом и гидрометео и все остальные.

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

Гражданские узлы связи, то есть автоматические телефонные станции, АТС.

Центры суперкомпьютеров
Такие как лежачий небоскреб (Варшавское шоссе, 125) и все вокруг. Изначально строились как индивидуальные проекты, и туда ставили все что угодно, и под любую разумную мощность, которую могла подать энергосистема.

АТС изначально строились для достаточно «горячих» нагрузок, но ключевой момент не только в питании, но и в охлаждении.
С охлаждением все достаточно интересно. Воздух достаточно плохой теплоноситель, теплоемкость мала. У охлаждения водой есть свои минусы, прежде всего это сложность монтажа и демонтажа, протечки, требования к воде. Использовать хоть воду, хоть жидкий азот (как в серийных суперкомпьютерах Cray-2) для единичных проектов можно, для массовых неудобно (хотя IBM справляется).
Есть разница между сборкой водяного охлаждения "1 штука, дома" и "1 тысяча штук на ряд".

Поэтому если речь идет про массовые и дешевые АТС, и массовые и дешевые телекоммуникационные системы, выбор охлаждения воздухом очевиден.

Но при вменяемой скорости воздушного потока, когда воздух еще не отрывает детали и радиаторы от платы, и при вменяемом охлаждении воздуха на входе, или без дополнительного охлаждения воздуха, кубическим метром воздуха при его нагреве от +20 до +70 можно снять..
Посчитаем.

Теплоемкость кубометра воздуха составляет приблизительно 1,25 кДж/°С.
Сечение шкафа возьмем как квадратный метр, при фактических 482,6 мм на 1867 мм – 0.9 квадратного метра.
50 градусов на 1.25 Кдж на градус даст 62.5 кДж. 62 килоджоуля в секунду, это 62 киловатта снимаемой тепловой нагрузки на 42 юнита или примерно 1.5 киловатта на юнит при скорости потока 1 метр в секунду.
Только надо учитывать, что внутри сервера не все сечение занято «ничем», есть ограничения по размерам радиаторов, есть сами платы, конденсаторы, прочие элементы.
И есть ограничения по тепловому потоку микросхема – радиатор, радиатор – воздух.
70 градусов на выходе это достаточно горячо, потому что есть ограничения по температуре самого кремния. При температуре 100-120 градусов, для простых структур до 150 градусов Цельсия, проводниковые свойства кремния начинают меняться настолько, что для процессора это означает выход процессора из строя. При этом не надо забывать, что процессор имеет некоторую толщину, и теплопроводность самого кремния имеет пределы, и тепло нужно отводить из самого центра кристалла. Поэтому промышленность остановилась на лимите «90-95 градусов это предел для ядра». Физический предел чуть выше.
В итоге всех ограничений «для воздушного охлаждения» получается предел охлаждения около 500-700 ватт, может 1 киловатт, на средний сервер в 2 юнита высотой. Может чуть больше, если очень нужно.

Предел охлаждения воздухом может быть и в пару киловатт на юнит, но фактический предел существенно ниже.
Производители прямо пишут: предел для 2 процессорных систем для одного процессора – не более 190 ватт на сокет, сокетов в 2 сервере в 2 юнита обычно 2.
В итоге приходим к цифре около 0.5. 0.7 киловатт х 2 сервер в юнита х шкаф 48 юнитов – 12 киловатт.
У некоторых производителей  (вроде, та же Nvidia) были готовые шкафы «на 15 киловатт».
Существует 6 юнитовый ASrock 6U8X-EGS2 H100 и H200, на 4+4 блока питания по 3000 ватт
Внутри стоят NVIDIA® HGX H200 8-GPU with NVIDIA® NVSwitch™ - 8 штук по 350 ватт, 2.8 киловатта только на видеокарты. Получается киловатт примерно 6, на 6 юнитов.

Производители идут на разные ухищрения. Тут и подача воздуха чуть-чуть под давлением, и межстоечные кондиционеры, вдобавок к подаче холодного воздуха снизу, и снижение температуры воздух на входе, и подготовка воздуха до нужной влажности. Но слишком сухой воздух тоже вреден из-за накопления статики, и не только.
10-15 киловатт на шкаф остается разумным пределом. Больше можно, только шумно, не надежно (высокоскоростные вентиляторы стоят дорого, а ресурс не так велик), есть пределы скорости потока, есть ограничения по подключению пилотов Power Distribution Unit (PDU) внутри шкафа.

Вступает в силу «унаследованная архитектура» и экономика

Экономика говорит, что не все заказчики стоек в ЦОД требуют полной нагрузки, на все 10 киловатт.
А раз так, то можно ориентироваться на требования ГОСТ, который говорит, что есть ряд типовых сечений проводов и автоматом выключения, в частности 25, 32 и 40 ампер.
25 ампер при 230 вольтах – 5.7 киловатт
32 ампера при 230 вольтах – 7.3 киловатта
40 ампер при 230 вольтах – 9.2 киловатт

Поэтому часть стоек в ЦОД проектируют под «5 киловатт как  у дедов на шагово-координатных АТС», часть (значительно меньшую) под 10 киловатт.
Если у вас какое-то тяжелое (по мощности) оборудование, типа тяжелой IBM, то перед ее установкой поставщик проводит предварительное обследование – выдержат ли перекрытия эти 1.5 – 2 тонны, выдержат ли пути доставки (его еще и наклонять нельзя), что там с электропитанием и так далее. Про это давным-давно много и интересно писал Господин Инженер, кто хочет – почитает.

А раз так, то можно и нужно отводить не 10-12 киловатт тепла с стойки (а стоек на ЦОД может быть 2-3 тысячи), а 4-5. Это другие кондиционеры, другие системы, и все другое.
Разумеется, можно сразу планировать «на побольше», но выйдет «подороже». Там одного этиленгликоля 20-30 тонн на ЦОД, если не больше. Плюс электрическая мощность «на работу самих кондиционеров и насосов», плюс сами кабеля, Плюс стоимость подключения двух независимых веток внешнего питания, плюс стоимость батарей и инверторов для резервирования до пуска дизелей, плюс стоимость дизелей. Это все стоит денег, это все надо планировать, и для обычного ЦОД какой-то баланс необходим.

Ничего плохого в этом нет, обычная экономика и экономическое обоснование окупаемости.

В игру вступает NVIDIA Grace Blackwell NVLink72

Если посмотреть на документ от Supermicro NVIDIA GB200 NVL72 SuperCluster, страницу 4,
NVIDIA GB200 NVL72 Rack-Scale Configuration

то там все написано:
Сверху - 10 Compute Trays • 4x NVIDIA Blackwell GPUs per tray
В середине - Интерконнект
Внизу - 8 Compute Trays• 4x NVIDIA Blackwell GPUs per tray

Итого 18 по 4 - 72 GPUs -
GPUs 72x NVIDIA Blackwell B200 GPUs
CPUs 36x NVIDIA 72-core Grace Arm Neoverse V2
Supermicro 250kW capacity coolant distribution unit (CDU) with redundant PSU and dual hot-swap pumps
1.3MW capacity in-row CDU

В документе Supermicro NVIDIA GB200 NVL72 Datasheet указано и потребление. От 125 до 135 киловатт на стойку. Что не удивительно для 72 супер горячих GPU.

Есть решения попроще и постарше, например NVIDIA DGX B200. Потребление, а значит и нагрев, 14.3 киловатта на 10 юнитов.
Есть решение поновее, NVIDIA DGX B300. Те же 14 киловатт.

Есть и прочее горячее оборудование

Современные корпоративные SSD тоже греются, и греются весьма серьезно.
В ряде решений по хранению данных для расчета софт-рейда SSD нужна видеокарта. Греется.
Современные сетевые карты на 100\200\400 G греются.
Современные 100\200\400 G коммутаторы греются еще больше.

В общей массе "нагрузки вообще" таких конфигураций не так много, но они есть.
Ситуация осложняется тем, что заказчик иногда смотрит не на данные по стойке на PDU, особенно если у него не управляемые PDU, и не на показания из BMC сервера по потребляемой мощности, а на маркировку блока питания. На которой написано 1500 W, а таких блоков там два. Все, сервер потребляет 3000 ватт, при фактически потребляемых 300 ватт.

Некоторое теоретические отступление

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

Технологии следующего поколения (это я про цикл про поколения техники) требуют вот таких монстров. Ничего, кстати, особенного - Cray-2 потреблял 200 киловатт.

И конечно это не техника для малого и среднего бизнеса и среднего ЦОД – в США ориентировочная стоимость комплекта была:

The estimates suggest a fully-loaded GB200 NVL72 server with 72 GB200 Superchips could fetch around $3 million

В РФ предлагают за 6.5 миллионов долларов.

Можно ли жить без такой техники?
Конечно можно.

Можно и пешком или на лошади спокойно добраться из Лефортово в Хамовники, как Гиляровский.
Можно долететь на кукурузнике (Ан-2) из Москвы в Владивосток? Можно, дальность Ан-2 в зависимости от нагрузки от 900 до 1200 км. Не так быстро и комфортно, как на Боинг или Эйрбас, но можно.
Можно ли считать газовую динамику, траекторию до Луны (и посадку в Луну с литосферным торможением) на технике из 70х-80х? Можно.

Немного математики или мнение про реальные причины низкого спроса на ЦОД

Сейчас 2025 год. 15 лет назад я убирал из стойки 6 (или 8?) юнитовый сервер IBM из 2000 года или около того. 2 процессора, целых 128 МЕГАБАЙТ памяти.
Заменял я его на виртуальную машину с 256 мегабайтами, а всего на физическом сервере было, кажется, 2 гигабайта.
На технике, которую коллеги и я ставили в 2020, было, кажется, уже по 768 Гб памяти. И это был «обычный такой сервер». 24 слота по 32 Гб памяти.
Сейчас есть и модули 128GB DDR4 ECC REG, и модули 256 ГБ DDR5 ECC RDIMM.
То, что в 2020 занимало две стойки, в 2025 занимает половину стойки. При цене аренды стойки в 100-150 тысяч рублей, или почти 2 миллиона в год, и жизненном цикле техники 5-7 лет, проще при следующей замене перейти (при определенном масштабе, конечно), от выделенной СХД на гиперскейлеры, поставить процессоры «подороже», и повысить плотность размещения на стойку раза в два. За 3 года окупится. Но такая техника требует уже не 5, а 7 киловатт, если плотно набивать, и таких стойко мест, и спроса на них не так много.

Литература
Supermicro NVIDIA GB200 NVL72 SuperCluster
Supermicro NVIDIA GB200 NVL72 Datasheet
NVIDIA DGX B200
NVIDIA DGX B300
Статистика и ЦОД: откуда берутся 5 кВт на стойку и почему это немало

Показать полностью
Отличная работа, все прочитано!