Для улучшения работы сайта мы используем файлы cookies. Оставаясь на сайте, вы соглашаетесь с политикой обработки персональных данных.

Ошибки в работе Keycloak после изменения FQDN Менеджера управления

1. Окружение

zVirt 4.3 и старше.

Исправлено в zVirt 5.0

2. Проблема

После изменения FQDN Менеджера управления:

  • Миграция ВМ не работает.

  • Не удается установить связь с внешним провайдером.

3. Решение

Для устранения проблемы необходимо запустить скрипт на Менеджере управления:

#!/bin/bash

manager=$(hostname)
domain=$(hostname -d)

mkdir /root/scriptwork
cd /root/scriptwork

# Переключение менеджера управления в режим глобального обслуживания
vds_he_host=$(/usr/share/ovirt-engine/dbscripts/engine-psql.sh -t -c "SELECT host_name FROM vds JOIN vms ON run_on_vds_name=vds_name WHERE vm_name='HostedEngine';" 2>/dev/null | xargs)
ssh -i /etc/pki/ovirt-engine/keys/engine_id_rsa root@$vds_he_host "hosted-engine --set-maintenance --mode=global"

# Перевыпуск engine.cer + jboss сертификатов

/usr/share/ovirt-engine/bin/pki-enroll-pkcs12.sh --name="engine" --password=mypass --subject="/C=US/O=$domain/CN=$manager" --keep-key --san="DNS:$manager"

/usr/share/ovirt-engine/bin/pki-enroll-pkcs12.sh --name="jboss" --password=mypass --subject="/C=US/O=$domain/CN=$manager" --keep-key --san="DNS:$manager"

systemctl restart ovirt-engine ovirt-provider-ovn zvirt-engine-backend

# Фикс ovirt-provider-ovn
user="test"

cp /etc/ovirt-provider-ovn/conf.d/10-setup-ovirt-provider-ovn.conf /etc/ovirt-provider-ovn/conf.d/10-setup-ovirt-provider-ovn.conf_$(date +%Y-%m-%d)

/usr/share/ovirt-engine/bin/ovirt-register-sso-client-tool.sh --client-id=$user --client-ca-location=/etc/pki/ovirt-engine/certs/engine.cer --callback-prefix-url=https://$(hostname):443/ovirt-engine/

secret=$(/usr/share/ovirt-engine/dbscripts/engine-psql.sh \
-c "SELECT client_secret FROM sso_clients WHERE client_id='$user';" \
| grep -o "[A-Za-z0-9]*" | head -n 3 | tail -n 1)

/usr/share/ovirt-engine/dbscripts/engine-psql.sh -c "UPDATE sso_clients SET client_secret='$secret' WHERE client_id='ovirt-provider-ovn';"

source ./99_sso_client.conf
encoded_pass=$(/usr/share/ovirt-engine/bin/ovirt-engine-crypto-tool.sh crypto-encode --password=pass:$SSO_CLIENT_SECRET)

sed -i "s#^ovirt-sso-client-secret=.*#ovirt-sso-client-secret=${encoded_pass}#g" /etc/ovirt-provider-ovn/conf.d/10-setup-ovirt-provider-ovn.conf
systemctl restart ovirt-provider-ovn.service ovirt-engine zvirt-engine-backend.service

# Отключение глобального обслуживания
ssh -i /etc/pki/ovirt-engine/keys/engine_id_rsa root@$vds_he_host "hosted-engine --set-maintenance --mode=none"

rm -rf /root/scriptwork