dimarts, 21 d’abril de 2015

Centos 7 installation with LVM (and still alive)

Introducció:

L'objectiu d'aquest tutorial es configurar una maquina virtual amb KVM com a hipervisor i CentOS 7 amb LVM. La màquina virtual constara de 2 discs durs de 8Gb i de dos Volume Groups, un per a sistema i l'altre per a dades. Aquest tutorial ha sigut realitzat amb una màquina amb 4Gb de RAM i un Intel Core 2 Duo.

KVM

Per a la creació de les màquines virtuals KVM utilitzarem la ferramenta virt-manager. La màquina virtual que generarem seguidament tindrà la següent configuració.
  • 1 CPU
  • 1024mb RAM
  • 2 Disc durs de 8Gb
Per a crear una màquina cliquem amb el boto dret damunt de localhost(QEMU) i seleccionem "Nuevo".


En la següent pantalla li posem un nom a la màquina virtual, en el nostre cas test-lvm i seleccionem "Adelante".


A continuació seleccionem la imatge del DVD a instal·lar que per a nosaltres serà CentOS 7.


Seguidament seleccionarem la CPU i la RAM que assignarem a la màquina virtual. Per a nosaltres serà 1 CPU i 1024 Mb de RAM.


Tot seguit li assignem un disc dur de 8Gb.


En la següent pantalla marquen la casella de "Personalizar la configuración antes de instalar".


Seleccionem el Disc Dur i cliquem sobre "Añadir Hardware".


I afegim un segon disc dur de 8Gb de tipus SATA. Seleccionem finalitzar i en la següent pantalla cliquem "Iniciar la Instalación" en la part superior.


Una volta arribats ací ens apareixerà ja la pantalla d'instal·lació estàndar de Centos 7.

Configuració LVM

Al finalitzar aquesta secció el nostre objectiu es tenir una distribució centos instal·lada amb les següents particions:
  • Swap 1024 Mb
  • /boot 512 Mb en una particio estandar
  • / 6gb sobre un volume group anomenat systemvg que comparteix disc swap i amb boot. El volume podra ser expandit 600mb
  • /home 6Gb sobre un volume group anomenat datavg en el segon disc
Començarem la instal·lacio de la distribució. Seleccionarem Anglès com a l'idioma durant l'instal·lació i fem clic a "Continue"


Seleccionem la opció "Installation Destination".


A continuació seleccionem els dos discs en la secció "Local Standard Disks" i després marquem en la secció "Other Storage Options" la opció "I will configure partitioning".


Seguidament començarem amb la configuració de les particions amb LVM. Aquesta configuració ha resultat extremadament difícil. El programa de configuració es extremadament limitat. Seleccionem "LVM" i seleccionem "+".


Començarem configurant la particio /home, com a mount point introduïm /home i 6Gb serà l'espai reservat. Cliquem "Add Mount Point". Si no configurem primer aquest volume, l'instal·lador es torna boig i no funciona amb 2 volums. Per tant aquesta ha sigut l'unica forma de conseguir la configuració dessitjada.


Després fem clic a "Modify..." per configurar el volum.


Canviem el Name del volume a "datavg", seleccionem el 2n disc i marquem la Size Policy com a "As Large as possible". Cliquem "Save".


Seguidament fem clic a "Update Settings" i ens assegurem que el disc marca que té 2.18Gb per extendre. Seleccionem "+".


Seleccionem "swap" com a Mount Point i assignem 1024Mb a la mida de la partició. Fem clic en "Add Mount Point".


Tot seguit canviem el Device Type a "Standard Partition". Fem clic en "Update Settings".


Seleccionem la partion swap, cliquem en la clau anglesa(Configure Mount Point), elegim el primer disc i cliquem "Select".


A continuació fem clic en "Update Settings". El name el marcara com sda1. Cliquem en +.


Seleccionem /boot com a mountpoint i 512Mb com a la mida de la partició. Cliquem en Add mount point.


Si la partició /boot s'ha creat com a sda2. Cliquem en "+" per agregar l'última partició.

A continuació configurem "/" com a mount point i 1Mb com a mida de la partició.


Ens assegurem que el Device Type es "LVM". Fem clic a "Modify...".


Seleccionem el primer disc, mantenim "centos" com el nom del volume group. Fem clic a "Save".


Fem clic a Update Settings. Tornem a fer clic a "Modify...".


Configurem el name del volume group com a "systemvg" i configurem la size policy com a "As large as possible". Fem clic a "Save".


Configurem el Name com a "slash" i la mida de la particio com a 6Gb. Cliquem "Update Settings".


Seleccionem la partició /home i fem clic en "Modify...". Una volta dins del volum datavg seleccionem la size policy com "As large as possible". Després "Save".


Fem clic a "Update Settings" i revisem que tot estiga correcte. Una volta tot esta correcte fem clic en "Done".


Apareixerà un resum dels canvis i cliquem en "Accept Changes". Després seleccionem "Begin Installation".


Com es pot veure a l'accedir a la màquina virtual una volta instal·lada, la instal·lació es correcta:
[root@localhost ~]# pvs
  PV         VG       Fmt  Attr PSize PFree  
  /dev/sda2  systemvg lvm2 a--  6.50g 652.00m
  /dev/sdb1  datavg   lvm2 a--  8.00g   2.14g
[root@localhost ~]# vgs
  VG       #PV #LV #SN Attr   VSize VFree  
  datavg     1   1   0 wz--n- 8.00g   2.14g
  systemvg   1   1   0 wz--n- 6.50g 652.00m
[root@localhost ~]# lvs
  LV    VG       Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  home  datavg   -wi-ao---- 5.86g                                             
  slash systemvg -wi-ao---- 5.86g      

Configurar la xarxa

Una volta tenim access a la màquina al finalitzar la instal·lació només hem d'editar la conifuació de xarxa per tenir accés desde la consola.
 vi /etc/sysconfig/network-scripts/ifcfg-ens3 
Editem el fitxer amb els següents parametres:
HWADDR=52:54:00:42:7C:45
TYPE=Ethernet
BOOTPROTO=none
IPADDR=192.168.122.50
NETMASK=255.255.255.0
NAME=ens3
UUID=01c931d2-236b-4fb9-b01c-c032137fee01
ONBOOT=no
Una volta configurat fem un up de la interficie amb:
ifup ens3
I ja està tot configurat i accessible desde fora com podem veure:
[user@localhost ~]$ ip addr show
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens3:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:42:7c:45 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.50/24 brd 192.168.122.255 scope global ens3
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe42:7c45/64 scope link 
       valid_lft forever preferred_lft forever

Enllaços:

http://www.ictdude.com/howto/install-centos-7-software-raid-lvm/

dijous, 2 d’abril de 2015

Xymon Client 4.3.19 for RHEL 7 RPM Creation

Introducció:

L'objectiu d'aquest document es entendre com funciona la generació d'RPMs i generar un rpm a mida per a la instal·lació del client de xymon 4.3.19 per a RHEL 7.

Creació d'un RPM

Per a generar paquets RPM hem d'instal·lar el següents paquets:
yum install rpm-build rpmdevtools
Creem un usuari no privilegiat per a realitzar la compil·lació.
useradd developer
passwd developer
su developer
A continuació creem l'estructura per a la genaració del RPM, aquesta comanda generarà un directori amb el nom rpmbuild d'on penjaran tots els directoris i fitxers necessaris per a la seua generació.
cd ~/
rpmdev-setuptree
Per a la generació del RPM copiem en el directori /home/developer/rpmbuild/SOURCES/ els següents fitxers:
  • xymon-4.3.19.tar.gz
  • client-ext/
  • 98-xymonlaunch.present
  • xymon-client.default
  • xymon-client.service
  • xymon-init.d
  • xymonlaunch
  • xymonlaunch.service
  • xymon.logrotate
També creem un fitxer xymon.spec en /home/developer/rpmbuild/SPECS/
La configuració dels següents fitxers s'ha realitzar utilitzant com a base els fitxers de rpm proporcionats dins de la configuració del tar.gz de xymon i els rpms de terrabithia (veure enllaços del final).

El contingut del fitxer xymon.spec es el següent:
Name: xymon
Version: 4.3.19
Release: 1
Group: Networking/Daemons
URL: http://xymon.sourceforge.net/
License: GPL
Source: xymon-4.3.19.tar.gz
Source1: xymon.logrotate
Source2: xymonlaunch
Source3: xymon-client.default
Source4: client-ext
Source5: xymonlaunch.service
Source6: 98-xymonlaunch.preset
Source7: xymon-client.service
Summary: Xymon network monitor
BuildRoot: /tmp/xymon-root
#BuildRequires: openssl-devel
#BuildRequires: pcre-devel
#BuildRequires: rrdtool-devel
#BuildRequires: openldap-devel
Conflicts: xymon-client

%description
Xymon (previously known as Hobbit) is a system for monitoring 
your network servers and applications. This package contains 
the server side of the Xymon package.

%package client
Summary: Xymon client reporting data to the Xymon server
Group: Applications/System
Conflicts: xymon

%description client
This package contains a client for the Xymon (previously known
as Hobbit) monitor. Clients report data about the local system to 
the monitor, allowing it to check on the status of the system 
load, filesystem utilisation, processes that must be running etc.

%prep
rm -rf $RPM_BUILD_ROOT

%setup
        USEXYMONPING=y \
        ENABLESSL=y \
        ENABLELDAP=y \
        ENABLELDAPSSL=y \
        XYMONUSER=xymon \
        XYMONTOPDIR=/usr/lib/xymon \
        XYMONVAR=/var/lib/xymon \
        XYMONHOSTURL=/xymon \
        CGIDIR=/usr/lib/xymon/cgi-bin \
        XYMONCGIURL=/xymon-cgi \
        SECURECGIDIR=/usr/lib/xymon/cgi-secure \
        SECUREXYMONCGIURL=/xymon-seccgi \
        HTTPDGID=apache \
        XYMONLOGDIR=/var/log/xymon \
        XYMONHOSTNAME=localhost \
        XYMONHOSTIP=127.0.0.1 \
        MANROOT=/usr/share/man \
        INSTALLBINDIR=/usr/lib/xymon/server/bin \
        INSTALLETCDIR=/etc/xymon \
        INSTALLWEBDIR=/etc/xymon/web \
        INSTALLEXTDIR=/usr/lib/xymon/server/ext \
        INSTALLTMPDIR=/var/lib/xymon/tmp \
        INSTALLWWWDIR=/var/lib/xymon/www \
        ./configure

%build
        PKGBUILD=1 make

%install
        INSTALLROOT=$RPM_BUILD_ROOT PKGBUILD=1 make install
        mkdir -p $RPM_BUILD_ROOT/etc/logrotate.d
        cp %{SOURCE1} $RPM_BUILD_ROOT/etc/logrotate.d/xymon
        mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
        cp %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/xymon-client
        cp %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/xymonlaunch
        mkdir -p $RPM_BUILD_ROOT/usr/bin
        cd $RPM_BUILD_ROOT/usr/bin && ln -sf ../lib/xymon/server/bin/{xymon,xymoncmd} .
        mkdir -p $RPM_BUILD_ROOT/etc/httpd/conf.d
        mv $RPM_BUILD_ROOT/etc/xymon/xymon-apache.conf $RPM_BUILD_ROOT/etc/httpd/conf.d/
        rmdir $RPM_BUILD_ROOT/usr/lib/xymon/client/tmp
        cd $RPM_BUILD_ROOT/usr/lib/xymon/client && ln -sf /tmp tmp
        rmdir $RPM_BUILD_ROOT/usr/lib/xymon/client/logs
        cd $RPM_BUILD_ROOT/usr/lib/xymon/client && ln -sf ../../../../var/log/xymon logs
        mv $RPM_BUILD_ROOT/usr/lib/xymon/client/etc/xymonclient.cfg /tmp/xymonclient.cfg.$$
        cat /tmp/xymonclient.cfg.$$ | sed -e \
        's!^XYMSRV=.*!include /etc/sysconfig/xymon-client!' | grep -v \
        "^XYMSERVERS=" >$RPM_BUILD_ROOT/usr/lib/xymon/client/etc/xymonclient.cfg
        rm /tmp/xymonclient.cfg.$$
        cp -r %{SOURCE4} $RPM_BUILD_ROOT/usr/lib/xymon/client/ext/
        mv $RPM_BUILD_ROOT/usr/lib/xymon/client/ext/client-ext/*   \ 
        $RPM_BUILD_ROOT/usr/lib/xymon/client/ext/
        rmdir $RPM_BUILD_ROOT/usr/lib/xymon/client/ext/client-ext
        mkdir -p $RPM_BUILD_ROOT/run/xymon
        mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/
        mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system
        mkdir -p $RPM_BUILD_ROOT/usr/lib/systemd/system-present
        cp %{SOURCE5} $RPM_BUILD_ROOT/usr/lib/systemd/system/
        cp %{SOURCE7} $RPM_BUILD_ROOT/usr/lib/systemd/system/
        cp %{SOURCE6} $RPM_BUILD_ROOT/usr/lib/systemd/system-present/

%clean
rm -rf $RPM_BUILD_ROOT


%pre
id xymon 1>/dev/null 2>&1
if [ $? -ne 0 ]
then
   groupadd xymon || true
   useradd -g xymon -c "Xymon user" -d /usr/lib/xymon xymon
fi

%pre client
id xymon 1>/dev/null 2>&1
if [ $? -ne 0 ]
then
   groupadd xymon || true
   useradd -g xymon -c "Xymon user" -d /usr/lib/xymon xymon
fi

%post client
systemctl enable xymon-client.service

%preun client
systemctl stop xymon-client
systemctl disable xymon-client

%files
%attr(-, root, root) %doc README README.CLIENT Changes* COPYING CREDITS RELEASENOTES
%attr(644, root, root) %doc /usr/share/man/man*/*
%attr(644, root, root) %config /etc/xymon/*
%attr(644, root, root) %config /etc/httpd/conf.d/xymon-apache.conf
%attr(755, root, root) %dir /etc/xymon 
%attr(755, root, root) %dir /etc/xymon/tasks.d
%attr(755, root, root) %dir /usr/lib/xymon/server/download
%attr(755, root, root) %dir /etc/xymon/web
%attr(755, xymon, xymon) %dir /var/log/xymon
%attr(644, root, root) /etc/logrotate.d/xymon
%attr(-, root, root) /usr/lib/xymon
%attr(-, root, root) /usr/bin/*
%attr(-, xymon, xymon) /var/lib/xymon
%attr(775, xymon, apache) %dir /var/lib/xymon/www/rep
%attr(775, xymon, apache) %dir /var/lib/xymon/www/snap
%attr(644, root, root) %config /var/lib/xymon/www/menu/xymonmenu-grey.css
%attr(644, root, root) %config /var/lib/xymon/www/menu/xymonmenu-blue.css
%attr(755, xymon, xymon) %dir /usr/lib/xymon/client/ext
%attr(664, xymon, apache) %config /etc/xymon/critical.cfg
%attr(664, xymon, apache) %config /etc/xymon/critical.cfg.bak
%attr(4750, root, xymon) /usr/lib/xymon/server/bin/xymonping
%attr(750, root, xymon) /usr/lib/xymon/client/bin/logfetch
%attr(750, root, xymon) /usr/lib/xymon/client/bin/clientupdate

%files client
%attr(-, root, root) %doc README README.CLIENT Changes* COPYING CREDITS RELEASENOTES
%attr(-, root, root) /usr/lib/xymon/client
%attr(644, root, root) %config /etc/sysconfig/xymon-client
%attr(644, root, root) %config /etc/sysconfig/xymonlaunch
%attr(644, root, root) %config /usr/lib/systemd/system/xymonlaunch.service
%attr(644, root, root) %config /usr/lib/systemd/system/xymon-client.service
%attr(644, root, root) %config /usr/lib/systemd/system-present/98-xymonlaunch.preset
%attr(755, xymon, xymon) %dir /var/log/xymon
%attr(755, xymon, xymon) %dir /usr/lib/xymon/client/ext
%attr(755, xymon, xymon) %config /usr/lib/xymon/client/ext/*
%attr(750, root, xymon) /usr/lib/xymon/client/bin/logfetch
%attr(750, root, xymon) /usr/lib/xymon/client/bin/clientupdate
%attr(644, root, root) /run/xymon/
En client_ext tenim els scripts a mida que comproben determinats monitors. A continuació el contingut dels següents fitxer importants, en xymon-client.default tenim el següent:
XYMSRV="0.0.0.0"
XYMSERVERS="192.168.1.2 192.168.1.3"
En xymon-client.service tenim el init script de xymon per a Redhat 7
# systemd file for Fedora 18 and up, or RHEL 7 and up

[Unit]
Description=Xymon systems and network monitor
Documentation=man:xymon(7) man:xymonlaunch(8) man:xymon(1)
After=network.target

[Install]
# Compatibility with "xymon" and "xymon-client"
Alias=xymon.service
Alias=xymon-client.service
WantedBy=multi-user.target


[Service]
EnvironmentFile=/etc/sysconfig/xymonlaunch
User=xymon
# We wrap in xymoncmd to eliminate the need for the bulk of the old init script
ExecStart=/usr/lib/xymon/client/bin/xymoncmd /usr/lib/xymon/client/bin/xymonlaunch \
  --config=/usr/lib/xymon/client/etc/clientlaunch.cfg --no-daemon $XYMONLAUNCHOPTS
Type=simple

# Kill xymonlaunch, but don't send kills to the underlying procs, since they
# might be doing important things (like writing checkpoints and flushing caches)
KillMode=process
# SendSIGHUP=yes
SendSIGKILL=no
Una volta tenim ja tot al seu lloc generem el rpm amb:
rpmbuild -ba SPECS/xymon.spec
I finalment ja podem instal·lar el paquet en RHEL 7 amb:
rpm -ivh xymon-client-4.3.19-1.x86_64.rpm --nodeps

Comandes utils per a la creació de RPM

Si volem veure el contingut de un rpm sense instal·lar-lo ho podem fer amb la següent ordre:
 rpm2cpio xymon-client-4.3.19-1-x86_64.rpm | cpio -idmv
Llavors ens el desempaqueta en el mateix directory on hem executat la comanda i ja podem accedir seguint la seua estructura de directories. Una altra comanda interessant per interactuar amb rpms es
rpm -qp xymon-client-4.3.19-1.x86_64.rpm --requires
Amb aquesta comanda veiem les dependencies del paquet. Amb l'opció --provides podem veure el que ens aporta el paquet.
rpm -qp xymon-client-4.3.19-1.x86_64.rpm --provides

ENLLAÇOS

http://www.cyberciti.biz/tips/how-to-extract-an-rpm-package-without-installing-it.html
http://mylinuxlife.com/building-rpms-in-rhel-6/
https://fedoraproject.org/wiki/How_to_create_an_RPM_package/es
http://lists.xymon.com/archive/2011-March/031039.html
http://terabithia.org/rpms/xymon/