Add virtualization inventory report
This commit is contained in:
1 parent
43518d51cc
commit
ace93c721f
3 files changed
+713
No files matched your search
@@ -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.
|
||||
Reference in new issue
Block a user