This is an old revision of the document!


Gestiune centralizată

Idei și discuții

  • Less is more.
  • Prefer text over binary.
    • Wiki, repository
    • File-based wikis
  • Centralize, backup and secure.
    • Computer clusters
    • iSCSI, FiberChannel
  • Allow interconnection and interoperability.
    • LDAP
    • RADIUS
  • Use versioning.
    • Gitolite
  • Allow access from anywhere on any device.

Demo

  • Înainte de toate: Copiați perechea de chei SSH din contul vostru de pe swarm.cs.pub.ro local:
    scp <username-de-pe-swarm>@swarm.cs.pub.ro:.ssh/id_rsa* ~/.ssh/

    unde <username-de-pe-swarm> este utilizatorul vostru de pe swarm.cs.pub.ro.

Prefer text over binary

  • Obiective:
    • Configurarea un blog/site bazat pe jekyll pe swarm.
    • Publicarea conținutului unui repository printr-un hook Git.

* Pe swarm

  • # Creați directorul ~/git-repos/ și, dacă nu există, directorul ~/public_html/.
    1. Intrați în directorul ~/git-repos/ și creați repository-ul workshop-blog.git. Folosiți comanda:
      git init --bare workshop-blog.git
    2. Intrați în directorul ~/public_html/ și creați directorul workshop-blog/.
      • Aici va fi publicat conținutul blog-ului.
      • Accesați, din browser, URL-ul http://swarm.cs.pub.ro/~<username-de-pe-swarm>/workshop-blog/, unde <username-de-pe-swarm> este numele vostru de utilizator de pe swarm.
    3. Creați fișierul ~/git-repos/workshop-blog.git/hooks/post-receive cu conținutul de mai jos (dacă fișierul există, suprascrieți-i conținutul; fișierul post-receive.sample nu are o legătură directă cu post-receive):
      post-receive
      #!/bin/bash
       
      #
      # Jekyll post-receive hook
      # Publish information from repository (GIT_REPO) to public web folder (PUBLIC_WWW).
      # 
      # https://github.com/mojombo/jekyll/
      # https://github.com/mojombo/jekyll/wiki/Deployment
      #
       
      GIT_REPO=$HOME/git-repos/workshop-blog.git
      TMP_GIT_CLONE=/tmp/$USER-workshop-blog-clone
      PUBLIC_WWW=$HOME/public_html/workshop-blog
       
      GIT=/usr/bin/git
      JEKYLL=/var/lib/gems/1.8/bin/jekyll
       
      $GIT clone $GIT_REPO $TMP_GIT_CLONE
      $JEKYLL --no-auto --base-url /~$USER/workshop-blog --url http://swarm.cs.pub.ro/~$USER/workshop-blog $TMP_GIT_CLONE $PUBLIC_WWW
      rm -fr $TMP_GIT_CLONE
      • Acordați drept de execuție hook-ului din fișierul post-receive:
        chmod a+x ~/git-repos/workshop-blog.git/hooks/post-receive
  • Pe sistemul local
    1. Creați un repository workshop-blog.git:
      git init workshop-blog.git
      git config --global user.name "Prenume Nume"
      git config --global user.email "email@nomail.me"
      git config --global color.ui auto
      • Substituiți “Prenume Nume” si “email@nomail.me” cu datele proprii.
    2. Descărcați această arhivă, decomprimați fișierul arhivă și copiați conținutul acestuia (NU și directorul start-jekyll, DOAR conținutul său) în directorul creat (workshop-blog.git).
      • În urma copierii directorul trebuie să aibă o structură similară celei de aici.
    3. Actualizați informațiile din fișierele adăugate pentru a referi username-ul și URL-ul propriu blog-ului vostru.
      • Pentru a verifica dacă ați modificat peste tot, folosiți comanda:
        grep -nriH razvan .
    4. În subdirectorul _posts/ al repository-ului creați fișierul 2014-06-18-first-post.markdown cu un conținut similar celui de mai jos:
      2014-06-18-first-post.markdown
      ---
      layout: post
      date: 2014-06-18
      title: Wednesday, June 18, 2014
      ---
       
      * I never make mistakes.
      * I thought I did once.
      * But I was wrong.
    5. Verificați că vă aflați în repository (folosiți comanda pwd). Adăugați conținutul în repository:
      git add .
      git commit -m 'Add Jekyll basic structure files'
      • Folosiți cele două comenzi de mai sus (cu alt argument la opțiunea -m) ori de câte ori faceți alte commit-uri.
    6. Adăugați, ca remote, repository-ul de pe swarm:
      git remote add origin <username-de-pe-swarm>@swarm.cs.pub.ro:git-repos/workshop-blog.git
    7. Faceți push la informații, forțând, astfel, rularea hook-ului post-receive și a publicării informațiilor:
      git push origin master
      • Ori de câte ori vreți să propagați schimbările efectuate în repository, folosiți această comandă.
  • Verificați publicarea informațiilor prin accesarea, din browser, a URL-ului http://swarm.cs.pub.ro/~<username-de-pe-swarm>/workshop-blog/.

Centralize, backup and secure

  • Obiective
    • Dorim să instalăm un server NFS in containerul LXC.
    • Urmărim să partajăm directoare cu colegii prin NFS.

* NFS Folosiți contul de root pentru instalare, configurare și folosire NFS. *# Instalați serverul de NFS:<code bash> apt-get install nfs-kernel-server nfs-common rpcbind </code> *# Creați un director export} pe care să îl partajați prin NFS. *#* Pentru a partaja, adăugați linia de mai jos în fișierul exports}:<code> /home/student/export *(rw,sync,no_subtree_check) </code> *#* După editare, marcați export-ul:<code bash> exportfs -ra </code> *#* Pentru a vizualiza export-urile folosiți comanda<code bash> exportfs </code> *#* Dacă apar probleme pe parcurs, reporniți serverul NFS<code bash> /etc/init.d/nfs-kernel-server restart </code> *# Creați două directoare left} și right} în care montați share-urile colegilor din stânga și dreapta<code bash> mount <IP-left>:/home/student/export/ /home/student/left/ mount <IP-right>:/home/student/export/ /home/student/right/ </code> unde ip-left} este adresa IP a colegului din stânga, iar ip-right} adresa IP a colegului din dreapta. *#* Folosiți comanda<code bash> ip a s </code> pentru a afla adresa IP proprie pe care să o comunici colegilor. *#* Este vorba de adresa interfeței eth0}. *#* Verificați conectivitatea folosind:<code bash> ping <IP-stanga> ping <IP-dreapta> </code> * Verificați că puteți crea, edita și șterge fișiere din directoarele montate, iar aceste modificări sunt vizibile și pentru colegii voștri. === Allow interconnection and interoperability === * E-mail (demo Răzvan) * LDAP Folosiți, pe swarm, comenzi de interogare LDAP:

ldapsearch -LLL -x # toate informațiile disponibile
ldapsearch -LLL -x uid # UID-urile utilizatorilor
ldapsearch -LLL -x uid=razvan # informații despre utilizatorul cu UID-ul razvan
ldapsearch -LLL -x sn=M* # informații despre utilizatori ai căror nume începe cu litera M
ldapsearch -LLL -x '(&(givenName=*a)(sn=M*))' # idem + ai căror prenume se termina cu litera a

Pe instanța DokuWiki configurată în sesiunea de eficiență, configurați acces LDAP. * Adăugați, în ~/public_html/dokuwiki/conf/local.php, conținutul de mai jos:

$conf['authtype'] = 'ldap';
$conf['auth']['ldap']['port'] = '636';
$conf['auth']['ldap']['server'] = 'ldaps://swarm.cs.pub.ro';
$conf['auth']['ldap']['usertree'] = 'ou=People,dc=swarm,dc=cs,dc=pub,dc=ro';
$conf['auth']['ldap']['grouptree'] = 'dc=swarm,dc=cs,dc=pub,dc=ro';
$conf['auth']['ldap']['userfilter'] = '(&(uid=%{user})(objectClass=posixAccount))';
$conf['auth']['ldap']['groupfilter'] = '(&(objectClass=posixGroup)(|(gidNumber=%{gid})(memberUID=%{user})))';
$conf['auth']['ldap']['version'] = '3';

Autentificare Unix prin LDAP. * În continuare veți configura containerul LXC să realizeze autentificarea prin LDAP. Toate comenzile următoare trebuie rulate în containerul LXC * Folosiți container-ul LXC dedicat; conectați-vă ca root}:<code bash> ssh -l root -p 4<id-container>22 houdini.grid.pub.ro </code> * Trebuie configurat sistemul de login (prin intermediul PAM) să folosească LDAP. Instalați bibliotecile LDAP și aplicațiile de tip client:<code bash> apt-get install ldap-utils </code> Configurați în containerul LXC serverul de LDAP de pe swarm ca server implicit folosit de clienții LDAP. Editați fișierul /etc/ldap/ldap.conf pentru a avea următorul conținut (nu uitați de :set paste în Vim):

# LDAP Defaults
#
 
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
 
BASE	dc=swarm,dc=cs,dc=pub,dc=ro
URI	ldaps://swarm.cs.pub.ro
 
#SIZELIMIT	12
#TIMELIMIT	15
#DEREF		never
TLS_REQCERT	never

Verificați funcționarea conexiunii la serverul LDAP, folosind comanda ldapsearch}:<code bash post-receive> ldapsearch -x -LLL uid=<username-de-pe-swarm> </code> <username-de-pe-swarm> este numele vostru de utilizator de pe swarm.cs.pub.ro. Pentru configurarea NSS (Name Service Switch), trebuie instalat și configurat pachetul libnss-ldap}. Instalați pachetul libnss-ldap} și opțiunile:<code bash post-receive> apt-get install libnss-ldap LDAP server URI: ldaps:swarm.cs.pub.ro Distinguished name of the search base: dc=swarm,dc=cs,dc=pub,dc=ro LDAP version to use: 3 LDAP account for root: cn=admin,dc=swarm,dc=cs,dc=pub,dc=ro LDAP account password: TODO LDAP administrative account: cn=admin,dc=swarm,dc=cs,dc=pub,dc=ro LDAP administrative password: TODO </code> * Vă spune Răzvan răspunsul la todo}. Verificați configurarea corespunzătoare, prin rularea comenzii<code bash post-receive> cat /etc/libnss-ldap.conf | grep -v '^#' | grep -v '^$' </code> și obținerea rezultatului<code> base dc=swarm,dc=cs,dc=pub,dc=ro uri ldaps:swarm.cs.pub.ro/ ldap_version 3 rootbinddn cn=admin,dc=swarm,dc=cs,dc=pub,dc=ro </code> Configurați în /etc/nsswitch.conf intrările passwd, group și shadow:

post-receive
passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

* Reporniți daemonul nscd}:<code bash post-receive> /etc/init.d/nscd restart </code> Verificați configurarea prin rularea comenzilor:

post-receive
getent passwd <username-de-pe-swarm>
id <username-de-pe-swarm>
apt-get install finger
finger <username-de-pe-swarm>

unde <username-de-pe-swarm> este numele vostru de utilizator de pe swarm.cs.pub.ro. Pentru autentificarea utilizatorilor prin LDAP trebuie configurat corespunzător pam}. L-ați configurat (în cadrul pachetului libpam-ldap} la instalarea pachetului libnss-ldap}. Verificați configurarea sa prin rularea comenzii<code bash post-receive> cat /etc/pam_ldap.conf | grep -v '^#' | grep -v '^$' </code> care trebuie să dea rezultatul<code> base dc=swarm,dc=cs,dc=pub,dc=ro uri ldaps:swarm.cs.pub.ro/ ldap_version 3 rootbinddn cn=admin,dc=swarm,dc=cs,dc=pub,dc=ro pam_password crypt </code> Verificați configurarea corespunzătoare a fișierelor } (account-required}) și common-auth} (auth-required}) (e vorba de prezența pam_ldap.so}:<code bash post-receive> root@rsw-sysadmin-00:~# cat /etc/pam.d/common-account | grep -v '^#' | grep -v '^$' account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so account [success=1 default=ignore] pam_ldap.so account requisite pam_deny.so account required pam_permit.so root@rsw-sysadmin-00:~# cat /etc/pam.d/common-auth | grep -v '^#' | grep -v '^$' auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_ldap.so use_first_pass auth requisite pam_deny.so auth required pam_permit.so </code> * Schimbați utilizatorul în utilizatorul de pe swarm:<code> su - <username-de-pe-swarm> </code> Ca root activați modulul PAM mkhomedir} pentru crearea home-ului utilizatorului la autentificare. Adăugați ca root, la finele fișierului common-session}, linia:<code> session required pam_mkhomedir.so skel=/etc/skel/ umask=0022 </code> * Schimbați utilizatorul în utilizatorul de pe swarm.cs.pub.ro}:<code> su - <username-de-pe-swarm> </code> Observați crearea directorului home pentru utilizator. # Adăugați cheia publică SSH de pe sistemul din laborator în contul utilizatorului nou creat. #* Copiați cheia publică în fișierul authorized_keys} din home-ul utilizatorului. **# Verificați conectarea prin SSH:<code> ssh -l <username-de-pe-swarm> -p 4<id-container>22 houdini.cs.pub.ro </code>

sesiuni/sysadmin/centralizare.1403010556.txt.gz · Last modified: 2014/06/17 16:09 by bpurcareata