This shows you the differences between two versions of the page.
saisp:labs:10:contents:04 [2013/11/11 00:46] 127.0.0.1 external edit |
saisp:labs:10:contents:04 [2014/05/11 14:10] (current) alexandru.carp |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 04. Lorem ipsum ==== | + | ==== 04. [20p] Design patterns ==== |
- | ... | + | === Package / File / Service === |
+ | In multe situatii, Puppet este folosit pentru a ne asigura ca un anumit serviciu de sistem este instalat, pornit si are configuratia corecta. | ||
+ | Implementarea se poate realiza folosind trei resurse: | ||
+ | * package | ||
+ | * file | ||
+ | * service | ||
+ | Intre primele doua avem o relatie de tip "before / require", iar intre ultimele doua o relatie de tip "notify / subscribe". | ||
+ | |||
+ | Creati urmatorul manifest care implementeaza acest design pattern pentru serviciul SSH, apoi aplicati manifestul. | ||
+ | |||
+ | <code> | ||
+ | package { 'openssh-server': | ||
+ | ensure => present, | ||
+ | } | ||
+ | -> | ||
+ | file { '/etc/ssh/sshd_config': | ||
+ | ensure => file, | ||
+ | mode => 600, | ||
+ | source => '/root/examples/sshd_config', | ||
+ | } | ||
+ | ~> | ||
+ | service { 'sshd': | ||
+ | ensure => running, | ||
+ | enable => true, | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Modificati diverse stari ale tripletului "package / file / service", apoi reaplicati manifestul. De exemplu: | ||
+ | * dezinstalati pachetul; | ||
+ | * modificati fisierul de configurare; | ||
+ | * opriti serviciul. | ||
+ | |||
+ | === Exercitiu - Apache === | ||
+ | |||
+ | Creati un manifest de tip "package / file / service" pentru serviciul Apache. | ||
+ | |||
+ | <note> | ||
+ | Fisierul de configurare trebuie sa aiba ca sursa o copie a fisierului actual. | ||
+ | </note> | ||
+ | |||
+ | <note> | ||
+ | In CentOS, pachetul pentrul serverul Apache se numeste **httpd**, iar fisierul de configurare se afla in **/etc/httpd/conf/httpd.conf** | ||
+ | </note> | ||
+ | |||
+ | <solution -hidden> | ||
+ | <code> | ||
+ | package {'httpd': | ||
+ | ensure => installed, | ||
+ | } | ||
+ | -> | ||
+ | file {'/etc/httpd/conf/httpd.conf': | ||
+ | ensure => file, | ||
+ | source => '/root/examples/answers/httpd.conf', | ||
+ | } | ||
+ | ~> | ||
+ | service {'httpd': | ||
+ | ensure => running, | ||
+ | } | ||
+ | </code> | ||
+ | </solution> |