В данной заметке рассматривается вопрос быстрого поднятия гипервизора Qemu-KVM на базе CentOS 7 с удобным управлением сервера. В качестве интерфейса управления будет Cockpit.
Cockpit по умолчанию включен в CentOS 8, но его нет в 7-ке.
Итак, имеем сервер с установленным CentOS 7, включен Firewall и SELinux.
Проверим включена ли поддержка виртуализации:
egrep -c '(vmx|svm)' /proc/cpuinfo
Если ответ положительное число (больше нуля), то включена.
Установим гипервизор, библиотеки, утилиты управления и пакет для работы с bridge:
yum install qemu-kvm libvirt virt-install bridge-utils
Установим Cockpit:
yum install cockpit cockpit-networkmanager cockpit-dashboard cockpit-storaged cockpit-packagekit cockpit-docker cockpit-machines cockpit-selinux
Кроме основных пакетов ставим пакеты управления хранилищами, пакетами, виртуальными машинами, контенерами docker и selinux.
Поддерживаемые расширения для Cockpit — https://cockpit-project.org/applications.html
Запустим:
systemctl enable --now cockpit.socket
Настройки firewall:
firewall-cmd --permanent --add-service=cockpit
firewall-cmd --reload
Дальнейшие настройки будет производить через веб: https://ip.address:9090
Создаем bridge для соединения виртуальных машин к сети:
После создания bridge основное сетевое подключение исчезнет.
Перейдем на вкладку Virtual Machines и запустим гипервизор:
Можно создавать виртуальные машины. Список поддерживаемых гостевых ОС можно посмотреть:
osinfo-query os
Создадим ВМ на Debian:
Из минусов не нашел редактора конфигурации ВМ, но есть классический путь:
virsh edit {vm_name}
Рассмотрим еще одну возможность управления через Cockpit контейнерами:
Создадим контейнер c Nginx:
Запустим и настроим порт
Тут же можно управлять лимитами и рессурсами для контейнера.
Наш Nginx будет доступен по адресу сервера на порту 8080.
Данное решение, конечно, не покрывает все необходимые задачи управления гипервизором, но простые вещи, такие как создание, удаление, остановка и перезапуск ВМ вполне могут быть закрыты через простой и понятный веб-интерфейс.
Для того чтоб не root пользователь мог совершать действия с виртуальными машинами, необходимо его включить в соотвествующие группы:
usermod -aG libvirt $USER
usermod -aG kvm $USER
Аналогично для Docker:
usermod -aG docker $USER