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

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

* Discuții: Wiki, repository File-based wikis

  • Pe swarm
    1. 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
    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 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.

* Discuții Computer clusters iSCSI, FiberChannel

  • NFS
    • 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 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
      • Dacă apar probleme pe parcurs, 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.
      • Verificați conectivitatea folosind:
        ping <IP-stanga>
        ping <IP-dreapta>
  • 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
      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.
    • Instalați bibliotecile LDAP și aplicațiile de tip client:
      apt-get install ldap-utils
    • 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:
      post-receive
      ldapsearch -x -LLL uid=<username-de-pe-swarm>
    • <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:
      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
      • Vă spune Răzvan răspunsul la TODO.
    • Verificați configurarea corespunzătoare, prin rularea comenzii
      post-receive
      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
    • 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:
        post-receive
        /etc/init.d/nscd restart
    • 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
      post-receive
      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
    • 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:
      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
      • Schimbați utilizatorul în utilizatorul de pe swarm:
        su - <username-de-pe-swarm>
    • 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.

      1. 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.
      2. 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.1403007987.txt.gz · Last modified: 2014/06/17 15:26 by bpurcareata