A blogban leírtak a szerzők saját véleménye, és nem a munkáltatójuké.

Openwsman telepítése CentOS-re

Az IRF tárgy keretében a konfigurációkezelés volt a téma, én ebből a WMI és WS-Management részt vittem. A WS-Managementet először a WinRM segítségével teszteltem, de ugye egy platformfüggetlen szabvány igazi próbája ha tényleg két különböző platformmal használjuk:-) Így aztán nekiálltam beállítani a tesztrendszer egyik Linux szerveren az openwsman nyílt forrású WS-Management implementációt. [Megjegyzés: a Linuxhoz sokkal kevésbé értek, mint a Windowshoz, így lehet, hogy jó pár dolgot lehetne egyszerűbben is csinálni].

Az első kihívást rögtön az jelentette, hogy igazából kevés disztribúcióhoz van stabil csomag belőle. RPM Search-ön Suse-ra van, RPMFind-on Fedora-hoz van csomag, Ubuntu-ban is van most már valami (bár csak a szerver része, a wsmancli parancssori eszközt rakja fel, és 2.0, nem pedig a 2.1-es), viszont CentOS-re nem találtam semmit.  (Lehet, hogy a fedoras jó lenne hozzá, de ezt csak később találtam meg. Meg egyébként is, ez alapján remélhetőleg másfajta rendszerekre is felmegy.) Így aztán lehet forrásból telepíteni:)

A wsmancli parancssoros eszközt külön lehet letölteni, azonban szükséges a fordításához az openwsman, így először azt kell telepíteni.

1. Forrás letöltése

A SourceForge-ról letölthető a forrás, jelenleg a 2.1-es az aktuális. Ezekről a linkekről tölthetőek le:

# wget http://fastbull.dl.sourceforge.net/sourceforge/openwsman/wsmancli-2.1.0.tar.bz2
# wget http://freefr.dl.sourceforge.net/sourceforge/openwsman/openwsman-2.1.0.tar.bz2

Utána kitömörítjük:

# tar xvf openwsman-2.1.0.tar.bz2
# tar xvf wsmancli-2.1.0.tar.bz2

2. openwsman lefordítása és telepítése

Olvassuk el a README-t, ebben leírják (jobbára:) a telepítés és konfigurálás menetét. A telepítés a szokásos ./configure, make, make install hármassal végezhető el. A ./configure-nak egy fontos paramétere van, ez pedig a –sysconfdir. Ezzel lehet megadni, hogy a /etc alá rakja a konfigurációs fájlt, és ne az alapértelmezett /usr/local/etc-be. Én most ezt nem használom, hanem az alapértelmezett beállításokkal futtatom.

# ./configure
# make
# make install

Ahogy azt a README-ben is írják, jó néhány egyéb csomagra szükség van az openwsman-hoz. Idemásolom, hogy a ./configure mire panaszkodik, és ehhez milyen csomagok kellenek:

configure: error: no acceptable C compiler found in $PATH --> gcc
checking for XML... configure: error: Package requirements (libxml-2.0) were not met --> libxml2-devel
configure: error: the curl-config script installed by libcurl could not be found.  libcurl is required for tests. --> curl-devel

A fordítás során még majd panaszkodik majd, hogy a g++ parancsot nem találja, ehhez a gcc-c++ csomagra van szükségünk. Úgyhogy ezeket telepíteni kell a yum segítségével:

# yum install gcc
# yum install gcc-c++
# yum install libxml2-devel
# yum install curl-devel

A fordítás ezután eltart egy darabig, de ha minden jól megy, akkor nincsen hiba, és lehet a make install segítségével telepíteni. A telepítés során kiír egy fontos dolgot (amit én elsőre nem is vettem észre, pedig megspórolt volna némi keresgélést utána:):

Libraries have been installed in:
   /usr/local/lib/openwsman/

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

Igen, később a wsman pl. nem fogja megtalálni az openwsman megosztott könyvtárait (shared library). Ezen vagy az LD_LIBRARY_PATH beállításával segítünk minden egyes alkalommal/felhasználóra, vagy egyszer és mindenkorra megoldjuk az /etc/ld.so.conf szerkesztésével:

# echo "/usr/local/lib" >> /etc/ld.so.conf
# ldconfig

3. wsmancli lefordítása és telepítése

Az előzőek után a wsmancli telepítése könnyen megy. Nekem egy buktató volt, a pkg-config nem találta meg az openwsman-t:

No package 'openwsman' found

Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Ezt a javasolt megoldással lehet orvosolni (az elérési utat értelemszerűen módosítsuk, ha máshova raktuk az openswman forrását)

# export PKG_CONFIG_PATH=/root/openwsman/openwsman-2.1.0

Ha települt, wsman –help segítségével meg lehet nézni, hogy elindul-e. (Megjegyzés: kicsit furcsa az elnevezés. A letöltött fájl neve wsmancli, a parancs neve wsman, míg a honlapon openwsman CLI néven hivatkoznak rá:)

4. openwsmand konfigurálása

Ahhoz, hogy le tudjuk tesztelni helyi gépen belül, hogy működik-e mind az openwsmand, mind a wsman, először be kell konfigurálnunk az openwsmandt. Ha ugyanis elindítjuk most az opendwsman -d paranccsal (a -d hatására nem a háttérben indul, és debug üzeneteket ír ki a konzolra), akkor a következő hibát kapjuk:

Cannot parse file [/usr/local/etc/openwsman/openwsman.conf]

A /usr/local/etc/openwsman könyvtárban tényleg nincs konfig fájl, ott csak egy owsmangencert.sh shell script van. A README-ben benne van egy minta, hogy hogyan kéne kinéznie egy ilyen konfig fájlnak, azonban egyszerűbb, ha átmásoljuk a forrásban lévő mintát, és azt módosítjuk:

# cp /root/openwsman/openwsman-2.1.0/etc/openwsman.conf  /usr/local/etc/openwsman/

Ahhoz, hogy működjön, legalább egy hitelesítési módszert be kell állítani. Ez Digest vagy Basic, érdemes kezdésből a Basic-et beállítani. Ehhez a felhasználókat tudja egy fájlból olvasni (basic_password_file), vagy PAM modul segítségével használni a rendszer felhasználóit. Ha bekapcsoljuk a PAM használatát, akkor a következőre panaszkodik:

Could not dlopen /usr/local/lib/openwsman/authenticators/libwsman_pam_auth.so

És tényleg nincs ott, csak a libwsman_file_auth.so van abban a könyvtárban. Ha megnézzük a forrást, akkor az src/authenticators/pam alatt van ez a modul, de ez nem is fordult le. Amikor megpróbáltam lefordítani, egy csomó hibát dobott:) Az src/authenticators könyvtárban lévő Makefile.am-ben látszik, hogy a pam tartalmát csak akkor fordítaná le, ha megadtuk volna az USE_PAM opciót (gondolom ezt a configure-nak kellett volna átadni). Így aztán maradtam a basic_password_file megoldásnál, ilyenkor htpasswd segítségével kell egy fájlba eltároltani a felhasználókat és jelszavukat. Hozzuk létre ezt a fájlt, és adjuk is hozzá a micskeiz felhasználót:

# htpasswd -c simple_auth.passwd micskeiz
New password:
Re-type new password:
Adding password for user micskeiz

Most már csak át kell írni a konfig fájlban, hogy a simple_auth.passwd-t ne a /etc/openwsman könyvtárban, hanem a /usr/local/etc/openwsman-ban keresse, és ezután elindul az openwsmand:

openwsmand-started

5. SSL beállítás az openwsmand-hez

Mivel majd távolról is szeretnénk elérni az openmanwsd-t, jó lenne, ha mindez titkosított csatornán menne. Ehhez először is le kell generálni egy tanúsítványt a szervernek, majd beállítani a konfig fájlban, hogy használja ezt. A /usr/local/etc/openwsman könyvtárban van egy owsmangencrt.sh nevű script, ami elvégzi a tanúsítvány elkészítését, azonban ehhez kell neki egy ssleay.conf, ami megadja az alapbeállításokat. Ezt valamiért nem másolja ide a telepítő, úgyhogy rakjuk ide mellé:

# cp /root/openwsman/openwsman-2.1.0/etc/ssleay.cnf /usr/local/etc/openwsman/

Ha megnézzük a scriptet, van egy ilyen rész benne: CERTFILE=${prefix}/etc/openwsman/servercert.pem. A ${prefix} változót a telepítő nem állította jól be, így ezt még nekünk kell megtenni, különben értelemszerűen nem találja majd ezt a könyvtárat:

# export prefix=/usr/local

Ezen kívül még futtathatóvá kell tenni a scriptet:

# chmod u+x owsmangencert.sh

Ha lefuttatjuk a scriptet, akkor megkérdezi, hogy milyen adatok szerepeljenek a tanusítványon. Ebből igazából tesztrendszer esetén csak a szervernév a lényeg.

openwsman-cert-genHa megnézzük ls-sel, akkor szépen legenerálta a kulcs és a tanúsítvány fájlt is.

Ezután már csak ki kell szedni a #-t a configban az SSL port elöl, át kell írni az ssl_cert_file és ssl_key_file paraméterekben az elérési utat, és a -S paraméterrel indítani az openwsmand-t:

# openwsmand -d -S

Hát, ez sajnos nem jött össze:-), a következő hibaüzenetet dobja:

openwsman-ssl-errorAzt mondja, hogy nem tudja olvasni a /usr/local/etc/openwsman/servercert.pem fájlt, holott elvileg ott van, és van is mindenkinek olvasási joga:( Ebben a fórumbejegyzésben jelentettek hasonló hibát:

openwsman 2.0.0, 2.1.0 does not run with ssl

Ennek megfelelően javítottak a kódban is, ha megnézzük a config.c fájlt az openwsman projekt Browse source részénél, akkor a legutóbbi változtatás (Changeset 3052) pont ezt a bugot javítja:

openwsman Changeset 3052

Megpróbáltam módosítani ennek megfelelően a /root/openwsman/openwsman-2.1.0/src/server/shttpd/config.c fájlt (Jó is az olyan telepítés, amikor a kódba kell beleírni;-), utána újrafordítani az openwsmand-t (a server könyvtárban make clean, majd make), utána felülírni az új verzióval a régit (cp openwsmand /usr/local/sbin/), de ugyanazt a hibaüzenetet adta. Lehet, hogy más is változott a szeptemberi release óta, és az egész kódhoz a legfrissebb forrást kellett volna leszedni.

Úgyhogy egyelőre az SSL nem működik:)

6. Lokális teszt a wsman segítségével

Zárásként ellenőrizzük, hogy helyileg tudunk-e kapcsolódni az openwsmand-hez, miután elindítottuk:

#  wsman identify -h chicago

Szépen működik is, válaszol az identify kérésre megfelelő hitelesítés után:

openwsman-successHát, ennyi lett volna. Olyan érzésem volt, mintha a telepítő részét nem sikerült még utánahúzni a kódnak, egy csomó alapbeállítás még régi értékeket tükröz (pl. /etc/openwsman-ra mutat minden, holott alapból a /usr/local/etc-be rakja). De az SSL-es bugot leszámítva egyelőre működött minden.

1 comment to Openwsman telepítése CentOS-re

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>