Preskočiť na obsah

ManageIQ

Východiskové prostredie a predpoklady

V tomto projekte je ManageIQ nasadený vo verzii Petrosian-1, ktorá beží na operačnom systéme CentOS Stream 8. Celá inštancia je hostovaná vo virtuálnom prostredí VMware s IP adresou 10.11.0.4 a je konfigurovaná s dvoma virtuálnymi diskami pre potreby systému a dát.

Pre LDAP/AD autentifikáciu je k dispozícii fakultný AD server s IP adresou 158.193.143.190. Keďže ide o autentifkačnú službu na báze Active Directory, je potrebné povoliť na sieťovej vrstve štandardné porty 389 (pre nešifrovaný LDAP) a hlavne 636 (pre LDAPS – šifrované spojenie). V rámci tohto projektu nebol k dispozícii dôveryhodný CA certifikát, preto bol v SSSD konfiguračnom súbore zvolený parameter ldap_tls_reqcert = never na deaktiváciu overovania certifikátu.

Zhrnutie predpokladov

  • ManageIQ verzia: Petrosian-1
  • Operačný systém: CentOS Stream 8
  • Virtualizačná platforma: VMware
  • IP adresa ManageIQ inštancie: 10.11.0.4
  • AD server: 158.193.143.190
  • Povolené porty: 389 (LDAP), 636 (LDAPS)
  • Certifikát: Nepoužitý, nastavené na never (ldap_tls_reqcert).

Inštalácia SSSD a základná konfigurácia

Pri konfigurácii SSSD sme vychádzali z verejne dostupnej dokumentácie ManageIQ LDAP.

Taktiež je vhodné pri konfigurácii postupovať podľa manuálových stránok:

  • man sssd-ldap.conf,
  • man ldap.conf,
  • man authconfig.

Táto dokumentácia predpokladá nainštalovaný balíček a potrebné nástroje ku SSSD. Ak nie sú nainštalované treba zadať príkaz:

dnf -y install realmd sssd oddjob oddjob-mkhomedir adcli samba-common-tools krb5-workstation

Ako prvé môžeme otestovať cez ldapsearch otestovanie AD server, či je funkčný a či vie vyhľadať používateľov v AD

LDAPTLS_REQCERT=never ldapsearch -x -H ldaps://158.193.143.190:636 -LLL \
    -b "dc=fri,dc=uniza,dc=sk" -s sub \
    -D "FRI\mako2" -W \
    "(objectclass=organizationalPerson)"

Ako bolo uvedené vyššie treba mať povolený port 636 a tento príkaz by nám mal vypísať všetkých používateľov na fakultnom AD servery.

Od verzie CentOS Stream 8 môžeme na ManageIQ použiť príkaz na konfiguráciu SSSD:

authselect select sssd --force

Tento príkaz nám automaticky nevytvorí súbor /etc/sssd/sssd.conf, avšak šablóna sssd.conf.erb je súčasťou ManageIQ, a môže byť použitá ako základ na vytvorenie súboru /etc/sssd/sssd.conf.

Preto použijeme tieto príkazy na vytvorenie súboru /etc/sssd/sssd.conf:

TEMPLATE_DIR="/opt/manageiq/manageiq-appliance/TEMPLATE"
mkdir -p /etc/sssd
cp ${TEMPLATE_DIR}/etc/sssd/sssd.conf.erb /etc/sssd/sssd.conf
chmod 600 /etc/sssd/sssd.conf

Následne sa pustíme do samotnej úpravy SSSD súboru:

sudo nano /etc/sssd/sssd.conf

Jednotlivé parametre, ktoré sme museli nakonfigurovať vidíme nižšie:

[sssd]
domains = fri.uniza.sk # Doména, ktorú SSSD spravuje
services = nss, pam, ifp # Povolené služby

[domain/fri.uniza.sk]
cache_credentials = true # Ukladanie prihlasovacích údajov lokálne
ldap_id_mapping = true # Automatické mapovanie ID používateľov a skupín

id_provider = ldap # Zdroj identity je LDAP
auth_provider = ldap # Zdroj autentifikácie je LDAP
chpass_provider = ldap # Zmena hesla cez LDAP
access_provider = ldap # Zdroj prístupových pravidiel je LDAP

ldap_uri = ldaps://158.193.143.190 # Adresa LDAP servera
ldap_tls_reqcert = never # Neoverovať platnosť TLS certifikátu LDAP servera
ldap_id_use_start_tls = False # Nepoužívať STARTTLS, ale LDAPS
ldap_default_bind_dn = FRI\mako2 # Používateľ pre LDAP bind
ldap_default_authtok_type = password # Typ autentifikačného tokenu
ldap_default_authtok = XXX # Heslo pre LDAP bind

ldap_schema = ad # Používa sa schéma Active Directory

ldap_user_object_class = user # Trieda objektov používateľov v LDAP
ldap_group_object_class = group # Trieda objektov skupín v LDAP
ldap_user_search_base = OU=People,DC=fri,DC=uniza,DC=sk # Kde hľadať používateľov
ldap_group_search_base = OU=Groups,DC=fri,DC=uniza,DC=sk # Kde hľadať skupiny
ldap_user_principal = sAMAccountName # Atribút používaný ako login
ldap_access_order = expire # Poradie kontroly prístupu
ldap_account_expire_policy = ad # Politika expirácie účtov podľa AD
ldap_force_upper_case_realm = true # Realm v uppercase

krb5_realm = FRI.UNIZA.SK # Kerberos realm
krb5_canonicalize = false # Nepoužívať kanonizáciu Kerberos mien

ldap_user_name = sAMAccountName # LDAP atribút pre meno používateľa
ldap_user_fullname = displayName # # LDAP atribút pre celé meno používateľa

ldap_user_uid_number = msSFU30UidNumber # UID číslo z atribútu MS SFU
ldap_user_gid_number = msSFU30GidNumber # GID číslo z atribútu MS SFU

ldap_group_name = cn # LDAP atribút pre názov skupiny
ldap_group_gid_number = msSFU30GidNumber # GID číslo skupiny

ldap_user_extra_attrs = mail, givenname, sn, displayname, domainname, samaccountname, gecos # LDAP extra atribúty

[nss]
homedir_substring = /home # Prefix pre domovské adresáre

[pam]
[sudo]
[autofs]
[ssh]
[pac]
[ifp]
user_attributes = +sAMAccountName, +gecos, +mail, +displayName, +givenName, +sN, +domainName
# Dodatočné atribúty používateľov
allowed_uids = apache, root, manageiq # Povolení používatelia
[session_recording]

Po týchto úpravách a tiež po každých ďalších je potrebné zadať príkaz na reštartovanie SSSD služby:

systemctl restart sssd

Testovanie SSSD aktualizácii

Najlepší spôsob, ako otestovať manuálne aktualizácie SSSD, je dotazovať sa na používateľa pomocou API systému správ (D-Bus). Keď sa správne vrátia atribúty používateľa a skupiny, je to dobrý znak, že externá autentifikácia by mala prebehnúť úspešne.

Aby príkaz dbus-send úspešne fungoval z príkazového riadku, SELinux musí byť nastavený do permisívneho režimu príkazom:

setenforce 0

Príklad dotazu na atribúty používateľa pre používateľa mako2. Tento dotaz primárne overuje nastavenia ldap_user_ atribútov v súbore sssd.conf.

dbus-send --print-reply --system --dest=org.freedesktop.sssd.infopipe /org/freedesktop/sssd/infopipe org.freedesktop.sssd.infopipe.GetUserAttr string:mako2 array:string:mail,givenname,sn,displayname,domainname

dbus-send_user.conf

Dotaz na skupiny používateľa mako2. Tento dotaz primárne overuje nastavenia ldap_group_ atribútov v súbore sssd.conf.

dbus-send --print-reply --system --dest=org.freedesktop.sssd.infopipe /org/freedesktop/sssd/infopipe org.freedesktop.sssd.infopipe.GetUserGroups string:mako2

dbus-send_groups.conf

Ďalším užitočným príkazom zadanom v CLI na otestovanie komunikácie s LDAP je príkaz:

id <user> teda v našom prípade id mako2

Tento príkaz zobrazí informácie o používateľovi, ako sú jeho UID, GID a zoznam všetkých skupín, do ktorých patrí.

id.conf

Tiež môžeme použiť príkaz:

getent passwd <user> teda getent passwd mako2

Tento príkaz vyhľadá používateľa v systéme prostredníctvom NSS (Name Service Switch), teda vrátane zdrojov ako LDAP, ak je nakonfigurovaný cez SSSD čo v našom prípade je.

getent_passwd.conf

Po dokončení testovania opäť povolíme režim vynucovania (enforcing) pre SELinux.

setenforce 1

Pri testovaní autentifikácie na zariadení, ak boli vykonané zmeny v LDAP a okamžite sa neprejavia pri autentifikácii, je potrebné vyčistiť cache SSSD nasledovne a potom test opakovať:

sss_cache -E

Logovanie

Ak nám niečo nefunguje je vhodné prezerať logy a hľadať chyby. Pri logovaní SSSD sú najdôležitejšie tieto súbory:

Log súbor Typ ladenia (debugging)
/var/log/sssd/sssd.log Komunikácia SSSD s procesmi
/var/log/sssd/sssd_fri.uniza.sk.log Komunikácia sssd-ldap s LDAP serverom
/var/log/sssd/sssd_ifp.log Získavanie informácií o používateľoch a skupinách z LDAP servera

Pre každý z uvedených log súborov je možné pridať atribút debug_level (s maximálnou hodnotou 9) do príslušnej sekcie súboru sssd.conf, nasledovne:

[ifp]
=>  debug_level = 9
    user_attributes = +sAMAccountName, +givenName, +sN, +displayName, +mail    
...

Konfigurácia Apache, SELinux a GUI ManageIQ

Vytvoríme si konfiguračné súbory pre Apache:

TEMPLATE_DIR="/opt/manageiq/manageiq-appliance/TEMPLATE"
cp ${TEMPLATE_DIR}/etc/pam.d/httpd-auth                         \
                    /etc/pam.d/httpd-auth
cp ${TEMPLATE_DIR}/etc/httpd/conf.d/manageiq-remote-user.conf       \
                    /etc/httpd/conf.d/
cp ${TEMPLATE_DIR}/etc/httpd/conf.d/manageiq-external-auth.conf.erb \
                    /etc/httpd/conf.d/manageiq-external-auth.conf

Následne nastavíme vhodné SELinux oprávnenia:

setsebool -P allow_httpd_mod_auth_pam on
setsebool -P httpd_dbus_sssd          on

Opäť reštartujeme služby:

systemctl restart sssd
systemctl restart httpd

Keď toto máme presunieme sa do GUI ManageIQ. Do webového prehliadača zadáme IP adresu MIQ 10.11.0.4, prihlásime sa ako správca a prejdeme do:

Settings > Application Settings > Access Control > Groups

V tejto časti je potrebné vytvoriť rovnaké názvy skupín ako sú na AD. Tiež im priradíme potrebné role. Klikneme vpravo hore na:

Configuration > Add a new group

add_a_new_group.conf

Na obrázku nižšie vidíme výstup z vytvorenej skupiny. Všimnime si, že názov skupiny sa zhoduje s názvom skupiny v AD, keď sme v CLI ManageIQ testovali SSSD.

group_in_MIQ.conf

Podobne vytvoríme aj ďalšie skupiny. Následne prejdeme do časti:

Settings > Application Settings > Settings

Vyberieme si server a presunieme sa na kartu Authentication, kde zmeníme tieto parametre:

  • Mode: vyberieme External (httpd)
  • Zaškrtneme: Get User Groups from External Authentication (httpd)

external_auth_in_guiMIQ.conf

Následne otestujeme prihlásenie cez GUI:

testing_gui_login.conf

Po úspešnej autentifikácii voči LDAP vidíme dashboard ManageIQ:

successful_login_gui.conf

V CLI ManageIQ môžeme zadať príkaz:

appliance_console

Kde vidíme, že External auth: je nastavená na fri.uniza.sk, tým pádom nám LDAP úspešne funguje.

appliance_console.conf

Migrácia z VMware do XEN orchestra

Keďže v nástroji VMware bežal na katedre jedine nástroj ManageIQ a katedra používa nástroj XEN orchestra, rozhodli sme sa po konzultácii s vedúcim projektu, že presunieme ManageIQ do XEN orchestra.

Mysleli sme si, že efektívne využijeme XEN funkciu V2V a teda automatický import virtuálneho stroja z nástroja VMware. Toto ale nefungovalo, pričom sme sa stretli s touto chybou:

error_v2v.conf

Rozhodli sme sa preto pre manuálny import diskov. Pred samotným importom diskov do XEN sme museli vykonať tieto kroky na ManageIQ vo VMware:

  • Odinštalovať Guest tools z VMware príkazom:
sudo dnf remove open-vm-tools open-vm-tools-desktop
  • Pridali sme potrebné XEN ovládače:
sudo nano /etc/dracut.conf
# at the end of the file add
add_drivers+=" xen-blkfront xen-netfront virtio_blk virtio_net "

Pričom celý postup nájdeme na: Add XEN drivers.

  • Vypli sme VM, spravili sme snapshot a manuálne exportovali oba disky.

Keď sa nám disky stiahnu importujeme ich do XEN orchestry. V časti:

Import > Disk

Podporované formáty diskov sú: VHD, VMDK alebo RAW.

Následne v XEN orchestra vytvoríme novú VM s týmito parametrami:

  • Template – CentOS Stream 8,
  • vCPUs – 4,
  • RAM – 16,
  • Install settings – zaškrtneme ISO (potom odstránime)
  • Network – VLAN11,
  • Disks – žiadny pripojíme importované z VMware,
  • Advanced – odškrtneme Boot VM after creation.

Po vytvorení VM sa presunieme na kartu Disks. Pripojíme oba importované disky. V časti Advanced upravíme Boot order, aby bol prvý Hard-Drive. A môžeme zaškrtnút možnosť Auto power on.

Následne VM zapneme a všetko by malo fungovať ako v nástroji VMware. Môžeme otestovať príkazmi aké boli ukázané v časti Testovanie SSSD aktualizácii.

Aktualizácia ManageIQ v rámci jednej VM

Pred samotnou aktualizáciou odporúčame urobiť snapshot VM, na ktorej beží ManageIQ.

Doteraz ManageIQ bola vo verzii Petrosian – 1 (2023). Medzičasom vyšla najnovšia stabilná verzia ManageIQ Quinteros – 2.2 (2024). Preto si ukážeme ako aktualizovať ManageIQ v konzole na najnovšiu stabilnú verziu. Postupujeme podľa oficiálnej dokumentácie Upgrade MIQ

Uistíme sa, že ManageIQ má aktualizované balíčky príkazom:

dnf update -y

Môžeme sa stretnúť s upozorneniami o verziách Ansible preto môžeme zadať:

dnf update –-nobest

Následne nainštalujeme nový balík manageiq-release RPM pre verziu, na ktorú chceme aktualizovať. V našom prípade je to verzia quinteros. V RPM repozitári prejdeme do adresára s vydaniami (release directory) a nájdeme najnovší balík manageiq-release. Pokračujeme do priečinka:4

  • non-nightly (nie nightly build),
  • potom do adresára el,
  • a do priečinka noarch pre konkrétnu verziu, na ktorú chceme prejsť.

Skopírujeme si URL adresu balíka manageiq-release RPM. V našom prípade URL vyzerá takto:

dnf install https://rpm.manageiq.org/release/17-quinteros/el8/noarch/manageiq-release-17.0-1.el8.noarch.rpm

Pred aktualizačným procesom zastavíme EVM server, ak je spustený príkazmi:

systemctl stop evmserverd
systemctl status evmserverd

Aktualizujeme balíčky s najnovšou verziu MIQ:

dnf update -y

Následne spustíme migráciu databázy príkazmi:

cd /var/www/miq/vmdb/
bundle exec rake db:migrate

Po úspešnej migrácii reštartujeme ManageIQ:

reboot

Overenie vykonáme príkazmi:

systemctl status evmserverd
appliance_console
cat /var/www/miq/vmdb/VERSION

Ako výsledok vidíme, že ManageIQ je teraz v najnovšej stabilnej verzii:

new_version_MIQ.conf

Záloha a obnova na novú VM

Pri tomto postupe vychádzame z dokumentácie Backup & Restore

Záloha

Na pôvodnej VM sa prihlásime do konzoly ako root. Zadáme príkaz:

appliance_console

Stlačíme akúkoľvek klávesu a vyberieme možnosť:

Create Database Backup (2)

A vyberieme kde bude záloha uložená. Východzím cieľovým úložiskom je:

/tmp/evm_db.backup

Buď ponecháme defaultné alebo zvolíme vlastné. Stlačíme enter.

Následne zvolíme možnosť:

Quit (17)

Vytvoríme archív, ktorý bude obsahovať všetky súbory príkazom:

tar -czvf /root/backup.tgz /tmp/evm_db.backup /var/www/miq/vmdb/GUID /var/www/miq/vmdb/certs/v2_key

Overenie, či sa nám záloha vytvorila urobíme príkazmi:

cd /root/
ls -la

backup

Obnova

Vytvoríme novú VM na hypervízore, v našom prípade XEN orchestra. Ako platformu teda zvolíme CentOS Stream 9 a pridáme ju do tej istej siete ako pôvodná VM so staršou verziou ManageIQ. Pridáme jej disk stiahnutý z oficiálnej stránky ManageIQ, ktorý obsahuje XEN ovládače. Disk musí byť vo formáte buď VHD, VMDK alebo RAW. Vytvoríme a pripojíme tiež nový prázdny disk pre databázu o veľkosti 300GB. Po načítaní nastavíme na tejto novej VM, základne parametre ako:

  • Meno,
  • Správny čas a časovú zónu,
  • IP adresu zatiaľ môžeme nechať z DHCP alebo nastavíme nejakú voľne dosutpnú,
  • Overíme sieťovú konektivitu na pôvodnú VM napríklad pomocou príkazu ping.

Potom si stiahneme archív, ktorý sme vytvorili počas zálohovania na starej VM, príkazom:

scp root@10.11.0.4/root/backup.tgz /

Následne sa presunieme do priečinka kde sme uložili archív príkazom:

cd /

Rozbalíme archív príkazom:

tar -zxf /backup.tgz

Ak chceme ušetriť priestor, tak archív potom zmažeme príkazom:

rm -f /backup.tgz

Spustíme príkaz:

appliance_console

Stlačíme akúkoľvek klávesu a keďže databáza ešte nebola konfigurovaná, tak zvolíme možnosť:

Configure Application (4)

Potom zvolíme možnosť:

Create Internal Database (1)

Potom zvolíme možnosť:

Configure this appliance as a messaging server (1)

Vyberieme si databázový disk. Ten, ktorý sme vytvorili a pripojili ako druhý, prázdny a s veľkosťou 300GB.

Odpovieme áno na otázku:

Should this appliance run as a standalone database server? (y)

Nastavíme heslo do databázy a odsúhlasíme konfiguráciu. Vyplníme hostname, meno a heslo a odpovieme nie na otázku:

Configure a new persistent disk volume? (N)

Potvrdíme konfiguráciu. Počkáme kým sa server úspešne nastaví. Ďalej zastavíme EVM server možnosťou:

Stop EVM Server Processes (11)

Zvolíme možnosť:

Restore Database From Backup (3)

Potvrdíme enterom. Odstránime zálohu po obnovení a viackrát potvrdíme, že sme si istí obnovou.

Should this file be deleted after completing the restore? (Y)

Po obnovení zapneme EVM server. Zvolíme preto možnosť:

Start EVM Server Processes (12)

A odpovieme áno na otázku:

Start ManageIQ? (Y)

Výsledok úspešnej obnovy. restore

Nezabudneme ešte preniesť alebo nanovo nakonfigurovať SSSD a HTTPD pre externú autentifikáciu. Môžeme si pomôcť dokumentáciou ku LDAP

Ešte doinštalujeme Linux Guest Tools príkazom:

dnf install xe-guest-utilities-latest -y

Keďže služba nie je štandardne povolená nezabudneme ju povoliť a zapnúť príkazmi:

systemctl enable xe-linux-distribution
systemctl start xe-linux-distribution