This shows you the differences between two versions of the page.
saisp:labs:10:contents:03 [2014/01/24 15:04] alexandru.carp |
saisp:labs:10:contents:03 [2014/05/11 14:10] (current) alexandru.carp |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 03. Dependente intre resurse ==== | + | ==== 03. [20p] Dependente intre resurse ==== |
- | Un manifest Puppet poate contine declarari pentru mai mule resurse, insa ordinea in care sunt aplicate nu este bine definita. | + | Un manifest Puppet poate contine declarari pentru mai multe resurse, insa ordinea in care sunt aplicate nu este bine definita. |
Sunt cazuri in care trebuie sa ne asiguram ca o resursa este aplicata inaintea alteia (de exemplu, un pachet este instalat inaintea pornirii serviciului). | Sunt cazuri in care trebuie sa ne asiguram ca o resursa este aplicata inaintea alteia (de exemplu, un pachet este instalat inaintea pornirii serviciului). | ||
Line 7: | Line 7: | ||
In aceste situatii, trebuie sa definim dependente intre resurse. | In aceste situatii, trebuie sa definim dependente intre resurse. | ||
- | === (Tutorial) Before / Require === | + | === Before / Require === |
Modificam manifestul creat anterior astfel: | Modificam manifestul creat anterior astfel: | ||
Line 28: | Line 28: | ||
* Dependenta intre resurse este definita prin atributul ''require''. In cazul de fata, resursa **my_file** este evaluata inaintea resursei **my_notify**. | * Dependenta intre resurse este definita prin atributul ''require''. In cazul de fata, resursa **my_file** este evaluata inaintea resursei **my_notify**. | ||
- | Modificati fisierul **/tmp/my_file**, apoi aplicati manifestul. Observati ordinea in care resursele sunt evaluate. | + | Modificati fisierul **/tmp/my_file**, apoi aplicati manifestul de mai sus. Observati ordinea in care resursele sunt evaluate. |
O sintaxa echivalenta ar fi folosirea parametrului ''before'' in resursa **my_file**: | O sintaxa echivalenta ar fi folosirea parametrului ''before'' in resursa **my_file**: | ||
+ | <code> | ||
file {'my_file': | file {'my_file': | ||
path => '/tmp/my_file', | path => '/tmp/my_file', | ||
Line 45: | Line 46: | ||
</code> | </code> | ||
- | === (Tutorial) Notify / Subscribe === | + | === Notify / Subscribe === |
+ | Pentru unele resurse are sens actiunea de "refresh" (de exemplu, un serviciu care trebuie repornit). | ||
+ | |||
+ | Daca dorim ca, in plus fata de dependenta intre resurse, sa facem "refresh" pentru a doua resursa, cand prima resursa este modificata, trebuie: | ||
+ | * sa folosim **notify** in loc de **before**, sau | ||
+ | * sa folosim **subscribe** in loc de **require**. | ||
+ | |||
+ | Un exemplu ar fi repornirea serviciului SSH atunci cand fisierul sau de configurare este modificat: | ||
+ | |||
+ | <code> | ||
+ | file { '/etc/ssh/sshd_config': | ||
+ | ensure => file, | ||
+ | mode => 600, | ||
+ | source => '/root/examples/sshd_config', | ||
+ | } | ||
+ | service { 'sshd': | ||
+ | ensure => running, | ||
+ | enable => true, | ||
+ | subscribe => File['/etc/ssh/sshd_config'], | ||
+ | } | ||
+ | </code> | ||
+ | |||
+ | Creati un manifest cu codul de mai sus, apoi modificati fisierul **/etc/ssh/sshd_config** si aplicati manifestul. | ||
+ | |||
+ | === Sintaxa echivalenta === | ||
+ | |||
+ | In locul atributelor **before / require** sau **notify / subscribe** putem folosi operatorul ''->'', respectiv ''~>''. | ||
+ | |||
+ | Exemplu: | ||
+ | <code> | ||
+ | file {'my_file': | ||
+ | path => '/tmp/my_file', | ||
+ | ensure => present, | ||
+ | mode => 0640, | ||
+ | content => "File created using Puppet.", | ||
+ | } | ||
+ | -> | ||
+ | notify {'my_notify': | ||
+ | message => "File /tmp/my_file has been synced", | ||
+ | } | ||
+ | </code> |