Смена IP адреса узла в VMmanager 6
Недавно столкнулся с проблемой: нет возможности изменить IP адрес узла в VMmanager 6 через веб интерфейс. У меня удачно получилось изменить его вручную! И так начнём!
Заходим на узел который сменил IP и на нём заходим в docker конейнер vm_box:
# docker exec -it vm_box bash
Создаём скрипт который который сгенерирует нам все нужные сертификаты и приватные ключи:
cat <<EOF > ./new_certs.sh
#!/bin/bash
# generate server cert/key
ip=$1
# make server template
echo "country=XX" >> server.info
echo "state=XX" >> server.info
echo "locality=XX" >> server.info
echo "organization=XX" >> server.info
echo "cn=$ip" >> server.info
echo "encryption_key" >> server.info
echo "signing_key" >> server.info
echo "tls_www_server" >> server.info
# generate server private key
/usr/bin/certtool --generate-privkey > server_private_key.pem
#generate server certificate
/usr/bin/certtool --generate-certificate --template server.info --load-privkey server_private_key.pem --load-ca-certificate /etc/pki/CA/cacert.pem --load-ca-privkey /opt/ispsystem/vm/etc/vmmgr.pem --outfile server_cert.pem
# generate client cert/key
# make client template
echo "country=XX" >> client.info
echo "state=XX" >> client.info
echo "locality=XX" >> client.info
echo "organization=XX" >> client.info
echo "cn=XX" >> client.info
echo "encryption_key" >> client.info
echo "signing_key" >> client.info
echo "tls_www_client" >> client.info
# generate client private key
/usr/bin/certtool --generate-privkey > client_private_key.pem
# generate client certificate
/usr/bin/certtool --generate-certificate --template client.info --load-privkey client_private_key.pem --load-ca-certificate /etc/pki/CA/cacert.pem --load-ca-privkey /opt/ispsystem/vm/etc/vmmgr.pem --outfile client_cert.pem
# remove templates
rm -f server.info
rm -f client.info
EOF
XX заменяем на нужные Вам значения сертификата.
Далее делаем файл исполняемым и запускаем, передавая новый IP параметром:
# chmod +x ./new_certs.sh
# ./new_certs.sh 192.168.100.1
Где 192.168.100.1 — это новый IP адрес кластера который сменил IP.
Копируем новые сертификаты в libvirt:
# cp client_cert.pem /etc/pki/libvirt/clientcert.pem
# cp server_cert.pem /etc/pki/libvirt/servercert.pem
# cp server_private_key.pem /etc/pki/libvirt/private/serverkey.pem
# cp client_private_key.pem /etc/pki/libvirt/private/clientkey.pem
Теперь нам нужно скопировать сертификаты («client_cert.pem», «server_cert.pem», «server_private_key.pem», «client_private_key.pem») на сервер где установлен веб интерфейс VMmanager 6 и проделываем тоже самое что и на узле который сменил IP.
Проверяем будет ли ошибка сертификата при подключении:
# virsh connect qemu+tls://192.168.100.1/system
Где 192.168.100.1 — это IP адрес кластера который сменил IP адрес.
Теперь меняем IP в интерфейсе VMmanager 6:
Заходим в docker.
# docker exec -it mysql bash
Смотрим root пароль от MySQL:
# env | grep MYSQL_ROOT_PASSWORD
Подключаемся к базе:
# mysql -uroot -pПАРОЛЬ котрый мы получили выше
MySQL> use isp;
Получим нужную нам запись из таблицы с узлами:
MySQL> SELECT * FROM `vm_stat_settings` WHERE `id`=1;
Где 1 — это ID нужного нам узла.
Значение из столбца value должно быть на подобие:
{"name":"1.node.1","ip":"127.0.0.1","port":22,"timestamp":1575530631,"instance":"1"}
В этой строке заменим заменим старый IP 127,0,0,1 на нужный Вам. Теперь запишем новой значение:
MySQL> UPDATE `vm_stat_settings` SET `value`='ВАША НОВАЯ СТРОКА' WHERE `id`=1;
Где 1 — это ID нужного нам узла. Теперь меняем IP в других таблицах:
MySQL> UPDATE `vm_node` SET `ip_addr`='192.168.100.1', `vnc_addr`='192.168.100.1' WHERE `id`=1;
192.168.100.1 — это новый IP адрес узла, 1 — это ID узла который сменил IP.
На этом всё. IP адрес узла в VMmanager 6 изменён!