Curs 10 Automatizarea scalabilă a sistemelor Servicii avansate pentru ISP 16 mai 2017 SAISP Curs 10, Automatizarea scalabilă a sistemelor 1/38
Outline Ce reprezintă o infrastructură? Administrarea unei infrastructuri Solutii de administrare centralizată Puppet Analiza comparativă a tool-urilor de administrarea centralizată Concluzii Întrebări SAISP Curs 10, Automatizarea scalabilă a sistemelor 2/38
Infrastructura Din ce este formată? SAISP Curs 10, Automatizarea scalabilă a sistemelor 3/38
Infrastructura Din ce este formată? server-e switch-uri rutere Doar atât? SAISP Curs 10, Automatizarea scalabilă a sistemelor 3/38
Infrastructura Din ce este formată? server-e switch-uri rutere Doar atât? NU, inclusiv serviciile de pe servere fac parte din infrastructură SAISP Curs 10, Automatizarea scalabilă a sistemelor 3/38
Constructia unei infrastructuri Ce trebuie să configurăm pentru a avea conectivitate? SAISP Curs 10, Automatizarea scalabilă a sistemelor 4/38
Constructia unei infrastructuri Ce trebuie să configurăm pentru a avea conectivitate? switch-uri rutere Ce configuratii trebuie realizate în general pe un server? SAISP Curs 10, Automatizarea scalabilă a sistemelor 4/38
Constructia unei infrastructuri Ce trebuie să configurăm pentru a avea conectivitate? switch-uri rutere Ce configuratii trebuie realizate în general pe un server? setări parametri kernel montare discuri adăugare utilizatori de sistem creare directoare, symlink-uri instalare pachete modificare fisiere de configurare SAISP Curs 10, Automatizarea scalabilă a sistemelor 4/38
Constructia unei infrastructuri (2) Cum este realizată dezvoltarea datacenter-elor (orizontală/verticală)? SAISP Curs 10, Automatizarea scalabilă a sistemelor 5/38
Constructia unei infrastructuri (2) Cum este realizată dezvoltarea datacenter-elor (orizontală/verticală)? pe orizontală mai multe sisteme Unde sunt localizate fizic sistemele administrate (aceeasi locatie, locatii diferite)? SAISP Curs 10, Automatizarea scalabilă a sistemelor 5/38
Constructia unei infrastructuri (2) Cum este realizată dezvoltarea datacenter-elor (orizontală/verticală)? pe orizontală mai multe sisteme Unde sunt localizate fizic sistemele administrate (aceeasi locatie, locatii diferite)? locatii diferite Concluzie: efortul de administrare a crescut semnificativ SAISP Curs 10, Automatizarea scalabilă a sistemelor 5/38
Outline Ce reprezintă o infrastructură? Administrarea unei infrastructuri Solutii de administrare centralizată Puppet Analiza comparativă a tool-urilor de administrarea centralizată Concluzii Întrebări SAISP Curs 10, Automatizarea scalabilă a sistemelor 6/38
Administrarea unei infrastructuri Cum putem micsora efortul de administrarea? Care sunt particularitatile sistemelor fizice? SAISP Curs 10, Automatizarea scalabilă a sistemelor 7/38
Administrarea unei infrastructuri Cum putem micsora efortul de administrarea? Care sunt particularitatile sistemelor fizice? grupuri de servere (sasie de blade-uri) configuratii hardware aproape identice Ce servicii oferă? nu oferă servicii propriu-zise rulează, în general, masini virtuale SAISP Curs 10, Automatizarea scalabilă a sistemelor 7/38
Administrarea unei infrastructuri Cum putem micsora efortul de administrarea? Care sunt particularitatile sistemelor fizice? grupuri de servere (sasie de blade-uri) configuratii hardware aproape identice Ce servicii oferă? nu oferă servicii propriu-zise rulează, în general, masini virtuale Administrarea centralizată folosirea unor seturi de configuratii centralizate SAISP Curs 10, Automatizarea scalabilă a sistemelor 7/38
Administrarea unei infrastructuri (2) Care sunt particularitatile elementelor de interconectare? SAISP Curs 10, Automatizarea scalabilă a sistemelor 8/38
Administrarea unei infrastructuri (2) Care sunt particularitatile elementelor de interconectare? sunt multe configuratii hardware diverse vendori diversi Ce servicii oferă? interconectare la nivelul 2/3 la stivei TCP/IP Ce presupune administrarea centralizată? SAISP Curs 10, Automatizarea scalabilă a sistemelor 8/38
Administrarea unei infrastructuri (2) Care sunt particularitatile elementelor de interconectare? sunt multe configuratii hardware diverse vendori diversi Ce servicii oferă? interconectare la nivelul 2/3 la stivei TCP/IP Ce presupune administrarea centralizată? folosirea un singur punct de acces descoperirea topologiei ajustarea configuratiilor în functie de topologie/încărcare folosirea unor seturi de configuratii centralizate SAISP Curs 10, Automatizarea scalabilă a sistemelor 8/38
Administrarea centralizată servere Serviciu ce stochează date centralizat management utilizatori Crearea unor seturi de configuratii centralizat distribuirea automată a acestora pe toate sistemele/nodurile administrate cum automatizăm configuratiile de retea? SAISP Curs 10, Automatizarea scalabilă a sistemelor 9/38
Administrarea centralizată servere Serviciu ce stochează date centralizat management utilizatori Crearea unor seturi de configuratii centralizat distribuirea automată a acestora pe toate sistemele/nodurile administrate cum automatizăm configuratiile de retea? pot fi parametrizate în functie de un atribut (hostname) SAISP Curs 10, Automatizarea scalabilă a sistemelor 9/38
Outline Ce reprezintă o infrastructură? Administrarea unei infrastructuri Solutii de administrare centralizată Puppet Analiza comparativă a tool-urilor de administrarea centralizată Concluzii Întrebări SAISP Curs 10, Automatizarea scalabilă a sistemelor 10/38
Administrarea centralizată a echipamentelor de retea SDN - Software Defined Networks Abstractizează functiile low-level ale serviciilor de retea oferite Permite controlul fluxului de trafic fără a accesa fiecare echipament de pe retea Multi-vendor Cea mai populară specificatie este standardul SAISP Curs 10, Automatizarea scalabilă a sistemelor 11/38
Administrarea centralizată a echipamentelor de retea SDN - Software Defined Networks Abstractizează functiile low-level ale serviciilor de retea oferite Permite controlul fluxului de trafic fără a accesa fiecare echipament de pe retea Multi-vendor Cea mai populară specificatie este standardul OpenFlow O implementarea de la Cisco: onepk. SAISP Curs 10, Automatizarea scalabilă a sistemelor 11/38
Servicii de centralizare a informatiilor Serviciile de director ex: LDAP, Active Directory adăugam un utilizator în director utilizatorul va deveni disponibil pe toate sistemele utilizatorul va avea aceleasi atribute (parolă, director home) SAISP Curs 10, Automatizarea scalabilă a sistemelor 12/38
Servicii de centralizare a informatiilor Serviciile de director ex: LDAP, Active Directory adăugam un utilizator în director utilizatorul va deveni disponibil pe toate sistemele utilizatorul va avea aceleasi atribute (parolă, director home) Cloud frameworks ex: Openstack decuplează partea de administrare de partea de rulare efectivă (hypervisor/nod) informatiile despre VM sunt tinute centralizat management-ul VM-urilor este centralizat hypervisor-ul poate varia de la nod la nod (KVM, Xen) SAISP Curs 10, Automatizarea scalabilă a sistemelor 12/38
Servicii de centralizare a configuratiilor Noduri hardware similar în general rulează acelasi sistem de operare îndeplinesc aceleasi functii configuratii aproape identice Ce trebuie să îndeplinească un astfel de serviciu? SAISP Curs 10, Automatizarea scalabilă a sistemelor 13/38
Servicii de centralizare a configuratiilor Noduri hardware similar în general rulează acelasi sistem de operare îndeplinesc aceleasi functii configuratii aproape identice Ce trebuie să îndeplinească un astfel de serviciu? copierea automată a configuratiilor pe toate nodurile SAISP Curs 10, Automatizarea scalabilă a sistemelor 13/38
Servicii de centralizare a configuratiilor Noduri hardware similar în general rulează acelasi sistem de operare îndeplinesc aceleasi functii configuratii aproape identice Ce trebuie să îndeplinească un astfel de serviciu? copierea automată a configuratiilor pe toate nodurile repornirea automată anumitor servicii SAISP Curs 10, Automatizarea scalabilă a sistemelor 13/38
Servicii de centralizare a configuratiilor Noduri hardware similar în general rulează acelasi sistem de operare îndeplinesc aceleasi functii configuratii aproape identice Ce trebuie să îndeplinească un astfel de serviciu? copierea automată a configuratiilor pe toate nodurile repornirea automată anumitor servicii crearea anumitor fisiere, link-uri symbolice SAISP Curs 10, Automatizarea scalabilă a sistemelor 13/38
Servicii de centralizare a configuratiilor Noduri hardware similar în general rulează acelasi sistem de operare îndeplinesc aceleasi functii configuratii aproape identice Ce trebuie să îndeplinească un astfel de serviciu? copierea automată a configuratiilor pe toate nodurile repornirea automată anumitor servicii crearea anumitor fisiere, link-uri symbolice realizarea unor configuratii parametrizate SAISP Curs 10, Automatizarea scalabilă a sistemelor 13/38
Servicii de centralizare a configuratiilor (2) Exemple Puppet CFEngine Chef Ansible Salt Fiecare cu propria sintaxă de configurare (domain-specific language - DSL) SAISP Curs 10, Automatizarea scalabilă a sistemelor 14/38
CFEngine Dezvoltarea a început în 1993 la Universitatea din Oslo, de către Mark Burgess principala motivatie a fost legată de faptul că scripting-ul dura prea mult A ajuns la versiune 3, ce a introdus teoria promisiunilor Open source (licenta GPL): CFEngine Community Edition Comercializare: CFEngine AS (parteneriat între univeristate si Mark) oferă suport celor care doresc au lansat o versiune comercială a CFEngine (Enterprise) SAISP Curs 10, Automatizarea scalabilă a sistemelor 15/38
CFEngine (2) Este foarte rapid (în comparatie cu Puppet/Chef) Bazat pe promisiuni ce au nume, tipuri si intentii Tipuri de promisiuni: package, file Poate controla starea proceselor Functiile aplicate de promisiuni sunt idempotente SAISP Curs 10, Automatizarea scalabilă a sistemelor 16/38
CFEngine (2) Este foarte rapid (în comparatie cu Puppet/Chef) Bazat pe promisiuni ce au nume, tipuri si intentii Tipuri de promisiuni: package, file Poate controla starea proceselor Functiile aplicate de promisiuni sunt idempotente Ex: append test la finalul fisierului test trebuie să apară doar o dată la finalul fisierului, chiar daca am rulat de mai multe ori CFEngine SAISP Curs 10, Automatizarea scalabilă a sistemelor 16/38
Chef System and cloud infrastructure automation framework Bazat pe definitii abstracte (cookbooks si recipe) scrise în Ruby (pure old-ruby) gestionate ca si cod sursă Folosit de Facebook si Amazon SAISP Curs 10, Automatizarea scalabilă a sistemelor 17/38
Outline Ce reprezintă o infrastructură? Administrarea unei infrastructuri Solutii de administrare centralizată Puppet Analiza comparativă a tool-urilor de administrarea centralizată Concluzii Întrebări SAISP Curs 10, Automatizarea scalabilă a sistemelor 18/38
Puppet Multi-platform (Linux & Windows) Open source (Licenta Apache 2.0) Scris în Ruby, de Luke Kanies de ce? SAISP Curs 10, Automatizarea scalabilă a sistemelor 19/38
Puppet Multi-platform (Linux & Windows) Open source (Licenta Apache 2.0) Scris în Ruby, de Luke Kanies de ce? a încercat perl, python si nu a reusit să ajungă la prototipul pe care îl avea în cap SAISP Curs 10, Automatizarea scalabilă a sistemelor 19/38
Puppet Multi-platform (Linux & Windows) Open source (Licenta Apache 2.0) Scris în Ruby, de Luke Kanies de ce? a încercat perl, python si nu a reusit să ajungă la prototipul pe care îl avea în cap folosind Ruby a reusit în 4 ore să aibă un prototip functional Are propriul DSL (Puppet s declarative language) poate fi folosit si Ruby SAISP Curs 10, Automatizarea scalabilă a sistemelor 19/38
Puppet (2) Puppet Labs, fondată în 2005, oferă oversiune comercială GUI Event inspector (vizualizare modificări de infrastructură) Provision VMware VMs User accounts Folosit de Google, VMware, Cisco SAISP Curs 10, Automatizarea scalabilă a sistemelor 20/38
Puppet - instalare apt-get install puppet Se găseste în general în repo-urile distributiilor În caz contrar Redhat-based: http://yum.puppetlabs.com Debian-based: http://apt.puppetlabs.com Dacă instalati din surse verificati compatibilitatea cu versiunea de Ruby http://docs.puppetlabs.com/guides/platforms.html# ruby-versions SAISP Curs 10, Automatizarea scalabilă a sistemelor 21/38
Puppet - configurare Se foloseste comanda puppet urmată de subcomenzi resource interactionează cu resursele sistemului service este un tip de resursă 1 # puppet resource service 2 service { abrtd : 3 ensure => running, 4 enable => true, 5 } 6 service { acpid : 7 ensure => running, 8 enable => true, 9 } SAISP Curs 10, Automatizarea scalabilă a sistemelor 22/38
Puppet - resurse Abstractizează majoritatea entitătilor din sistem prin resurse Exemple de resurse servicii utilizatori fisiere sau directoare pachete software puppet describe --list pentru a afisa toate resursele 1 [root@learn ]# puppet describe --list 2 These are the types known to puppet: 3 anchor - A simple resource type intended to be used a... 4 augeas - Apply a change or an array of changes to the... 5 computer - Computer object management using DirectorySer... 6 cron - Installs and manages cron jobs SAISP Curs 10, Automatizarea scalabilă a sistemelor 23/38
Structura unei resurse Tipul resursei: user Numele resursei: root Atributele resursei: ensure, comment, gid, home Fiecare atribut are o valoare. 1 [root@learn ]# puppet resource user root 2 user { root : 3 ensure => present, 4 comment => root, 5 gid => 0, 6 home => /root, 7 password => $1$jrm5tnjw$h8JJ9mCZLmJvIxvDLjw1M/, 8 password max age => 99999, 9 password min age => 0, 10 shell => /bin/bash, 11 uid => 0, SAISP Curs 10, Automatizarea scalabilă a sistemelor 24/38
Crearea, stergerea unei resurse Dată de atributul ensure din comanda puppet resource present absent Creare utilizator puppet resource user gigel ensure=present shell="/bin/sh" Stergere utilizator puppet resource user gigel ensure=absent SAISP Curs 10, Automatizarea scalabilă a sistemelor 25/38
Manifest file puppet resource nu scalează la scenarii complexe Configuratiile se fac în fisiere numite manifest cu extensia.pp Se aplică folosind comanda puppet apply manifest.pp Exemplu de creare a unui fisier 1 file { my file : 2 path => /tmp/my file, 3 ensure => present, 4 mode => 0640, 5 content => "File created using Puppet.", 6 } SAISP Curs 10, Automatizarea scalabilă a sistemelor 26/38
Dependinte între resurse Se realizează prin atributele before (before => Notify[ my_notify ]) require (require => File[ my_file ]) Dacă dorim reexecutarea comenzilor ce depind de o resursă la fiecare modificare vom folosi: notify în loc de before subscribe în loc de require SAISP Curs 10, Automatizarea scalabilă a sistemelor 27/38
Dependinte între resurse (2) 1 file { /etc/ssh/sshd config : 2 ensure => file, 3 mode => 600, 4 source => /root/examples/sshd config, 5 } 6 service { sshd : 7 ensure => running, 8 enable => true, 9 subscribe => File[ /etc/ssh/sshd config ], 10 } SAISP Curs 10, Automatizarea scalabilă a sistemelor 28/38
Outline Ce reprezintă o infrastructură? Administrarea unei infrastructuri Solutii de administrare centralizată Puppet Analiza comparativă a tool-urilor de administrarea centralizată Concluzii Întrebări SAISP Curs 10, Automatizarea scalabilă a sistemelor 29/38
Criterii de evaluare Footprint Scalabilitate Documentatie disponibilă Curba de învătare SAISP Curs 10, Automatizarea scalabilă a sistemelor 30/38
Footprint CFEngine low Puppet Ruby Chef Ruby + friends SAISP Curs 10, Automatizarea scalabilă a sistemelor 31/38
Scalabilitate CFEngine high Puppet tricky Chef yes SAISP Curs 10, Automatizarea scalabilă a sistemelor 32/38
Documentatie disponibilă CFEngine terrible Puppet excellent Chef ok SAISP Curs 10, Automatizarea scalabilă a sistemelor 33/38
Curba de învătare CFEngine painful Puppet gentle Chef moderate SAISP Curs 10, Automatizarea scalabilă a sistemelor 34/38
Outline Ce reprezintă o infrastructură? Administrarea unei infrastructuri Solutii de administrare centralizată Puppet Analiza comparativă a tool-urilor de administrarea centralizată Concluzii Întrebări SAISP Curs 10, Automatizarea scalabilă a sistemelor 35/38
Cuvinte cheie infrastructură virtualizare administrare centralizare informatii fisiere de configurare servicii de director scalabilitate SDN OpenFlow Openstack CFEngine Chef Puppet resursă manifest dependentă ensure require before SAISP Curs 10, Automatizarea scalabilă a sistemelor 36/38
Link-uri utile http://blog.afistfulofservers.net/post/2011/12/30/ cfengine-puppet-and-chef-part-1/ http://www.blogcompiler.com/2012/09/30/ scalability-of-cfengine-and-puppet-2/ http://bitfieldconsulting.com/puppet-vs-chef http://www.slideshare.net/mindbat/cfengine-vs-puppet-chef http://cfengine.com/what-is-cfengine http://puppetlabs.com/ http://www.getchef.com/chef/ http://probably.co.uk/puppet-vs-chef-vs-ansible.html http://en.wikipedia.org/wiki/software-defined_networking https://www.opennetworking.org/sdn-resources/sdn-definition http://en.wikipedia.org/wiki/openflow http://docs.vagrantup.com/v2/why-vagrant/index.html SAISP Curs 10, Automatizarea scalabilă a sistemelor 37/38
Outline Ce reprezintă o infrastructură? Administrarea unei infrastructuri Solutii de administrare centralizată Puppet Analiza comparativă a tool-urilor de administrarea centralizată Concluzii Întrebări SAISP Curs 10, Automatizarea scalabilă a sistemelor 38/38