Differences

This shows you the differences between two versions of the page.

Link to this comparison view

saisp:labs:10:contents:03 [2014/01/21 22:33]
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 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).
  
 +In aceste situatii, trebuie sa definim dependente intre resurse.
 +
 +=== Before / Require ===
 +
 +Modificam manifestul creat anterior astfel:
 +
 +<​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",​
 +  require => File['​my_file'​],​
 +}
 +</​code>​
 +
 +  * Resursa de tip ''​notify''​ defineste un mesaj ce va fi afisat in momentul cand declaratia sa este evaluata;
 +  * 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 de mai sus. Observati ordinea in care resursele sunt evaluate.
 +
 +O sintaxa echivalenta ar fi folosirea parametrului ''​before''​ in resursa **my_file**:​
 +
 +<​code>​
 +file {'​my_file':​
 +  path    => '/​tmp/​my_file',​
 +  ensure ​ => present,
 +  mode    => 0640,
 +  content => "File created using Puppet.",​
 +  before ​ => Notify['​my_notify'​],​
 +}
 +
 +notify {'​my_notify':​
 +  message => "File /​tmp/​my_file has been synced",​
 +}
 +</​code>​
 +
 +=== 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>​
saisp/labs/10/contents/03.1390336424.txt.gz ยท Last modified: 2014/01/21 22:33 by alexandru.carp
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0