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.

Centralize, backup and secure.

#* Computer clusters (discuție) #* NFS (iSCSI, FiberChannel) # 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, ca root, 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> #*#* La urgență 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} sau eth1}. #*#* Verificați conectivitatea folosind:<code bash> ping <IP-stanga> ping <IP-dreapta> </code> #*# 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}:<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> 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> 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> 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:

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap

##* Reporniți daemonul nscd}:<code> /etc/init.d/nscd restart </code> ## 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. ## 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> 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> 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> #* RADIUS (discuție) === Use versioning. === #* Gitolite (discuție) === Allow access from anywhere on any device. === #* Dropbox # Vedeți exercițiul 7 din demo-urile sesiunii de Eficiență. #* web, DAV, e-mail, LDAP (discuție)

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