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> | ||