Смена 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 изменён!