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:
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:
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:
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:
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:
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

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

Ďalším užitočným príkazom zadanom v CLI na otestovanie komunikácie s LDAP je príkaz:
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í.

Tiež môžeme použiť príkaz:
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.

Po dokončení testovania opäť povolíme režim vynucovania (enforcing) pre SELinux.
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ť:
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:
Opäť reštartujeme služby:
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:
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:

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.

Podobne vytvoríme aj ďalšie skupiny. Následne prejdeme do časti:
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)

Následne otestujeme prihlásenie cez GUI:

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

V CLI ManageIQ môžeme zadať príkaz:
Kde vidíme, že External auth: je nastavená na fri.uniza.sk, tým pádom nám LDAP úspešne funguje.

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:

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:
- 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:
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:
Môžeme sa stretnúť s upozorneniami o verziách Ansible preto môžeme zadať:
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:
Aktualizujeme balíčky s najnovšou verziu MIQ:
Následne spustíme migráciu databázy príkazmi:
Po úspešnej migrácii reštartujeme ManageIQ:
Overenie vykonáme príkazmi:
Ako výsledok vidíme, že ManageIQ je teraz v najnovšej stabilnej verzii:

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:
Stlačíme akúkoľvek klávesu a vyberieme možnosť:
A vyberieme kde bude záloha uložená. Východzím cieľovým úložiskom je:
Buď ponecháme defaultné alebo zvolíme vlastné. Stlačíme enter.
Následne zvolíme možnosť:
Vytvoríme archív, ktorý bude obsahovať všetky súbory príkazom:
Overenie, či sa nám záloha vytvorila urobíme príkazmi:

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:
Následne sa presunieme do priečinka kde sme uložili archív príkazom:
Rozbalíme archív príkazom:
Ak chceme ušetriť priestor, tak archív potom zmažeme príkazom:
Spustíme príkaz:
Stlačíme akúkoľvek klávesu a keďže databáza ešte nebola konfigurovaná, tak zvolíme možnosť:
Potom zvolíme možnosť:
Potom zvolíme možnosť:
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:
Nastavíme heslo do databázy a odsúhlasíme konfiguráciu. Vyplníme hostname, meno a heslo a odpovieme nie na otázku:
Potvrdíme konfiguráciu. Počkáme kým sa server úspešne nastaví. Ďalej zastavíme EVM server možnosťou:
Zvolíme možnosť:
Potvrdíme enterom. Odstránime zálohu po obnovení a viackrát potvrdíme, že sme si istí obnovou.
Po obnovení zapneme EVM server. Zvolíme preto možnosť:
A odpovieme áno na otázku:
Výsledok úspešnej obnovy.

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:
Keďže služba nie je štandardne povolená nezabudneme ju povoliť a zapnúť príkazmi: