Add virtualization inventory report

This commit is contained in:
dido committed 2026-09-29 12:37:57 +03:00
1 parent 43518d51cc
commit ace93c721f
3 files changed
+713

No files matched your search

+73
View File
@@ -0,0 +1,73 @@
# virtualisation-check.sh
Проверява кои виртуализационни и container решения са инсталирани и отчита
инстанциите им, състоянието им и наличните локални container images. Скриптът
е само за проверка: не стартира, спира или променя виртуални машини и контейнери.
## Какво проверява
За виртуални машини се откриват Libvirt (`virsh`), Oracle VirtualBox
(`VBoxManage`), VMware Workstation (`vmrun`), Multipass, Podman machines,
Proxmox VE (`qm`) и активни QEMU/KVM процеси. За контейнерни
решения се проверяват Docker, Podman, класически LXC (`lxc-ls`), LXD (`lxc`),
Incus, containerd (`ctr`), nerdctl и CRI инструменти (`crictl`). Ако е наличен
`kubectl`, се отчита и състоянието на pod-овете в текущия Kubernetes context;
той може да сочи към отдалечен cluster.
За всеки инструмент първо се проверява дали програмата е инсталирана. При
налична програма скриптът заявява списъка и състоянието на инстанциите.
Инсталиран инструмент, чийто daemon/socket/cluster не може да бъде достигнат,
се отчита като „Installed; query failed“ с причината, вместо да се приема,
че няма инстанции. Docker/Podman images се показват отделно от контейнерите.
## Изисквания
- Linux, Bash и Python 3
- `cat` и `python3` са задължителни за изпълнението на скрипта
- Всички VM/container CLI инструменти са незадължителни; липсващите се
отбелязват като „Not installed“
- За някои system-level инстанции може да са нужни допълнителни права; скриптът
не изисква root и показва грешка за съответния provider, ако няма достъп
## Употреба
```bash
./Virtualisation/virtualisation-check.sh
./Virtualisation/virtualisation-check.sh --help
```
| Опция | Описание |
|-------|----------|
| `-o`, `--output PATH` | Записва директно във файл; без тази опция предлага интерактивен запис |
| `-f`, `--format FORMAT` | Формат `txt`, `json` или `html` |
| `--force` | Позволява презапис на съществуващ файл без потвърждение |
| `-h`, `--help` | Показва помощта и приключва |
Без зададен `--format` форматът се разпознава от разширението на `--output`;
ако няма поддържано разширение, се използва TXT. При интерактивен запис
началният път е `~/virtualisation-report.<format>`, като TXT е форматът по
подразбиране. В non-interactive режим без `--output` отчетът се извежда към
stdout; `--format` определя сериализацията.
## Примери
```bash
# Интерактивна проверка и предложение за TXT отчет
./Virtualisation/virtualisation-check.sh
# JSON отчет във файл
./Virtualisation/virtualisation-check.sh --output "$HOME/virtualisation.json" --format json
# HTML отчет, разрешаващ презапис
./Virtualisation/virtualisation-check.sh --output /tmp/virtualisation.html --force
```
## Ограничения
Наличието на CLI binary означава, че решението е инсталирано, но не гарантира,
че daemon-ът му работи или че текущият потребител има права за достъп. Docker,
Podman, LXC/LXD/Incus и containerd показват само тези инстанции, които техният
локален CLI може да прочете. `kubectl` отчита cluster-ът от текущия context,
който може да е отдалечен. QEMU/KVM процесите се откриват през `/proc`; спрени
QEMU машини, които не се управляват от Libvirt/Proxmox/друг frontend, не могат
да бъдат изброени само по наличието на QEMU binary.