This is an old revision of the document!


Gestiune centralizată

Idei

  • Less is more.
  • Prefer text over binary.
  • Centralize, backup and secure.
  • Allow interconnection and interoperability.
  • Use versioning.
  • Allow access from anywhere on any device.

Demo-uri

  • Î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. #* Wiki, repository (discuție) #* File-based wikis (demo Răzvan) #* Configurați un blog/site bazat pe jekyll pe swarm. #*# Pe swarm, creați directorul ~/git-repos/ și, dacă nu există, directorul ~/public_html/. #*# Intrați în directorul ~/git-repos/ și creați repository-ul workshop-blog.git. Folosiți comanda:

git init --bare workshop-blog.git

#*#* Conținutul repository-ului (blog-ul) va fi publicat printr-un hook Git. #*# 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. #*# Creați fișierul ~/git-repos/workshop-blog.git/hooks/post-receive cu fișierul 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 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. #*# 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. #*# Configurați 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 .

#*# În subdirectorul _posts/ al repository-ului creați fișierul 2013-07-03-first-post.markdown cu un conținut similar celui de mai jos:

2013-07-03-first-post.markdown
---
layout: post
date: 2013-07-03
title: Wednesday, July 3, 2013
---
 
* Eat good.
* Live well.
* Die young.
* Have a good looking corpse.

#*# 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. #*# 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

#*# 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 comanda:

git push origin master

#*#* Verificați publicarea informațiilor prin accesarea, din browser, a URL-ului http://swarm.cs.pub.ro/~<username-de-pe-swarm>/workshop-blog/. #*# În subdirectorul posts/ al repository-ului creați un fișier nou (2013-07-03-second-post.markdown) și publicați conținutul pe blog.

  1. Centralize, backup and secure.
    • Computer clusters (discuție)
    • NFS (iSCSI, FiberChannel)
      • Folosiți contul de root pentru instalare, configurare și folosire NFS.
      1. Instalați serverul de NFS:
        apt-get install nfs-kernel-server nfs-common rpcbind
      2. Creați un director /home/student/export/ pe care să îl partajați prin NFS.
        • Pentru a partaja, adăugați, ca root, linia de mai jos în fișierul /etc/exports:
          /home/student/export *(rw,sync,no_subtree_check)
        • După editare, marcați export-ul:
          exportfs -ra
        • Pentru a vizualiza export-urile folosiți comanda
          exportfs
        • La urgență reporniți serverul NFS
          /etc/init.d/nfs-kernel-server restart
      3. Creați două directoare /home/student/left/ și /home/student/right/ în care montați share-urile colegilor din stânga și dreapta
        mount <IP-left>:/home/student/export/ /home/student/left/
        mount <IP-right>:/home/student/export/ /home/student/right/

        unde <IP-left> este adresa IP a colegului din stânga, iar <IP-right> adresa IP a colegului din dreapta.

        • Folosiți comanda
          ip a s

          pentru a afla adresa IP proprie pe care să o comunici colegilor.

        • Este vorba de adresa interfeței eth0 sau eth1.
        • Verificați conectivitatea folosind:
          ping <IP-stanga>
          ping <IP-dreapta>
      4. Creați, editați, ștergeți fișiere din directoarele montate.
  2. Allow interconnection and interoperability.
    • E-mail (demo Răzvan)
    • LDAP
      • Folosiți, pe swarm, comenzi de interogare LDAP:
        ldapsearch -LLL -x
        ldapsearch -LLL -x uid
        ldapsearch -LLL -x uid=razvan
        ldapsearch -LLL -x sn=M*
        ldapsearch -LLL -x '(&(givenName=*a)(sn=M*))'
      • 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:
          dokuwiki-ldap.conf
          $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:
          ssh -l root -p 4<id-container>22 houdini.grid.pub.ro
        • Trebuie configurat sistemul de login (prin intermediul PAM) să folosească LDAP.
        1. Instalați bibliotecile LDAP și aplicațiile de tip client:
          apt-get install ldap-utils
        2. 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
        3. Verificați funcționarea conexiunii la serverul LDAP, folosind comanda ldapsearch:
          ldapsearch -x -LLL uid=<username-de-pe-swarm>
          • <username-de-pe-swarm> este numele vostru de utilizator de pe swarm.cs.pub.ro.
        4. Pentru configurarea NSS (Name Service Switch), trebuie instalat și configurat pachetul libnss-ldap. Instalați pachetul libnss-ldap și opțiunile:
          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
          • Vă spune Răzvan răspunsul la TODO.
        5. Verificați configurarea corespunzătoare, prin rularea comenzii
          cat /etc/libnss-ldap.conf  | grep -v '^#' | grep -v '^$'

          și obținerea rezultatului

          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
        6. Configurați în /etc/nsswitch.conf intrările passwd, group și shadow:
          passwd:         compat ldap
          group:          compat ldap
          shadow:         compat ldap
          • Reporniți daemonul nscd:
            /etc/init.d/nscd restart
        7. Verificați configurarea prin rularea comenzilor:
          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.

        8. 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
          cat /etc/pam_ldap.conf  | grep -v '^#' | grep -v '^$'

          care trebuie să dea rezultatul

          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
        9. Verificați configurarea corespunzătoare a fișierelor /etc/pam.d/common-account (account-required) și /etc/pam.d/common-auth (auth required) (e vorba de prezența pam_ldap.so:
          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
          • Schimbați utilizatorul în utilizatorul de pe swarm:
            su - <username-de-pe-swarm>
        10. Ca root activați modulul PAM mkhomedir pentru crearea home-ului utilizatorului la autentificare. Adăugați ca root, la finele fișierului /etc/pam.d/common-session, linia:
          session required        pam_mkhomedir.so skel=/etc/skel/ umask=0022
          • Schimbați utilizatorul în utilizatorul de pe swarm.cs.pub.ro:
            su - <username-de-pe-swarm>

            Observați crearea directorului home pentru utilizator.

        11. Adăugați cheia publică SSH de pe sistemul din laborator în contul utilizatorului nou creat.
          • Copiați cheia publică în fișierul .ssh/authorized_keys din home-ul utilizatorului.
        12. Verificați conectarea prin SSH:
          ssh -l <username-de-pe-swarm> -p 4<id-container>22 houdini.cs.pub.ro
    • RADIUS (discuție)
  3. Use versioning.
    • Gitolite (discuție)
  4. Allow access from anywhere on any device.
sesiuni/sysadmin/centralizare.1372867948.txt.gz · Last modified: 2013/07/03 19:12 by razvan