Files
StrixScripts/Virtualisation/virtualisation-check.md
T

73 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.