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

  • Î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.
    1. Pe swarm, creați directorul ~/git-repos/ și, dacă nu există, directorul ~/public_html/.
    2. 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.
    3. 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.
    4. 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
    5. 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.
    6. 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.
    7. 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 .
    8. Î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.
  1. 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
    1. 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/.
    2. Î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.

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.

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.
      1. 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.
      2. 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
      3. 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
      4. 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.

      5. 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
      6. 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>
      7. 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.

      8. 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.
      9. Verificați conectarea prin SSH:
        ssh -l <username-de-pe-swarm> -p 4<id-container>22 houdini.cs.pub.ro
  • RADIUS (discuție)

Use versioning

  • Gitolite (discuție)

Allow access from anywhere on any device

sesiuni/sysadmin/centralizare.1403002572.txt.gz · Last modified: 2014/06/17 13:56 by bpurcareata